docker迁出mysql数据库
测试环境:
docker服务器 |
mysql服务器 |
|
IP |
192.168.163.19 |
192.168.163.16 |
操作系统 |
CentOS7.8 |
CentOS7.8 |
docker版本 |
Docker18.09.9 |
/ |
数据库版本 |
MySQL8.0.22 |
MySQL8.0.22 |
1.查看docker相关情况
[root@docker-test /data/mysql/data]$ docker ps
启动mysql并映射转储目录到本地服务器,当前情况只适用于没有建立mysql实例时,启动的时候映射目录,如果已经启动实例,就需要更改其他配置文件来完成转储
[root@docker-test ~]$ docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-test -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql
9b1cc179d909
2.选择指定导出的数据库进行mysqldump,指定到数据文件的目录下进行备份
root@9b1cc179d909:/# mysqldump -uroot -p hzh > /var/lib/mysql/hzh20210115.sql
Enter password:
3.本地映射的mysql目录中,查看/data/mysql/data服务器转储目录中已存在sql文件
4.将备份的sql文件传输到指定恢复的数据库中/data/mysql/db_hzh/data路径下
[root@docker-test /data/mysql/data]$ scp hzh20210115.sql root@192.168.163.16:/data/mysql/db_hzh/data
5.将指定文件授权并进行恢复
chown mysql:mysql /data/mysql/db_hzh/data/hzh20210115.sql
mysql> create database hzh;
Query OK, 1 row affected (1.00 sec)
mysql> use hzh;
Database changed
mysql> source /data/mysql/db_hzh/data/hzh20210115.sql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| hzh |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_20210110 |
| testabc |
+--------------------+
7 rows in set (0.00 sec)
mysql>
mysql>
mysql> use hzh;
Database changed
mysql> show tables;
+----------------+
| Tables_in_hzh |
+----------------+
| delivery_trade |
| test01 |
| test02 |
| test03 |
+----------------+
4 rows in set (0.00 sec)
mysql> select count(*) from test01;
+----------+
| count(*) |
+----------+
| 45 |
+----------+
1 row in set (0.02 sec)
6.至此恢复完成,主要步骤是将docker中的mysql数据目录转储映射到本地服务器目录
mysql迁移到docker中
1.将需要迁移的数据库进行备份
[mysql@localhost /usr/local/mysql/bin]$ ./mysqldump -uroot -p -S /data/mysql/db_hzh/mysql.sock --default-character-set=utf8 --set-gtid-purged=off --databases testabc test_20210110 > /usr/local/mysql/test_dump.20210115.sql
2.将备份文件传到docker服务器中
[mysql@localhost /usr/local/mysql]$ scp test_dump.20210115.sql root@192.168.163.19:/data/mysql/data
3.进入mysql进行数据备份恢复
mysql> create database test_20210110;
Query OK, 1 row affected (0.01 sec)
mysql> create database testabc;
Query OK, 1 row affected (0.00 sec)
mysql> source /var/lib/mysql/test_dump.20210115.sql
Query OK, 0 rows affected (0.00 sec)
至此mysql数据迁移docker容器中结束