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容器中結束

 

Tags: