当我们要迁移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文件然后确定即可导入