docker中mysql容器数据的备份(复制单个表)

Mysql在docker容器中运行时,生成的.sql文件不会直接存储到虚机中,而是bash中,这可能是困扰大家的地方。

搜了网上很多方法以及chatgpt的方法,要么比较难理解,要么指令不对。现通过不断尝试终于找到了最方便、易懂的方法。

大概分四步:1、在原mysql容器的bash内部中,生成.sql文件。2、将.sql文件从bash内部复制到虚机中。3、将虚机中的.sql文件复制到新mysql容器的bash中。4、进入新mysql将.sql导入成表格。

将原mysql容器的库dichub中的ces表→新的mysql容器的库dichub中(提前在新的mysql中建好dichub库):

1、在原mysql容器的bash内部中,生成.sql文件。

进入原mysql容器,docker exec -it mysql /bin/bash 进入bash

【mysql: 我的mysql容器名。】

bash中运行:mysqldump -u root -p dichub ces > backupfile.sql; 然后输密码

【root:用户名。 dichub:库名。 ces:表名。 backupfile.sql:导出的文件名。】

这样会在这个容器的bash中生成backupfile.sql文件,可以ls查看。

2、将.sql文件从bash内部复制到虚机中。

退出原mysql容器,到虚机外部。执行:

docker cp mysql:/backupfile.sql /root/mysql_data_copy/

【mysql:我的mysql容器名。/root/mysql_data_copy/:虚机上的文件夹】

刚才生成的backupfile.sql就可以用mysql:/backupfile.sql访问到。

3、将虚机中的.sql文件复制到新mysql容器的bash中。

docker cp mysql_data_copy/backupfile.sql mysql_backup:/backupfile.sql

【mysql_data_copy/backupfile.sql:虚机上.sql文件的路径。mysql_backup:新的mysql容器名,这个需要提前创建好】

由此一来,docker exec -it...进入新的mysql容器bash后,在bash中ls就能看到backupfile.sql文件。

4、进入新mysql容器将.sql导入成表格。

先docker exec -it...进入新的mysql容器bash,然后执行:

mysql -u root -p dichub< /backupfile.sql;

【dichub:新的mysql容器的库名,为了方便也叫dichub,需要提前建好。】

这样就把原mysql容器中dichub的ces表,迁移到新的mysql容器中dichub里了。

相关推荐
m_136874 分钟前
Mac Intel 芯片 Docker 一键部署 Neo4j 最新版本教程
macos·docker·neo4j
Lin_Aries_042123 分钟前
在 CentOS 9 上安装 Docker 的完整指南
linux·docker·centos
neo_Ggx2326 分钟前
MySQL数据库备份攻略:从Docker到本地部署
数据库·mysql·docker
武子康1 小时前
Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
java·大数据·数据库·分布式·sql·mysql·性能优化
脚大江山稳2 小时前
docker使用nginxWebUI配置
java·docker·容器
iiYcyk4 小时前
服务器线程高占用定位方法
容器
startdrift11064 小时前
docker run 命令,不接it选项,run一个centos没有显示在运行,而run一个nginx却可以呢?
nginx·docker·centos
问道飞鱼5 小时前
【数据库相关】TxSQL新增数据库节点步骤
数据库·mysql·txsql·新增节点
Ka1Yan5 小时前
MySQL索引优化
开发语言·数据结构·数据库·mysql·算法
程序猿 董班长8 小时前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql