全量备份(Full Backup)的优势:
- 数据恢复速度快:全量备份包含了所有数据的副本,因此在恢复时,只需还原一次备份即可恢复所有数据。
- 完整性高:全量备份包含了所有数据,无需其他备份文件的支持,可以独立进行数据恢复。
- 简单易用:备份和恢复过程相对简单,不需要处理多个备份集或依赖增量备份链。
增量备份(Incremental Backup)的优势:
- 节省存储空间:增量备份只备份自上次备份以来发生更改的新数据,因此相比全量备份,它们所需的存储空间较少。
- 减少备份时间:由于增量备份只备份变化的部分数据,所以备份时间更短。
- 灵活性强:增量备份基于前一次备份,并记录了自上次备份以来的所有更改,可以根据需要选择特定的备份点进行恢复。
我们一般在使用时会选择将二者联合起来使用这样的话会使我们的备份策略更加的完善也更加的安全
-
数据完整性和灵活性:全量备份保证了数据的完整性,而增量备份记录了数据的变化。结合使用可以确保数据的完整性,同时还能根据需要选择特定的备份点进行恢复。全量备份提供了基础备份,而增量备份提供了补充备份,使得恢复更加灵活。
-
存储空间和成本效益:全量备份占用较多的存储空间,而增量备份只备份变化的部分数据,因此占用的存储空间较少。通过结合使用两者,可以节省存储空间和降低备份成本,尤其当数据量庞大时,这一优势将更加明显。
-
备份效率:全量备份和增量备份各自有不同的备份时间。全量备份需要备份整个数据集,耗时较长,而增量备份只备份变化的部分数据,备份时间更短。结合使用可以提高备份效率,减少备份所需的时间。
-
数据恢复速度:全量备份包含了所有数据的副本,因此在恢复时速度较快。增量备份基于前一次备份,并记录了自上次备份以来的所有更改,可以选择特定的备份点进行恢复。结合使用可以提供较快的数据恢复速度,同时还具备选择性恢复的能力。
脚本的内容解释:
#!/bin/bash
这是脚本的 shebang,指定了脚本使用的解释器。
backup_dir="/opt/backup" mysql_user="root" mysql_password="1" mysql_database="one"
这些是脚本中用到的变量。backup_dir 表示备份文件存放的目录,mysql_user 是 MySQL 数据库的用户名,mysql_password 是该用户的密码,mysql_database 是要备份的数据库名。
weekday=$(date +'%u')
这一行将当前日期的星期几保存到 weekday 变量中。date +'%u' 返回的值是 1(表示星期一)到 7(表示星期日)之间的数字。
if [ "$weekday" -eq 7 ]; then
这是一个条件语句,判断当前是否是星期日。
backup_file="$backup_dir/QL.dir/full_backup_$(date +'%Y%m%d').sql" mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --routines --triggers --events --add-drop-database --add-drop-table "$mysql_database" > "$backup_file"
如果当前是星期日,就执行上述代码块。首先,将备份文件的路径保存在 backup_file 变量中。然后,使用 mysqldump 命令对指定的 MySQL 数据库进行备份,并将备份结果输出到指定的文件中。
else
如果当前不是星期日,就执行下面的代码块。
backup_file="$backup_dir/ZL.dir/INcmt_backup_$(date +'%Y%m%d').sql" mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --no-create-info --skip-comments --skip-extended-insert "$mysql_database" > "$backup_file"
这里使用了不同的备份文件路径和 mysqldump 命令的选项。在非星期日的情况下,使用 --no-create-info、--skip-comments 和 --skip-extended-insert 选项对数据库进行增量备份。
fi
条件语句结束。
gzip "$backup_file"
最后一行用于对备份文件进行压缩,使用 gzip 命令将文件压缩成 .gz 格式。
脚本:
#!/bin/bash
backup_dir="/opt/backup"
mysql_user="root"
mysql_password="1"
mysql_database="one"
weekday=$(date +'%u')
if [ "$weekday" -eq 7 ]; then
backup_file="$backup_dir/QL.dir/full_backup_$(date +'%Y%m%d').sql"
mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --routines --triggers --events --add-drop-database --add-drop-table "$mysql_database" > "$backup_file"
else
backup_file="$backup_dir/ZL.dir/INcmt_backup_$(date +'%Y%m%d').sql"
mysqldump --user="$mysql_user" --password="$mysql_password" --single-transaction --skip-lock-tables --no-create-info --skip-comments --skip-extended-insert "$mysql_database" > "$backup_file"
fi
这里根据自己的需求来判断我们怎么样去定义这个全量还是增量的策略,在有拿到标准后,我们可以在我们的计划任务当中来执行我们的定期
具体计划任务该怎么去执行,通过另外一篇文章可以来参考学习一下