程序员开发实例大全宝库

网站首页 > 编程文章 正文

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

zazugpt 2024-09-07 21:39:34 编程文章 25 ℃ 0 评论

环境说明

使用可视化客户端(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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表