Docker使用mysqldump工具对MySQL进行数据备份与恢复

Docker使用mysqldump工具对MySQL进行数据备份与恢复

编码文章call10242025-02-01 3:37:2412A+A-

环境说明

使用可视化客户端(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
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4