常规备份
执行编辑脚本 bash vim /opt/script/mysqlbak.sh
输入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #!/bin/bash bak_date=`date +%Y%m%d` log_date=`date +'%Y年%m月%d日%k时%M分%S秒'`
mkdir -p /opt/mysql_bak/log /opt/mysql_bak/bak
echo "$log_date: 开始备份..." >> /opt/mysql_bak/log/mysqlbak.log echo "$log_date: 正在生成备份文件.sql..." >> /opt/mysql_bak/log/mysqlbak.log
mysqldump -u{用户名} -p{密码} --all-databases > /opt/mysql_bak/bak/mysqlbak.sql size=`ls -l /opt/mysql_bak/bak/ | grep mysqlbak.sql | awk '{print int($5)}'`
m_bak_size=100000 m_tar_size=10 if [ "$size" -gt "$m_bak_size" ]; then
echo "$log_date: 备份文件生成成功!" >> /opt/mysql_bak/log/mysqlbak.log echo "$log_date: 正在生成打包文件..." >> /opt/mysql_bak/log/mysqlbak.log cd /opt/mysql_bak/bak/ tar -zcf mysqlbak$bak_date.tar.gz mysqlbak.sql tar_size=`ls -l /opt/mysql_bak/bak/ | grep mysqlbak$bak_date.tar.gz | awk '{print int($5)}'` if [ "$tar_size" -gt "$m_tar_size" ]; then rm -rf /opt/mysql_bak/bak/mysqlbak.sql tar_status='已经完成备份!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log else tar_status='备份打包失败!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log fi else tar_status='备份生成失败!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log fi
find /opt/mysql_bak/bak/ -mtime "+180" -exec rm -f {} \;
|
利用docker备份
执行编辑脚本 bash vim /opt/script/mysqlbak_docker.sh
输入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #!/bin/bash bak_date=`date +%Y%m%d` log_date=`date +'%Y年%m月%d日%k时%M分%S秒'`
mkdir -p /opt/mysql_bak/log /opt/mysql_bak/bak
echo "$log_date: 开始备份..." >> /opt/mysql_bak/log/mysqlbak.log echo "$log_date: 正在生成备份文件.sql..." >> /opt/mysql_bak/log/mysqlbak.log
docker exec {容器名称或容器ID} mysqldump -u{用户名} -p{密码} --all-databases > /opt/mysql_bak/bak/mysqlbak.sql size=`ls -l /opt/mysql_bak/bak/ | grep mysqlbak.sql | awk '{print int($5)}'`
m_bak_size=100000 m_tar_size=10 if [ "$size" -gt "$m_bak_size" ]; then
echo "$log_date: 备份文件生成成功!" >> /opt/mysql_bak/log/mysqlbak.log echo "$log_date: 正在生成打包文件..." >> /opt/mysql_bak/log/mysqlbak.log cd /opt/mysql_bak/bak/ tar -zcf mysqlbak$bak_date.tar.gz mysqlbak.sql tar_size=`ls -l /opt/mysql_bak/bak/ | grep mysqlbak$bak_date.tar.gz | awk '{print int($5)}'` if [ "$tar_size" -gt "$m_tar_size" ]; then rm -rf /opt/mysql_bak/bak/mysqlbak.sql tar_status='已经完成备份!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log else tar_status='备份打包失败!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log fi else tar_status='备份生成失败!' echo "$log_date: $tar_status" >> /opt/mysql_bak/log/mysqlbak.log fi
find /opt/mysql_bak/bak/ -mtime "+180" -exec rm -f {} \;
|
利用操作系统的crontab进行定时备份
1 2
| 0 1 * * * bash /opt/script/{备份脚本文件名}
|