docker遷入遷出mysql
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 [email protected]:/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 [email protected]:/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容器中結束