MySQL数据备份:percona软件介绍 、 innobackupex备份与恢复

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值