mysql5.7定时备份,mysql5.7 备份,定时,docker

定时冷备份

脚本

mysql_user="root" #MySQL备份用户

mysql_password="123456" #MySQL备份用户的密码

#mysql_host="localhost"

#mysql_port="3306"

mysql_charset="utf8" #MySQL编码

backup_db_arr=("db1" "db2") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")

backup_location=/home/bak/mysqlbak #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹

expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭

expire_days=3 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效

backup_time=`date +%Y%m%d%H%M` #定义备份详细时间

backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间

backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期

backup_dir=$backup_location/$backup_Ymd #备份文件夹全路径

welcome_msg="Welcome to use MySQL backup tools!" #欢迎语

#dbnames=$(cut -d ',' -f1-5 $backup_database)

echo "arr is (${backup_db_arr[@]})"

for dbname in ${backup_db_arr[@]}

do

echo "database $dbname backup start..."

`mkdir -p $backup_dir`

`docker exec -it mysql mysqldump -u$mysql_user -p$mysql_password $dbname --default-character-set=$mysql_charset | gzip > $backup_dir/$dbname-$backup_time.sql.gz`

flag=`echo $?`

if [ $flag == "0" ];then

echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"

else

echo "database $dbname backup fail!"

fi

done

# 如果开启了删除过期备份,则进行删除操作

if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then

#`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`

`find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`

echo "Expired backup data delete complete!"

fi

echo "All database backup success! Thank you!"

exit

设置定时任务

## 进入定时任务设置

crontab -e

# 输入定时任务

# mysql back

0 3,13 * * /home/bin/mysql_bak.sh

0 3,13 * * 每天凌晨3点 下午1点执行一次命令

Docker使用mysqldump命令备份导出mysql容器中的数据

docker exec -it mysql01 mysqldump -uroot -proot demo > /home/bak/demo.sql

# 使用mysqldump只导出数据不导出表结构

docker exec -it mysql01 mysqldump --opt -t -uroot -proot demo > /home/bak/demo2.sql

# 使用mysqldump只导出表结构不导出数据

docker exec -it mysql01 mysqldump --opt -d -uroot -proot demo > /home/bak/demo1.sql

#使用mysqldump导出特定表的结构

docker exec -it mysql01 mysqldump -uroot -proot -B demo --table playmath_user > /home/bak/playmath_user.sql

# Docker执行导入(恢复)数据库命令:

docker exec -i mysql01 mysql -uroot -proot 库名 < /home/bak/playmath_sso.sql

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker环境下,可以使用定时任务和脚本来实现MySQL 5.7的自动备份。以下是一个示例: 1. 创建一个名为`backup.sh`的备份脚本,并将其保存在Docker容器中的任意位置,例如`/backup/backup.sh`。 ```shell #!/bin/bash # 备份文件保存路径 BACKUP_DIR="/backup" # MySQL连接信息 MYSQL_HOST="mysql" MYSQL_PORT="3306" MYSQL_USER="root" MYSQL_PASSWORD="password" MYSQL_DATABASE="database" # 备份文件名 BACKUP_FILE="${BACKUP_DIR}/backup_$(date +%Y%m%d%H%M%S).sql" # 执行备份命令 mysqldump -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DATABASE} > ${BACKUP_FILE} ``` 2. 在Dockerfile中添加以下内容,以将备份脚本复制到Docker容器中。 ```dockerfile COPY backup.sh /backup/backup.sh RUN chmod +x /backup/backup.sh ``` 3. 构建并运行MySQL 5.7Docker容器。 ```shell docker build -t mysql57 . docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57 ``` 4. 创建一个名为`crontab.txt`的定时任务文件,并将其保存在Docker容器中的任意位置,例如`/backup/crontab.txt`。 ```shell # 每天凌晨3点执行备份任务 0 3 * * * /backup/backup.sh ``` 5. 在Dockerfile中添加以下内容,以将定时任务文件复制到Docker容器中,并安装cron。 ```dockerfile COPY crontab.txt /backup/crontab.txt RUN crontab /backup/crontab.txt RUN apt-get update && apt-get -y install cron ``` 6. 重新构建并运行MySQL 5.7Docker容器。 ```shell docker build -t mysql57 . docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql57 ``` 现在,MySQL 5.7Docker容器将在每天凌晨3点自动执行备份任务,并将备份文件保存在容器中的`/backup`目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值