Docker使用mysqldump工具对MySQL进行数据备份与恢复
环境说明
使用可视化客户端(Navicat Premium)等等进行数据库SQL导出会存在一些莫名其妙的问题(比如默认值被抹去),所以要通过MySQL自带的mysqldump工具进行数据的备份和恢复
- 操作系统:CentOS 7
- Docker版本:19.03.12
- MySQL版本:8.0.21
- 补充说明:示例中Docker启动的MySQL容器名字是mysql_test,密码是123456,数据库名是test,数据库test下面有表user
备份步骤
- 步骤一:
使用docker指令在当前目录下进行sql文件导出,下面罗列了几种场景:
备份指定数据库(所有表结构以及数据):docker exec -it mysql_test mysqldump -uroot -p123456 test > database_test.sql
备份指定数据库(指定表的表结构以及数据):docker exec -it mysql_test mysqldump -u root -p123456 test user > table_user.sql
备份指定数据库(仅备份所有表结构):docker exec -it mysql_test mysqldump -d -uroot -p123456 test > database_test.sql - 步骤二:
打开导出的sql文件,删除文件前面两行(因为执行指令的时候直接-p后面加了密码,mysqldump认为是不安全的,会报Warning),如下所示:
mysqldump: [Warning] World-writable config file '/etc/mysql/conf.d/docker.cnf' is ignored.
mysqldump: [Warning] Using a password on the command line interface can be insecure.
恢复步骤
- 步骤一:
将sql文件拷贝到容器中(这里复制到容器的/目录下):docker cp database_test.sql mysql_test:/database_test.sql - 步骤二:
指定编码进入容器内(否则会乱码):docker exec -it mysql_test env LANG=C.UTF-8 bash - 步骤三:
执行容器根目录下的database_test.sql文件(数据库test要确保已经创建):mysql -u root -p123456 -D test < /database_test.sql
相关文章
- 459元国产新科技尔英B760M主板酷睿I7-12700处理器降压幅度100%+
- 魔兽世界怀旧服:狂暴战整合WA,卡英勇WA
- 「图钉神机」放假了?那就配台电脑打游戏吧
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
- abee AS Enclosure W1机箱评测:复刻经典,简约又好用
- NZXT KRAKEN X53 RGB一体式水冷散热器评测:内外俱备的寒冰武士
- 8G显存是原罪,还是光追来背锅?RTX5060金属大师对比评测
- 订单爆满工人回流!韩国造船巨头产能利用率同比大增
- 技嘉AORUS WATERFORCE X 360水冷评测:兼顾冷与静,呈现力与美
- 精品博文ARM中打印函数print 的几种实现方法