前言
相信大家一定遇到过需要在生产环境备份用户的mysql数据,以便满足数据的存储、迁移等操作。下面我将介绍我是如何操作的。
满足每天定期备份,备份文件的有效期是7天,备份数据为:患者信息、用户信息
环境:linux Ubuntu docker mysql
废话不多说,下面 show you the code
其中a.sh 的脚本内容如下:
-
cd /opt/ring/package/script/mysql
-
创建 backup_mysql.sh 脚本内容如下:
#!/usr/bin/env bash #back mysql echo "begin mysql backup" sudo docker exec ring‐mysql /var/lib/mysql/backup.sh
-
将 a.sh 备份mysql数据库文件的脚本复制到mysql容器内:
docker cp a.sh ring‐mysql:/var/lib/mysql/backup.sh
-
进入mysql容器的 /var/lib/mysql/ 位置:
chmod 755 backup.sh
其中a.sh 的脚本内容如下:#!/bin/bash #容器ID container_id="3b4482df9ecd" #登录用户名 mysql_user="root" #登录密码(注意 如果密码包含特殊符号 前面要用'\') mysql_password="1qaz2wsx" mysql_port="3306" #备份的数据库名 mysql_database="rings" #备份的表名 mysql_table1="t_patient" mysql_table2="t_user" # 备份文件存放地址(根据实际情况填写) backup_dir="/var/lib/mysql/backup_mysql/${backup_time}" # 备份文件存放目录创建 mkdir -p ${backup_dir} # 是否删除过期数据 expire_backup_delete="true" #过期天数 expire_days=3 backup_time=`date +%Y%m%d%H%M` # 备份指定数据库中数据 docker exec $container_id mysqldump -P$mysql_port -u$mysql_user -p$mysql_password $mysql_database $mysql_table1 $mysql_table2> $backup_dir/$backup_time.sql # 删除过期数据 if [ "$expire_backup_delete" == "true" -a "$backup_dir"!="" ]; then `find $backup_dir/ -type f -mtime +$expire_days | xargs rm -rf` echo "Expired backup data delete complete!" fi
-
在服务器创建对应的定时任务:
crontab ‐e
#每天0点定时执行备份mysql数据库文件 0 0 * * * sh /opt/ring/package/script/mysql/backup_mysql.sh
- 重启 cron 服务:
sudo service cron restart
使用以下脚本查看定时任务执行情况:
cat /var/log/cron.log
最后在容器内:/var/lib/mysql/backup_mysql的位置会生成包含患者信息、用户信息的数据
没有回复内容