Xtrabackup实现数据的备份与恢复-mysql

Xtrabackup介绍

  Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。

备份原理

备份开始时首先会开启一个后台检测进程,实时检测mysq redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log

xtrabackup增量备份的原理是:

1)、首先完成一个完全备份,并记录下此时检查点LSN;

2)、然后增量备份时,比较表空间中每个页的LSN是否大于上次备份的LSN,若是则备份该页并记录当前检查点的LSN。

Xtrabackup安装

 

l  rpm 安装(下载:https://pan.baidu.com/s/1sl4jByP

这种安装方法比较简单,只需下载相应的rpm安装包安装即可(注意根据提示安装相应的依赖包)。其中需要的 libev.so.4() 安装包:

https://pan.baidu.com/s/1i4EZfwThttps://pan.baidu.com/s/1i4EZfwT

 

 

1,创建mysql备份用户

mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'";

mysql -uroot --password="root" -e"grant all privileges on*.* TO 'backup'@'192.168.%'";

innobackupex参数介绍:

--defaults-file=/etc/my.cnf:指定my.cnf配置文件位置

--user=root:指定链接数据库的用户名

--apply-log:对xtrabackup的—prepare参数的封装

--copy-back:做数据恢复时把备份文件拷贝到mysql服务器的datadir目录下

--remote-host:通过ssh将备份数据存储到远程的服务器上

--stream:通过指定的数据格式将备份的数据输出到标准输出

--tmpdir:当指定了—remote-host或者是—stream参数后,事务日志需要临时存储到本地磁盘,此参数默认使用了mysql服务器的配置

--use-memory:此参数结合ibbackup使用,类似于xrtabackup的参数use-memory参数

--throttle=IOS:同xtrabackup的参数throttle

--sleep:是给ibbackup使用的,指定每备份1M数据,进程停止考呗多少秒,也是为了减少对正常业务的影响,具体查看ibbackup的手册

-compass:对备份的数据进行压缩,仅仅支持ibbackup,xtrabackup还没有实现

--include=REGEXP对xtrabackup参数的封装,也支持ibbackup;

--database=LIST :列出需要备份的databases,如果没有制定该参数,则所有包含Myisam和innoDB表的database 都会被备份

--password="*****":访问mysql的用户口令,当mysql的root口令为空时省略—password参数。

PORT=3306 :指定mysql监听的端口

--slave-info:slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。

/mysql_backup:备份位置

--socket=SOCKET :mysql服务器的socket文件的位置

2>/mysql_backup/ innobackupex.log:记录备份时的输出

--databases=数据库名:使用这个参数,针对某个数据库进行备份,如果不加这个参数默认就是全部的库备份

备份阶段

1:全量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root /opt/

2:第一次增量备份

mysql> create database test123;

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --incremental-basedir=/opt/2019-01-15_20-32-38/ --incremental  /opt/incremental
image 
 
恢复阶段:

1.第一次还原全量恢复

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /opt/2019-01-15_20-32-38

2.第二次还原增量恢复

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log --redo-only /opt/2019-01-15_20-32-38 --incremental-dir=/opt/incremental/2019-01-15_20-40-36/

3.复制所有的备份到他们原来的位置

innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /opt/2019-01-15_20-32-38/

授权新data目录的权限
chown -R mysql.mysql data

image

猜你喜欢

转载自www.cnblogs.com/zywu-king/p/10271305.html