翼度科技»论坛 编程开发 mysql 查看内容

mysql增量备份脚本

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
2、增量备份

2.1、添加备份脚本
  1. [root@localhost]# vim /mnt/data/backup/mysql/mysql_m_bak_diff.sh<br>
复制代码
  1. #!/bin/bash
  2. #mysql 增量备份
  3. time=`date +%Y%m%d`
  4. now=`date +%F' '%T`
  5. etime=`date -d '-7 day' +%Y%m%d`
  6. #备份文件路径
  7. mkdir -p /mnt/data/backup/mysql/diff_back/$time
  8. mkdir -p /mnt/data/backup/mysql/diff_back/$time/log
  9. backupdir="/mnt/data/backup/mysql/diff_back/$time"
  10. log_dir="/mnt/data/backup/mysql/diff_back/$time/log"
  11. #bin-log日志文件路径
  12. BinFile="/mnt/data/mysql/logs/"
  13. user=root
  14. passwd=123456echo "$now 重新生成binlog日志" >> $log_dir/$time.log
  15. /mnt/data/mysql/bin/mysqladmin -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock flush-logs
  16. if [ $? -eq 0 ];then
  17.     echo "$now binlog日志重新生成成功" >> $log_dir/$time.log
  18.     echo "$now Begin backup mysql database" >> $log_dir/$time.log
  19.     #查找binlog日志
  20.     new_blog=`/mnt/data/mysql/bin/mysql -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock -e "show master status\G" |grep 'File'|awk '{print $2}'`
  21.     num=`/mnt/data/mysql/bin/mysql -P3308 -u$user -p$passwd --socket=/mnt/data/mysql/mysql.sock -e "show master status\G" |grep 'File'|awk '{print $2}'|awk -F '.' '{print $2}'`
  22.     next_num=`expr $num - 1`
  23.     old_blog=`find $BinFile -name "mysql-bin.*$next_num"`
  24.     #备份文件
  25.     \cp  $old_blog $backupdir/
  26.     old_blog_n=`find $backupdir -name "mysql-bin.*$next_num"`
  27.     mv $old_blog_n $backupdir/master_bak_$time.sql
  28.         if [ $? -eq 0 ];then
  29.             echo "$now mysql copy successfully " >> $log_dir/$time.log
  30.             echo "$now 开始执行压缩......" >> $log_dir/$time.log
  31.             tar -zcvf $backupdir/master_bak_$time.tar.gz -C  $backupdir master_bak_$time.sql
  32.             if [ $? -eq 0 ];then
  33.                 echo  "$now 文件压缩成功......" >> $log_dir/$time.log
  34.                 rm -rf $backupdir/master_bak_$time.sql
  35.                 size=`du -sh $backupdir/master_bak_$time.tar.gz |awk '{print $1}'`
  36.                 echo "$now backup mysql database successfully completed" >> $log_dir/$time.log
  37.                 echo "$now deploy-主数据库数据备份成功——增量备份,文件大小为:$size\n 二进制文件为: $old_blog_n" > /tmp/tmp.log
  38.                 rm -rf /tmp/tmp.log
  39.             else
  40.                 echo  "$now 文件压缩失败......" >> $log_dir/$time.log
  41.                 echo "$now deploy-主数据库数据备份成功__增量备份,但文件压缩失败,\n 二进制文件为: $old_blog_n " > /tmp/tmp.log
  42.                 rm -rf /tmp/tmp.log
  43.             fi
  44.         else
  45.             echo "$now backup mysql database faild" >> $log_dir/$time.log
  46.             echo "$now deploy-主数据库数据备份失败——增量备份,请检查mysql是否正常" > /tmp/tmp.log
  47.             rm -rf /tmp/tmp.log
  48.         fi
  49. else
  50.     echo "$now binlog日志重新生成失败" >> $log_dir/$time.log
  51.     echo "$now deploy-主数据库数据备份失败__差量备份,刷新binlog日志失败" > /tmp/tmp.log
  52.     rm -rf /tmp/tmp.log
  53. fi
复制代码
2.2、添加执行权限
  1. [root@localhost ~]# chmod +x /mnt/data/backup/mysql/mysql_m_bak_diff.sh
复制代码
2.3、添加计划任务
  1. [root@localhost ~]# crontab -e   #添加内容,每天2点执行<br>0 2 * * * sh /mnt/data/backup/mysql/mysql_m_bak_diff.sh<br>​<br>#wq保存退出
复制代码
2.4、手动备份
  1. [root@localhost ~]# sh /mnt/data/backup/mysql/mysql_m_bak_diff.sh<br>mysqladmin: [Warning] Using a password on the command line interface can be insecure.<br>mysql: [Warning] Using a password on the command line interface can be insecure.<br>mysql: [Warning] Using a password on the command line interface can be insecure.<br>master_bak_20230223.sql
复制代码
2.5、查看备份文件
  1. [root@localhost ~]# ll -h /mnt/data/backup/mysql/diff_back/20230223/<br>总用量 120K<br>drwxr-xr-x. 2 root root   26 2月  23 14:22 log<br>-rw-r--r--. 1 root root 119K 2月  23 14:40 master_bak_20230223.tar.gz<br>[root@ops deploy]# cat /mnt/data/backup/mysql/diff_back/20230223/log/20230223.log<br>2023-02-23 14:40:07 重新生成binlog日志<br>2023-02-23 14:40:07 binlog日志重新生成成功<br>2023-02-23 14:40:07 Begin backup mysql database<br>2023-02-23 14:40:07 mysql copy successfully <br>2023-02-23 14:40:07 开始执行压缩......<br>2023-02-23 14:40:07 文件压缩成功......<br>2023-02-23 14:40:07 backup mysql database successfully completed
复制代码
2.6、增量数据恢复
  1. [root@localhost ~]# mysqlbinlog --no-defaults --start-datetime="2022-10-31 17:53:00" --stop-datetime="2022-11-01 16:18:00" --database=dbname   mysql-bin.000073 | mysql -uroot -p123456     #指定时间段,指定库进行恢复
复制代码
来源:https://www.cnblogs.com/xgsh/p/17153883.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具