前言

innobackup的介绍和安装过程就不多说了,本篇innobackup的专题由浅入深来展示innobackup工具的备份和恢复功能;

一、全量备份与恢复

——全量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --no-timestamp /home/mysql_back

带上 --no-timestamp 参数后,备份的数据会生成到指定的目录内;
如果不携带此参数,则在对应目录下生成时间戳的文件夹;
备份需要指定数据库的用户名、密码信息,恢复时不需要指定;

——全量恢复

1、回滚检测未提交的事务

innobackupex --apply-log /home/mysql_back

回滚事务后的数据已经是一份完整的备份数据了;

2、指定datadir目录

回滚检测后的数据目录,可以直接作为datadir的目录;
在mysql配置文件中将 datadir 参数后的值改为 /home/mysql_back 即可;
注意:数据目录的用户和用户组权限;

二、增量备份与恢复

第一种,一直依赖于全量备份进行的增量备份
1、full_20220330150509(全量备份)
2、full_20220330150509-add_20220330150752(依赖于全量备份)
3、full_20220330150509-add_20220331020155(依赖于全量备份)
这种备份只需要 1(全量备份)和最后一次增量备份 相加就是完整的数据

第二种,一直依赖于上次的备份,进行持续的增量
1、full_20220330150509(全量备份)
2、full_20220330150509-add_20220330150752(依赖于全量备份)
3、add_20220330150752-add_20220331020530(依赖于上次的增量)
4、add_20220331020530-add_20220332020644(依赖于上次的增量)
这种备份,全部的数据相加才是完整的数据

1、增量备份

基于第二种持续的增量备份,第二种增量备份是包含第一种的;

——先全量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --no-timestamp /root/file_xpt/full_20220331103905

备份后可以手动创建库、表、插入数据,便于观察测试;

——第一次增量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --no-timestamp --incremental-basedir=/root/file_xpt/full_20220331103905 --incremental /root/file_xpt/full_20220331103905-add_20220331105031

–incremental 指定此次备份输出的文件夹
–incremental-basedir= 指定衔接哪个备份来进行增量
–no-timestamp :不添加此参数,会自动生成时间戳的文件夹

手动插入一些数据,模拟数据库的增量,便于观察测试;

——第二次增量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --no-timestamp --incremental-basedir=/root/file_xpt/full_20220331103905-add_20220331105031/ --incremental /root/file_xpt/add_20220331105031-add_20220331110040

。。。。。。。。。
一直增量备份
。。。。。。。。。

2、增量备份的恢复

——回滚检测

innobackupex --apply-log --redo-only --use-memory=500m /root/file_xpt/full_20220331103905

–use-memory 指定使用的内存大小,可以加快回滚速度,但必须和–apply-log一起使用;

——将第一次的增量添加到全量中

innobackupex --apply-log --redo-only --use-memory=500m /root/file_xpt/full_20220331103905 --incremental-dir=/root/file_xpt/full_20220331103905-add_20220331105031/

——将第二次的增量添加到全量中

innobackupex --apply-log --redo-only --use-memory=500m /root/file_xpt/full_20220331103905 --incremental-dir=/root/file_xpt/add_20220331105031-add_20220331110040/

——最后整体恢复全量数据

innobackupex --apply-log --use-memory=500m /root/file_xpt/full_20220331103905

此时的 /root/file_xpt/full_20220331103905 文件夹可以被指定为mysql的数据目录:
1、关闭mysql,修改my.cnf配置文件的datadir参数;
2、修改数据目录的用户权限;
3、启动mysql;

或者,也可以直接将 full_20220331103905 剪切、修改为mysql的数据目录;

下篇:《innobackup专题2-指定库的备份与恢复》

打赏
支付宝 微信
上一篇 下一篇