mysql-xtrbackup备份与恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql-xtrbackup备份与恢复相关的知识,希望对你有一定的参考价值。


mysql-xtrbackup备份与恢复

 ★简介:

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一款开源的能够对innodb和xtradb数据库进行热备的工具。

★特点:

· 物理备份,备份过程快速、可靠;

· 备份过程不会打断正在执行的事务;

· 能够基于压缩等功能节约磁盘空间和流量;

· 自动实现备份验;

· 还原速度快;

★支持的存储引擎功能:

· MyISAM:温备,不支持增量备份;

· InnoDB:热备,增量;


zxb    IP:10.0.0.128

zxb2  IP:10.0.0.129


操作:

两台机下载xtrbackup,并安装;

[[email protected] ~]#  wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
[[email protected] ~]# yum install -y percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm


一、全量备份:

1.首先在zxb创建备份目录,给权限;

[[email protected] ~]# mkdir  -p /data/backup/
[[email protected] ~]# chown -R mysql:mysql /data/backup


2.创建数据库;

MariaDB [(none)]> create database allbackup;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 
allbackup  
        |
| mysql              |
| performance_schema |
| zabbix             |
+--------------------+
5 rows in set (0.00 sec)


3.导入数据库数据

[[email protected] ~]# innobackupex -uroot -p0 /data/backup
。。。
171108 17:22:40 completed OK!
[[email protected] ~]# cd /data/backup/2017-11-08_20-41-09/
[[email protected] 2017-11-08_20-41-09]# cat xtrabackup_binlog_info
 mysql-bin.000007    1216


4.拷贝数据到对端目录,首先创建目录;

[[email protected] ~]# mkdir  /backup_data/
[[email protected] ~]# chown -R mysql:mysql /backup_data/
[[email protected] 2017-11-08_20-41-09]# scp -r * zxb2:/backup_data/

5.准备一个数据,保证数据没有提交或则回滚的事物;

[[email protected] ~]# innobackupex --apply-log /backup_data/
‘‘‘‘
171108 20:53:40 completed OK

##--apply-log:回滚日志

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备 份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准 备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至 数据文件也使得数据文件处于一致性状态。


6.暂停mysql服务器,修改/etc/my.cnf,直接恢复后启动服务;

[[email protected] ~]# systemctl stop mariadb
[[email protected] ~]# cat /etc/my.cnf
[mysqld]
datadir=/backup_data
[[email protected] ~]# innobackupex --copy-back /backup_data/
171108 20:56:42 innobackupex: Starting the copy-back operationIMPORTANT: Please check that the copy-back run completes successfully.
           At the end of a successful copy-back run innobackupex
           prints "completed OK!".innobackupex version 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7)
Original data directory /backup_data is not empty!
[[email protected] ~]# systemctl start mariadb


7.查看数据是否同步;

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 
allbackup  
        |
| mysql              |
| performance_schema |
| zabbix             |
+--------------------+
5 rows in set (0.00 sec)


二、增量备份:

1.操作命令:

第一次增量备份;

innobackupex --incremental /zl1(增量备份目录1) --innobackupex-basedir=BASEDIR(全备目录)

第二次增量备份;

innobackupex --incremental /zl2(增量备份目录1) --innobackupex-basedir=zl1(增量备份目录2)


第一次增量备份:

创建两个增量目录;

[[email protected] ~]# mkdir /data/backup_zl1
[[email protected] ~]# mkdir /data/backup_zl2


2.进入数据库,增加数据;

MariaDB [(none)]> use allbackup;
Database changed
MariaDB [allbackup]> select * from increment;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test  |

3.开始增量备份;

[[email protected] ~]# innobackupex -uroot -p0 --incremental /data/backup_zl1 --incremental-
basedir=/data/backup/2017-11-08_21-08-56/
。。。
171108 21:14:00 completed OK!


4.拷贝数据到对端目录,首先创建目录;

[[email protected] ~]# mkdir /zl1
[[email protected] ~]# mkdir /zl2
[[email protected] ~]# chown -R mysql:mysql /zl1
[[email protected] ~]# chown -R mysql:mysql /zl2
[[email protected] ~]# scp -r /data/backup_zl1/* zxb2:/zl1/


5.停止服务,首先恢复完整数据,再合并第一个增量到完全备份里面;

##--redo-only:回滚合并

[[email protected] ~]# systemctl stop mariadb
[[email protected] ~]# innobackupex --apply-log  --redo-only /backup_data/
[roo[email protected] ~]# innobackupex -uroot -p0 --apply-log --redo-only /backup_data/ 
--incremental-dir=/zl1/backup_zl1/2017-11-08_22-30-37/

6.在全备目录下恢复;

[[email protected] ~]# innobackupex -uroot -p0 --copy-backup /backup_data/

7.启动服务,查看数据;

[[email protected] ~]# systemctl start mariad
MariaDB [(none)]> use allbackup;
Database changed
MariaDB [allbackup]> select * from increment;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test  |


第二次增量备份:

1.进入数据库,增加数据;

MariaDB [(none)]> use allbackup;Database changed
MariaDB [allbackup]> select * from increment;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test  |
|    2 | test2 |


2.开始增量备份;

[[email protected] ~]#  innobackupex -uroot -p0 --incremental /data/backup_zl2 --incremental-
basedir=/data/backup_zl1/2017-11-08_22-30-37/


3.拷贝数据到对端目录;

[[email protected] ~]# scp -r /data/backup_zl2/ zxb2:/zl2


4.停止服务,首先恢复完整数据,再合并第二个增量到完全备份里面;

[[email protected] ~]#  innobackupex --apply-log  --redo-only /backup_data
[[email protected] ~]# innobackupex -uroot -p0 --apply-log --redo-only /backup_data/ 
--incremental-dir=/zl2/backup_zl2/2017-11-08_23-07-21/


5.在全备目录下恢复;

[[email protected] ~]# innobackupex -uroot -p0 --copy-backup /backup_data/

6.启动服务,查看数据;

MariaDB [allbackup]> select * from increment;
+------+-------+
| id   | name  |
+------+-------+
|    1 | test  |
|    2 | test2 |



总结:经常会遇到mysql启动不了,通常是由于权限问题,或者配置文件配置问题;


本文出自 “XiaoBingZ” 博客,请务必保留此出处http://1767340368.blog.51cto.com/13407496/1980129

以上是关于mysql-xtrbackup备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

如何用Java实现MySQL数据库的备份和恢复

数据库的备份与恢复

AVAssetWriter 文件备份与恢复

mysql备份与恢复

elasticsearch备份与恢复

CentOS 系统备份与恢复