设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 服务器 > 安全 > 正文

解锁MySQL备份恢复的4种正确姿势(5)

发布时间:2021-01-21 03:46 所属栏目:53 来源:网络整理
导读:同样的,它也输出了当前的binlog filename和position,如果有gtid(同样也会输出) 可以用于搭建主从.最后一行一定会是你的lsn被copy的信息. 这是因为每次启动备份,都会记录170429 12:54:10 log scanned up to (1676085

同样的,它也输出了当前的binlog filename和position,如果有gtid(同样也会输出) 可以用于搭建主从.最后一行一定会是你的lsn被copy的信息. 这是因为每次启动备份,都会记录170429 12:54:10 >> log scanned up to (1676085)),然后开始拷贝文件,一般来讲数据库越大拷贝文件是要花费越长的时间,所以说这期间一般情况都会有新的操作,所以说所有文件也可能记录的并不是一个时间点的数据,为了解决数据这个问题,XtraBackup 就会启动一个后台进程来每秒1次的观测mysql的事务日志,直到备份结束.而且把事务日志中的改变记录下来.我们知道事物日志是会重用的(redo log),所以这个进程会把redolog写到自己的日志文件xtrabackup_log,这个后台监控进程会记录所有的事务日志的改变,用于保证数据一致性所.

增量备份:

当我们做过全量备份以后会在目录下产生xtrabackup_checkpoints的文件 这里面记录了lsn和备份方式,我们可以基于这次的全量做增量的备份.

$cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1676085
last_lsn = 1676085
compact = 0
recover_binlog_info = 0
xtrabackup –backup –target-dir=/data/backup/inc1 –incremental-basedir=/data/backup/base

这个时候xtrabackup也是去打开了xtrabackup_checkpoints文件进行上一次备份的信息查看.这个时候去查看增量备份的xtrabackup_checkpoints也记录了这些信息.

$cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1676085
to_lsn = 1676085
last_lsn = 1676085
compact = 0
recover_binlog_info = 0

这也意味着你可以在增量的备份上继续增量的备份.

同样的,xtrabackup也支持压缩(–compress)、加密(–encrypt)、并行(–parallel)等操作,但是和mysqlbackup不同的是这个没有同时的备份binlog,而mysqlbackup是备份了binlog的.

我们来模拟一个恢复的过程深入的了解一下原理.

查看当前数据:

dbadmin@test 03:04:33>select?from t;
+——-+
| ?id ?|
+——-+
| ?1 ?|
+——-+
1 row in set (0.00 sec)

全量备份

$xtrabackup –backup –target-dir=/data/backup/base

模拟增量数据

dbadmin@test 03:07:16>select?from t;
+——-+
| ?id ?|
+——-+
| ?1 ?|
| ?2 ?|
+——-+
2 rows in set (0.00 sec)

进行增量备份:

$xtrabackup –backup –target-dir=/data/backup/inc1 –incremental-basedir=/data/backup/base

模拟无备份操作:

dbadmin@test 03:09:42>select * from t;
+——-+
| ?id ?|
+——-+
| ?1 ?|
| ?2 ?|
| ?3 ?|
+——-+
3 rows in set (0.00 sec)

模拟误操作:

dbadmin@test 03:09:45>truncate table t; Query OK,0 rows affected (0.00 sec)

模拟恢复操作:

step 1:找到误操作的log position

dbadmin@test 03:10:19>show master logs;

dbadmin@test 03:10:47>show binlog events in ‘mysql-bin.000001’;

1333

我们需要分别对全量、增量备份各做一次prepare操作.

xtrabackup –prepare –apply-log-only –target-dir=/data/backup/base

增量

xtrabackup –prepare –apply-log-only –target-dir=/data/backup/base \ –incremental-dir=/data/backup/inc1

如果我们使用它自带的还原命令的时候就要先把data目录给清空.不然就会报如下的错误

$innobackupex –copy-back /data/backup/base/

170429 15:37:19 innobackupex: Starting the copy-back operation

IMPORTANT: Please check that the copy-back run completes successfully.

At the end of a successful copy-back run innobackupex prints “completed OK!”.

innobackupex version 2.4.6 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 8ec05b7) Original data directory /u01/my3307/data is not empty!

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读