Xtrabackup实现MySQL备份(2)

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。
准备(prepare)一个完全备份
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

[root@zha 2018-05-04_17-28-25]# innobackupex --apply-log /mysql_backup/2018-05-04_17-28-25/
180504 17:38:38 completed OK!
在实现“准备”的过程中,innobackupex通常还可以使用–use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。

3.2 完全备份恢复

#复制目录到/zha下
[root@zha ~]# cp -r /mysql_backup/2018-05-04_17-28-25/ /zha (以防玩脱)


#模拟数据库故障(关闭数据库并删除数据文件)
[root@zha ~]# /etc/init.d/mysqld stop
Shutting down MySQL. [ OK ]
[root@zha ~]# cd /usr/local/mysql/data/
[root@zha data]# ls
ibdata1 mysql-bin.000001 performance_schema
ib_logfile0 mysql-bin.000002 test
ib_logfile1 mysql-bin.000003 zha
mysql mysql-bin.index zha.err
[root@zha data]# rm -rf *
[root@zha data]# ls (数据已经没有了)


#恢复
[root@zha data]# innobackupex --copy-back /mysql_backup/2018-05-04_17-28-25/
180504 18:04:14 completed OK!
如果报错Error: datadir must be specified. 意思是(在默认配置文件 /etc/my.cnf 中,没有找到 datadir 配置项)

vim /etc/my.cnf # 加入 datadir 配置项即可
datadir = /usr/local/mysql/data

#再次查看/data目录,数据已经恢复
[root@zha data]# ls
ibdata1 performance_schema
ib_logfile0 xtrabackup_info
ib_logfile1 xtrabackup_master_key_id
ibtmp1 zha
mysql


#修改权限启动mysql
[root@zha ~]# chown -R mysql:mysql /usr/local/mysql/data/
[root@zha ~]# /etc/init.d/mysqld start
Starting MySQL.. [ OK ]

四. 使用xtrabackup对MySQL增量备份 4.1创建测试库、表,然后插入测试数据

mysql> create database test character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
Database changed
mysql> create table test (id int(10) not null,name varchhar(20));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test values(1,'chenjiaxin');
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(1,'陈嘉欣');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+------------+
| id | name |
+----+------------+
| 1 | chenjiaxin |
| 1 | 陈嘉欣 |
+----+------------+
2 rows in set (0.00 sec)
mysql> exit;
Bye


#第一次完全备份
[root@zha ~]# innobackupex --user=root --database=test --no-timestamp /mysql_backup/
180504 18:35:39 completed OK!


#第二次添加数据
mysql> use test;
Database changed
mysql> insert into test values(2,'test');
Query OK, 1 row affected (0.04 sec)

mysql> exit;
Bye


#第一次增量备份
[root@zha mysql_backup]# innobackupex --user=root --database=test --no-timestamp --incremental-basedir=/mysql_backup/ --incremental /test2
180504 18:48:24 completed OK!


# --incremental-basedir=/data/backup_db/test_incre 第一次增备指定全备路径
# --incremental 参数说明这是一次增备,并指定增备路径

4.2统计大小,验证是否为增量备份

[root@zha /]# du -sh /mysql_backup/
69M /mysql_backup/
[root@zha /]# du -sh /test2/
1.5M /test2/
至此增量备份已经完成!

注意: 第二次增备是在第一次增备的基础上,所以 --incremental-basedir 指定的是第一次增备目录,最后指定的第二次增备目录

[root@zha /]# cd /test2/
[root@zha test2]# cat xtrabackup_checkpoints
backup_type = incremental # backup_type 提示:这是一次增备
from_lsn = 1599830 #from_lsn 提示:从上次结束开始1599380
to_lsn = 1600863 #from_lsn 提示:到1600863结束
last_lsn = 1600863
compact = 0
recover_binlog_info = 0

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/02e395575125d17bfe669511fd0992df.html