docker下MySQL数据迁移

当我们要迁移Docker容器下的MySQL以及里面的数据库表数据的时候, 可以用到如下方案

1.进入源MySQL容器内, 进行sql导出

docker exec -it mysql bash

进入容器后, 使用mysqldump进行导出操作, 其中-p后面为数据库名称, 末尾为导出的sql文件名

mysqldump -u root -p wordpress > wordpress.sql

或者直接带上密码 (非自动化的情况下不是很推荐, 因为history里会暴露密码)

mysqldump -u root -p密码 wordpress > wordpress.sql # -p和密码之间没有空格

结果:

随后使用exit命令退出MySQL容器

然后要使用docker cp命令将sql文件导出docker容器外

其中mysql为容器名, :/后面为刚才导出的容器内的sql文件路径, /root/wordpress.sql为指定的容器外的宿主机的sql文件路径, 以达到将docker容器内的文件拷贝到宿主机的目的, 后续还要上传到新服务器使用

docker cp mysql:/wordpress.sql /root/wordpress.sql

2. 使用scp命令将sql文件上传到新服务器

scp /root/wordpress.sql root@新服务器的ip:/root

3. 在新服务器里建立一个MySQL容器

docker run -itd --name mysql --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 mysql

4. 将刚才传输过来的/root/wordpress.sql文件传输到该容器内

其中/root/wordpress.sql为刚才的传过来的sql文件路径, mysql:/wordpress.sql为容器内的sql文件路径

docker cp /root/wordpress.sql mysql:/wordpress.sql

5. 进入新服务器的mysql容器内

docker exec -it mysql bash

然后进入容器内的mysql命令行模式

mysql -root -p

输入刚才建立容器的时候设定的密码

进入mysql命令行模式后, 使用create命令创建相应的数据库, 其中wordpress为数据库名称, 注意末尾有分号

create database wordpress;

然后使用use命令选中该数据库

use wordpress

然后使用source命令将刚才拷贝进来的sql文件导入到数据库

source wordpress.sql

导入完成后使用exit退出即可

嫌麻烦的话直接用navicat, 新建一个同名的数据库并选中, 然后右键选择运行SQL, 然后选中对应的sql文件然后确定即可导入

发表回复