Run multiple version of MySQL container
on the same virtual host:
Find out the
tag for MySQL version:
Visit https://hub.docker.com/r/mysql/mysql-server/
and find out the tag for appropriate
version
For example for
MySQL release 8, tags are - 8.0.18, 8.0, 8, latest
MySQL release
5.7, tags are - 5.7.28, 5.7, 5
MySQL release
5.6, tags are - 5.6.46, 5.6
Pull the image
from Docker Hub:
For MySQL 8.0.16 Community edition Docker image
execute following command
# docker pull
mysql/mysql-server:8.0.16
For MySQL 5.7 Community edition Docker image
execute following command
# docker pull
mysql/mysql-server:5.7.25
For MySQL
latest:
# docker pull
mysql/mysql-server:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql/mysql-server 8.0.16 39649194a7e7 8 months ago 289MB
mysql/mysql-server 5.7.25 0dc21157ff24 10 months ago 244MB
mysql/mysql-server 8.0.18 b172b40598f0 2 months ago 350MB mysql/mysql-server latest b172b40598f0 2 months ago 350MB
mysql/mysql-server 5.7.25 0dc21157ff24 10 months ago 244MB
mysql/mysql-server 8.0.18 b172b40598f0 2 months ago 350MB mysql/mysql-server latest b172b40598f0 2 months ago 350MB
Run Docker container for MySQL 5.7.25:
# docker run
--name=mysql_5.7.25 -d
mysql/mysql-server:5.7.25
Run Docker container for MySQL 8.0.18:
# docker run
--name=mysql_8.0.18_1 -d
mysql/mysql-server:8.0.18
CONTAINER
ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf087eca6842 mysql/mysql-server:5.7.25 "/entrypoint.sh mysq…" 3 seconds ago Up 3 seconds (health: starting) 3306/tcp, 33060/tcp mysql_5.7.25
370f5c56cd1a mysql/mysql-server:8.0.18 "/entrypoint.sh mysq…" 3 seconds ago Up 3 seconds (health: starting) 3306/tcp, 33060/tcp mysql_8.0.18_1
Common commands use for MySQL running in
container
Find Docker
Version:
# docker –v
# docker –v
Get root password
generated:
# docker logs <container_name> 2>&1 | grep
GENERATED
# docker logs mysql_2 2>&1 | grep GENERATED
List Docker
Container:
# docker ps –a
# docker ps –a
Fetch MySQL logs:
# docker logs <container_name> 2>&1 | grep GENERATED
# docker logs <container_name> 2>&1 | grep GENERATED
Connect MySQL:
#docker exec -it <container_name> mysql -uroot -p
#docker exec -it <container_name> mysql -uroot -p
Connect MySQL file
system in Docker:
#docker exec -it <container_name> bash
#docker exec -it <container_name> bash
Backup MySQL
databases using mysqldump:
# docker exec [MYSQL_CONTAINER] /usr/bin/mysqldump \
-u [MYSQL_USER] --password=[MYSQL_PASSWORD] \
--all-databases > backup.sql
# docker exec [MYSQL_CONTAINER] /usr/bin/mysqldump \
-u [MYSQL_USER] --password=[MYSQL_PASSWORD] \
--all-databases > backup.sql
Restore MySQL
databases:
# cat backup.sql | docker exec -i [MYSQL_CONTAINER] /usr/bin/mysql -u [MYSQL_USER] --password=[MYSQL_PASSWORD] [MYSQL_DATABASE]
# cat backup.sql | docker exec -i [MYSQL_CONTAINER] /usr/bin/mysql -u [MYSQL_USER] --password=[MYSQL_PASSWORD] [MYSQL_DATABASE]
Note: Percona
xtrabackup is supported only for Percona Xtrabackup image.
Running multiple versions of MySQL containers on the same virtual host can optimize resource usage and simplify testing. Check out Skynode for tips on setting this up seamlessly!
ReplyDelete