在50 和 51 主机分别安装percona软件
]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
###############RDBMS1_DAY05 innobackupex 命令的使用
1 percona软件介绍
2 安装软件
]#yum -y install /var/ftp/pub/libev-4.15-1.el6.rf.x86_64.rpm
]#yum -y install /var/ftp/pub/percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
3innobackupex命令格式
]# innobackupex 选项
[root@host50 ~]# man innobackupex
[root@host50 ~]# innobackupex --help
常用选项介绍?
数据的完全备份与恢复
完全备份的命令格式
]# innobackupex --user root --password 密码 目录名 [–no-timestamp]
完全恢复的命令格式
]# innobackupex --apply-log 目录名 #准备恢复数据
]# innobackupex --copy-back 目录名 #拷贝数据
例子
[root@host50 ~]# innobackupex --user root --password 123qqq…A /allbak --no-timestamp
[root@host50 ~]# ls /allbak/
backup-my.cnf db3 mysql xtrabackup_binlog_info xtrabackup_logfile
bbsdb ib_buffer_pool performance_schema xtrabackup_checkpoints
db1 ibdata1 sys xtrabackup_info
[root@host50 ~]#
[root@host50 ~]# scp -r /allbak root@192.168.4.51:/opt/
在51主机恢复数据步骤如下:
停止数据库服务
清空数据库目录
准备恢复数据
拷贝数据
修改所有者和组用户为mysql
启动服务 查看数据
[root@host51 ~]# systemctl stop mysqld
[root@host51 ~]# rm -rf /var/lib/mysql/*
[root@host51 ~]# cat /opt/allbak/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 3039191
last_lsn = 3039200
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
[root@host51 ~]# innobackupex --apply-log /opt/allbak/
[root@host51 ~]# cat /opt/allbak/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 3039191
last_lsn = 3039200
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
[root@host51 ~]# innobackupex --copy-back /opt/allbak/
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
[root@host51 ~]# systemctl start mysqld
[root@host51 ~]# mysql -uroot -p123qqq…A
mysql> show databases;
恢复单张表的所有数据 192.168.4.51
[root@host51 ~]# mysql -uroot -p123qqq…A
mysql> select * from db3.user;
mysql> delete from db3.user; 误删除数据
mysql> select * from db3.user;
具体步骤如下: user.idb
表空间?存储表记录的 表.ibd 文件
1 删除表空间文件 (把没有数据的.ibd文件删除)
alter table db3.user discard tablespace;
2 导出表信息(把表的信息在备份文件里导出来)
]#innobackupex --apply-log --export /opt/allbak
[root@host51 ~]# ls /opt/allbak/db3/
db.opt user.cfg user.exp user.frm user.ibd
[root@host51 ~]#
3 拷贝表信息文件到数据库目录下
]#cp /opt/allbak/db3/user.{cfg,exp,ibd} /var/lib/mysql/db3/
[root@host51 ~]# ls -l /var/lib/mysql/db3/user.*
4 修改表信息文件的所有者及组用户为mysql
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql/db3/*
5 导入表空间(把导出的表信息存储到数据库目录下的配置文件里)
mysql> alter table db3.user import tablespace;
6 删除数据库目录下的表信息文件
[root@host51 ~]# rm -rf /var/lib/mysql/db3/user.cfg
[root@host51 ~]# rm -rf /var/lib/mysql/db3/user.exp
7 查看表记录 select * from db3.user;
数据的增量备份与恢复
增量备份命令格式
]# innobackupex --user root --password 密码 --incremental /目录名 --incremental-basedir=上次备份数据存储目录 --no-timestamp
增量恢复命令格式
]# innobackupex --apply-log --redo-only 首次备份目录名 #准备恢复数据
]# innobackupex --apply-log --redo-only 首次备份目录名 --incremental-dir=备份目录名 #合并数据
]# innobackupex --copy-back 首次备份目录名 #把数据拷贝到数据库目录下
例子:
周一 首次备份 备份服务器上的所有数据(完全备份)
[root@host50 ~]# innobackupex --user root --password 123qqq…A /fullbak --no-timestamp
[root@host50 ~]# ls /fullbak
[root@host50 ~]# mysql> insert into db3.user(name)values(“bob”); 多写几条
周二 增量备份
[root@host50 ~]# innobackupex --user root --password 123qqq…A --incremental /new1dir --incremental-basedir=/fullbak --no-timestamp
[root@host50 ~]# ls /new1dir/
[root@host50 ~]# mysql> insert into db3.user(name)values(“tom”); 多写几条
周三 增量备份
[root@host50 ~]# innobackupex --user root --password 123qqq…A --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp
[root@host50 ~]# ls /new2dir/
***数据增量备份的工作过程(难点)
[root@host50 ~]# cat /备份目录名/xtrabackup_checkpoints
怎么知道在所有数据里, 那些数据新产生的?
[root@host50 ~]# cat /备份目录名/xtrabackup_checkpoints #记录当前目录下数据的备份信息,备份数据的范围
from_lsn = 备份数据的起始范围
to_lsn = 备份数据的结束范围
last_lsn = 当前备份数据的位置标记 (书签)
事务日志文件: 对表操作时执行的sql命令
ib_logfile0 ib_logfile1 ibtmp1
LSN 日志序列号
增量恢复数据
[root@host50 ~]# scp -r /fullbak root@192.168.4.51:/root/
[root@host50 ~]# scp -r /new1dir root@192.168.4.51:/root/
[root@host50 ~]# scp -r /new2dir root@192.168.4.51:/root/
51主机恢复步骤如下:
停止数据库服务
清空数据库目录
[root@host51 ~]# systemctl stop mysqld
[root@host51 ~]# rm -rf /var/lib/mysql/*
准备恢复恢复数据
[root@host51 ~]# innobackupex --apply-log --redo-only /root/fullbak/
[root@host51 ~]# cat /root/fullbak/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 3039191
last_lsn = 3039200
compact = 0
recover_binlog_info = 0
[root@host51 ~]#
合并数据
]# innobackupex --apply-log --redo-only /root/fullbak/ --incremental-dir=/root/new1dir
]#innobackupex --apply-log --redo-only /root/fullbak/ --incremental-dir=/root/new2dir
拷贝数据
[root@host51 ~]# innobackupex --copy-back /root/fullbak/
修改所有者和组用户为MySQL
[root@host51 ~]# chown -R mysql:mysql /var/lib/mysql
启动数据库服务
管理员登录查看数据量
122 systemctl start mysqld
123 mysql -uroot -p123qqq…A -e ‘select name from db3.user’
数据的差异备份与恢复
周1 完全备份
]# innobackupex --user root --password 123qqq…A /dir1 --no-timestamp
insert into db3.user values(); 10
周二 差异备份
]# innobackupex --user root --password 123qqq…A --incremental /dir2 --incremental-basedir=/dir1 --no-timestamp
insert into db3.user values();
周三 差异备份
]# innobackupex --user root --password 123qqq…A --incremental /dir3 --incremental-basedir=/dir1 --no-timestamp
insert into db3.user values();
周四 差异备份
]# innobackupex --user root --password 123qqq…A --incremental /dir4 --incremental-basedir=/dir1 --no-timestamp