centos7中docker的Mysql如何备份数

type
status
date
slug
summary
tags
category
icon
password
类别
内容

备份

常规备份

  1. 查看Mysql容器是否启动
notion image
  1. 进入容器中,进行数据备份
💡
这里是对每个部分的解释:
  • uroot:指定 MySQL 用户名为 root
  • p123456:指定 MySQL 用户的密码为 123456
  • your_database:要备份的特定数据库名称(替换为你需要的数据库名称)。
  • date +%F_%H-%M-%Sdate 命令格式化日期和时间,%F 代表日期(YYYY-MM-DD),%H-%M-%S 代表时间(HH-MM-SS
notion image
时间点有问题
时间点对不上,可能是因为你的容器内的时区与主机的时区不一致。默认情况下,许多容器的时区是 UTC,而你的主机可能在不同的时区(如 UTC+8)。要解决这个问题,可以在容器中设置正确的时区。

设置容器的时区

以下是设置容器时区的步骤:
  1. 进入容器
    1. 安装 tzdata
      1. 配置时区: 以设置时区为 Asia/Shanghai 为例:
        1. 验证:
          1. 可以通过以下命令验证时区设置是否正确:
            这个命令应该输出正确的本地时间。如果时间仍然不正确,请检查容器的时区配置和主机的时区是否一致。

        重新运行备份命令

        在正确设置时区后,重新运行你的备份命令:
        这样,生成的文件名将会包含正确的本地时间。
         
        1. 将容器中的备份文件,复制到本地备份文件夹中
        notion image
        notion image

        一步到位

        notion image
        notion image

        还原

        定时备份

        这段代码设置了一个定时任务,用于每天凌晨 2 点在 Docker 容器中执行 MySQL 数据库备份,并删除超过一天的旧备份文件。以下是对该代码的详细解释:

        定时任务语法(crontab)

        时间表达式:0 22 * * *

        • 0:分钟(表示任务在第 0 分钟运行,即整点)。
        • 22:小时(表示任务在凌晨 2 点运行)。
        • :日期(每天)。
        • :月份(每月)。
        • :星期(每周的每天)。
        这个时间表达式表示任务将在每天晚上10 点执行。

        命令执行顺序

        1. 清理旧备份文件

        • find /mysql_backup/:在 /mysql_backup/ 目录中查找文件。
        • mtime +1:查找修改时间超过一天(1 天以上)的文件。
        • name "*.sql":查找扩展名为 .sql 的文件。
        • delete:删除符合上述条件的文件。
        这部分命令将清理 /mysql_backup/ 目录下超过一天的 .sql 文件。

        2. 执行数据库备份

        • sudo:以超级用户权限执行命令。
        • docker exec mysql-test:在名为 mysql-test 的 Docker 容器中执行后续命令。
        • sh -c 'exec mysqldump --all-databases -uroot -p123456':在容器中使用 sh 解释器执行 mysqldump 命令。
          • exec mysqldump --all-databases -uroot -p123456:使用 mysqldump 工具备份所有数据库。
          • uroot:指定 MySQL 用户名为 root
          • p123456:指定 MySQL 密码为 123456
        • > /var/mysql_backup/date +%F_%H-%M-%S.sql:将备份结果重定向输出到 /var/mysql_backup/ 目录下的一个文件中,文件名格式为 YYYY-MM-DD_HH-MM-SS.sql(包含当前日期和时间)。
        notion image
        centos7从零使用Docker安装mysql偌依使用———项目搭建