//
xtrabackup备份的几个细节
//
这个周依旧没有上班,处于在家办公状态,发现在家还挺忙的,要自己做饭,洗碗,烧水,巴拉巴拉,一大堆事情~搞得还挺忙的。
今天在测试xtrabackup的一些细节部分,这里罗列几点很细节的地方,希望对大家有点帮助吧。
1、在使用xtrabackup进行备份的时候,有时候需要输入--host参数,但是习惯了mysql的写法,总是会将--host=127.0.0.1写成简写:-h127.0.0.1,今天就吃了个亏,在innobackupex中,--host的简写是-H,而不是-h,这一点在帮助里面可以看到。如下:
2、这个可能就更坑了,在某一次进行增量备份的时候,我写的命令如下:innobackupex -uxxx -pxxx -Hxxx --incremetal --incremetal-basedir=/xxx/xxx/xxx /xxx/xxx
可以看出来,这是增量备份的写法,但是其中--incremetal写错了,应该是--incremental,少写了个n,但是问题是innobackupex这个工具并没有检测出来这个是个错误的写法,在导致恢复的时候出现了问题,增量数据丢失了。查看备份文件xtrabackup_checkpoint可以看到:
备份类型居然是full-backuped,可以看到,这个备份是变成了一个全量备份。这样,在恢复的时候,就不会得到我们想要的结果了。这一点也请大家注意。
3、在使用innobackupex的时候,后面如果跟了--defaults-file参数,那么即使你的配置文件中有socket变量,后续如果使用本地socket连接的时候,也需要重新加上socket,否则备份的时候回提示错误。简单讲就是:
错误写法:
innobackupex --defaults-file=/xxx/ /xxx/xxx
正确写法:
innobackupex --defaults-file=/xxx/ --socket=/xxx /xxx/xxx
4、我们知道,可以在增量备份的基础上继续进行增量备份,在多次增量备份之后,如果我们需要使用最后一次的增量备份进行数据恢复,则需要对全量备份和之前的增量备份做apply-log的操作,在操作的过程中,需要加上--redo-only参数。
简单讲,prepare阶段会变成以下几步:
4.1、在全量备份(非最后一个增量备份)基础上进行:
innobackupex --apply-log --redo-only base_dir
4.2、在增量备份上进行:
innobackupex --apply-log --redo-only --incremental-dir=/path/incremetal_dir base_dir
4.3、在最后一个增量备份上进行:
innobackupex --apply-log --incremental-dir=/path/incremetal_dir base_dir
至此,我们可以用base_dir来恢复出来所有的数据。
在家工作,有诸多不便,效率也比较低,就这么多吧。
希望疫情快点过去,恢复正常的工作生活。
今天在网上看到的一个段子,感觉写的还挺好,摘抄一下,大家也看看.
己亥末,庚子春,荆楚大疫,染者数万,众惶恐,举国防,皆闭户,道无车舟,万巷空寂。然外狼亦动,垂涎而侯,华夏腹背芒刺。幸龙魂不死,风雨而立,医无私,警无畏,民齐心。
政者,医者,兵者,扛鼎逆行勇战矣。商客,名家,百姓,仁义者,邻邦献物捐资。叹山川异域,风月同天,岂曰无衣,与子同裳,能者竭力,万民同心。
月余,疫除,终胜。
此后百年,风调雨顺,国泰民安。