对docker运行的mysql进行定时备份

在 Docker 运行的 MySQL 中,可以通过编写一个定时备份脚本并使用 cron 定时任务来实现定时备份。以下是具体步骤:

1. 创建备份脚本

#!/bin/bash

# 定义备份目录
BACKUP_DIR="/path/to/backup"  # 替换成你想要的备份目录
DATE=$(date +"%Y%m%d%H%M")
CONTAINER_NAME="your_mysql_container_name"  # 替换成你的 MySQL 容器名称
MYSQL_USER="your_mysql_user"  # 替换成你的 MySQL 用户名
MYSQL_PASSWORD="your_mysql_password"  # 替换成你的 MySQL 密码
DATABASE="your_database_name"  # 替换成你要备份的数据库名称

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 运行备份命令
docker exec "$CONTAINER_NAME" /usr/bin/mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" 
 --quick --single-transaction "$DATABASE" > "$BACKUP_DIR/${DATABASE}_${DATE}.sql"

# 删除超过30天的备份文件(可选)
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +30 -exec rm {} \;

1、替换相应的变量值,以确保脚本可以连接到正确的 MySQL 容器。

2、使用 --single-transaction 选项:对于 InnoDB 表,可以使用 --single-transaction,这会在一个事务内导出数据,不需要锁表,减少对业务的影响
3、使用 --quick 选项:加上 --quick 参数,使 mysqldump 从服务器一行一行读取数据,减少内存使用。该参数通常默认启用,但在数据量大时显得尤为重要。

2. 为脚本添加执行权限

运行以下命令来添加执行权限:

chmod +x mysql_backup.sh

3. 设置定时任务

在主机上编辑 cron 任务,通过 crontab -e 添加以下内容,设置备份频率:

0 2 * * * /path/to/mysql_backup.sh

以上示例表示每天凌晨 2 点执行备份。

4. 验证备份是否成功

执行`mysql_backup.sh`  脚本,查看备份文件是否生成在指定目录中。

你可能感兴趣的:(docker,数据库,mysql,docker,mysql,容器)