• xtrabackup备份 脚本


    1、全量备份在周末晚上22点执行备份,增量是周一到周五晚上22点执行

     2、考虑到增量备份第一次是根据全量备份开始备份,后面都是根据上一次增量备份在增量脚本做了if判断,周日做一次目录清理

    3、每周日晚上91点50清理目录 22点就在次备份,增量备份在周一会根据最新的周日备份进行增量备份,

    4、打包备份目录可以按月来清理

    full_mysqlback全量备份数据包 full_inc_mysqlback是第一次根据全量数据做的增倍数据包

    inc_mysqlback 是每吃一次增倍的数据包

    0 22 * * 0 sh /root/full.sh
    0 22 * * 1-5 sh /root/inc.sh
    50 21 * * 0 rm -rf /back/back_full/*
    50 21 * * 0 rm -rf /back/back_inc/*
    50 21 * * 0 rm -rf /opt/full_inc_mysqlbackup/*
    50 21 * * 0 rm -rf /opt/full_mysqlbackup/*
    50 21 * * 0 rm -rf /opt/inc_mysqlbackup/* 

    全量备份脚本

    1. [root@cloudserver src]# pwd
    2. /opt/src
    3. [root@cloudserver src]# cat /root/full.sh
    4. #!/bin/bash
    5. #远程备份IP地址
    6. back_ip="192.168.40.112"
    7. #主机ip
    8. #数据库信息
    9. mysql_data_dir="/usr/local/mysql/data"
    10. mysql_user="back"
    11. mysql_password="123456"
    12. mysql_host="192.168.40.66"
    13. mysql_port=3306
    14. #定义备份目录
    15. backup_dir="/backup/back_full"
    16. echo "执行全量备份..."
    17. # 获取当前时间戳
    18. timestamp=$(date +'%Y%m%d%H%M%S')
    19. back_dir="${backup_dir}/${timestamp}"
    20. # 创建备份目录
    21. mkdir -p "$back_dir"
    22. #获取最新的全量备份目录
    23. new_backup_dir=$(ls -1t "$backup_dir" | head -1)
    24. #全量备份目录
    25. full_dir="${backup_dir}/${new_backup_dir}"
    26. #本地打包备份目录
    27. tar_backup="/opt/full_mysqlbackup"
    28. mkdir -p $tar_backup
    29. # 执行全量备份
    30. xtrabackup --backup --target-dir="${back_dir}" --user="$mysql_user" --password="$mysql_password" --host="$mysql_host" --port="$mysql_port"
    31. echo "压缩最新的全量备份..."
    32. cd $full_dir
    33. tar -cvf "${tar_backup}/${timestamp}.tar.gz" $full_dir
    34. scp ${tar_backup}/${timestamp}.tar.gz $back_ip:$tar_backup

    增量备份脚本

    1. [root@cloudserver src]# cat /root/full.sh
    2. #!/bin/bash
    3. #远程备份IP地址
    4. back_ip="192.168.40.112"
    5. #主机ip
    6. #数据库信息
    7. mysql_data_dir="/usr/local/mysql/data"
    8. mysql_user="back"
    9. mysql_password="123456"
    10. mysql_host="192.168.40.66"
    11. mysql_port=3306
    12. #定义备份目录
    13. backup_dir="/backup/back_full"
    14. echo "执行全量备份..."
    15. # 获取当前时间戳
    16. timestamp=$(date +'%Y%m%d%H%M%S')
    17. back_dir="${backup_dir}/${timestamp}"
    18. # 创建备份目录
    19. mkdir -p "$back_dir"
    20. #获取最新的全量备份目录
    21. new_backup_dir=$(ls -1t "$backup_dir" | head -1)
    22. #全量备份目录
    23. full_dir="${backup_dir}/${new_backup_dir}"
    24. #本地打包备份目录
    25. tar_backup="/opt/full_mysqlbackup"
    26. mkdir -p $tar_backup
    27. # 执行全量备份
    28. xtrabackup --backup --target-dir="${back_dir}" --user="$mysql_user" --password="$mysql_password" --host="$mysql_host" --port="$mysql_port"
    29. echo "压缩最新的全量备份..."
    30. cd $full_dir
    31. tar -cvf "${tar_backup}/${timestamp}.tar.gz" $full_dir
    32. scp ${tar_backup}/${timestamp}.tar.gz $back_ip:$tar_backup
    33. [root@cloudserver src]# cat /root/inc.sh
    34. #!/bin/bash
    35. # 远程备份IP地址
    36. back_ip="192.168.40.112"
    37. # 数据库信息
    38. mysql_user="back"
    39. mysql_password="123456"
    40. mysql_host="192.168.40.66"
    41. mysql_port=3306
    42. # 定义增量备份目录
    43. backup_dir="/backup/back_inc"
    44. # 获取上一次的增量备份目录
    45. last_backup_dir=$(ls -1t "$backup_dir" | head -1)
    46. # 如果没有上一次的增量备份目录,那么使用最新的全量备份目录
    47. if [ -z "$last_backup_dir" ]; then
    48. full_back_dir="/backup/back_full/"
    49. last_backup_dir=$(ls -1t "$full_back_dir" | head -1)
    50. backup_type="full_inc"
    51. else
    52. backup_type="inc"
    53. fi
    54. # 获取当前时间戳
    55. timestamp=$(date +'%Y%m%d%H%M%S')
    56. back_dir="${backup_dir}/${timestamp}"
    57. # 创建增量备份目录
    58. mkdir -p "$back_dir"
    59. # 本地打包备份目录
    60. tar_backup="/opt/${backup_type}_mysqlbackup"
    61. mkdir -p "$tar_backup"
    62. # 根据备份类型设置备份目录
    63. if [ "$backup_type" = "full_inc" ]; then
    64. backup_basedir="$full_back_dir"
    65. else
    66. backup_basedir="$backup_dir"
    67. fi
    68. # 执行增量备份
    69. xtrabackup --backup --target-dir="${back_dir}" --user="$mysql_user" --password="$mysql_password" --host="$mysql_host" --port="$mysql_port" --incremental-basedir="${backup_basedir}/${last_backup_dir}"
    70. echo "压缩最新的${backup_type}备份..."
    71. cd $back_dir
    72. tar -cvf "${tar_backup}/${timestamp}.tar.gz" $back_dir
    73. scp ${tar_backup}/${timestamp}.tar.gz $back_ip:$tar_backup

    定时任务 

    全量恢复

    全量、增量恢复

  • 相关阅读:
    【flutter】加载指示器(loading indicator)阻止用户在某个操作执行期间操作页面
    Vue单文件组件(SFC)规范
    Redis之五大基础数据结构深入、应用场景
    区块链论文最新录用A会-ISSTA 2024 共8篇
    数据结构_红黑树
    flinksql BUG : flink hologres-cdc source FINISHED
    pg 函数匹配规则
    Semantic Kernel 学习笔记1
    面试题:Kafka中Controller的作用是什么?选举流程是怎样的?以及如何避免脑裂问题?
    Acwing 287. 积蓄程度
  • 原文地址:https://blog.csdn.net/m0_52454621/article/details/133879840