十二、事务日志文件

LSN 日志序列号

增量备份的工作过程?
每一个备份目录下,都有记录当前目录备份信息的配置文件
]# cat 备份目录名/xtrabackup_checkpoints (记录备份类型 和lsn范围)

+++++++++innobackupex增量备份与恢复
--incremental 目录名 #增量备份
--incremental-basedir=目录名 #增量备份时,指定上一次备份文件存储的目录名

先要有一次完全备份 存放目录 /fullbak
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
/fullbak --no-timestamp

插入新记录,执行增量备份 存放目录 /new1bak
mysql> insert into gamedb.t1 values(8080),(8080);
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--incremental /new1dir --incremental-basedir=/fullbak --no-timestamp

插入新记录,执行增量备份 存放目录 /new2bak
mysql> insert into gamedb.t1 values(8099),(8099);
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--incremental /new2dir --incremental-basedir=/new1dir --no-timestamp

++++++++++++++增量恢复
--apply-log 准备恢复数据
--redo-only 合并日志
--incremental-dir=目录名 #增量恢复数据时,指定备份目录名称
--copy-back 恢复数据

清空数据库目录
]# rm -rf /var/lib/mysql
]# mkdir /var/lib/mysql

准备恢复数据
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--apply-log --redo-only /fullbak

合并日志
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--apply-log --redo-only /fullbak --incremental-dir=/new1dir

]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--apply-log --redo-only /fullbak --incremental-dir=/new2dir

拷贝备份文件到数据库目录
]# innobackupex --user root --password 654321 \
--databases="gamedb mysql performance_schema sys" \
--copy-back /fullbak
]# ls /var/lib/mysql -l

修改文件的所有者/组mysql
]# chown -R mysql:mysql /var/lib/mysql

重启数据库服务
]# systemctl restart mysqld
]# mysql -uroot -p654321

+++++++++++++++++++++使用完全备份文件恢复单个表
--export 导出表信息
mysql> alter table 库.表 discard tablespace; 删除表空间
mysql> alter table 库.表 import tablespace; 导入表空间

1完全备份
]# innobackupex --user root --password 654321 \
--databases="studb" /allbakstudb --no-timestamp

2查看备份目录文件列表
]# ls /allbakstudb
]# ls /allbakstudb/studb

3误删除a表: mysql> drop table studb.a;

4 使用完全备份文件恢复单个表
4.1 按照备份时的表结构创建删除的表
create table studb.a(name char(10));

4.2 删除创建表的表空间文件
mysql> alter table studb.a discard tablespace;

4.3 使用备份文件导出表信息
]#innobackupex --user root --password 654321 \
--databases="studb" --apply-log --export /allbakstudb

4.4 把导出的表信息文件,拷贝到对应的数据库目录下,并修改所有者和组为mysql
]# cp /allbakstudb/studb/a.{cfg,exp,ibd} /var/lib/mysql/studb/
]# chown mysql:mysql /var/lib/mysql/studb/a.*

4.5 导入表空间
mysql> alter table studb.a import tablespace;

[root@mysql51 ~]# rm -rf /var/lib/mysql/studb/a.cfg
[root@mysql51 ~]# rm -rf /var/lib/mysql/studb/a.exp

4.6 查看记录
mysql> select * from studb.a;

上一篇:mysqlxtrabackup备份


下一篇:Xtrabackup备份与恢复