学习笔记:MySQL热备工具Percona XtraBackup

版权声明:本文为博主原创文章,转载敬请作出引用声明方便相互交流学习! https://blog.csdn.net/sweeper_freedoman/article/details/73523693

     Percona XtraBackup(https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html)是MySQL DBA备份数据库的必备神器之一了,免费、开源,支持热备和增备。Percona XtraBackup热备工具基于InnoDB存储引擎崩溃恢复(参考http://blog.csdn.net/sweeper_freedoman/article/details/74854175)的工作原理,拷贝InnoDB数据文件,然后对数据文件执行一个崩溃恢复,具体过程如下(https://www.percona.com/doc/percona-xtrabackup/LATEST/how_xtrabackup_works.html):

①记录备份开始时InnoDB存储引擎重做日志(事务日志)的日志序列号(log sequence number, LSN);

②复制数据库物理文件(包括表定义文件、选项文件、数据文件等),同时开启一个后台进程监控和复制事务日志改动;

③数据库文件复制完成后执行一个“ LOCK BINLOG FOR BACKUP ”来阻塞对二进制文件的改动操作,停止复制重做日志并获取二进制日志位值,然后释放二进制日志锁;

④将二进制日志位值打印输出到STDERR,结束备份。

     这里记录一下在自己本地Ubuntu Linux的安装过程,具体可以参考官方安装文档(https://www.percona.com/doc/percona-xtrabackup/LATEST/installation.html)。首先,习惯性地看一看有没有apt源支持,这么流行的工具果然是有的,开源的魅力所在啊!直接apt安装了。

apt-cache search xtrabackup
apt-get install percona-xtrabackup

     Percona XtraBackup包含一系列工具(https://www.percona.com/doc/percona-xtrabackup/LATEST/manual.html)。

  • innobackupex

xtrabackup工具的符号连接,虽然仍然支持2.2版本的所有特性和语法,但是现在已经过时了,下个主发行版会移除。(所有就不玩这个命令了)

  • xtrabackup

一个C程序的编译二进制包,提供包含MyISAM、InnoDB和XtraDB表在内的整个MySQL数据库实例备份功能。(吆西就是这个工具了)

  • xbcrypt

用于备份文件的加密和解密。

  • xbstream

“xbstream”文件格式转换。

  • xbcloud

云服务(“xbstream”文件)。

     安装成功后,试着运行一个备份和恢复过程吧。如上文所示,就用“xtrabackup”工具了

https://www.percona.com/doc/percona-xtrabackup/LATEST/backup_scenarios/full_backup.html)。这里是进行一个全备份,增倍的话也是在全备的基础上,多一些操作,就不额外执行了。

①创建备份

     直接敲命令行。

xtrabackup --backup -uroot -p520 --target-dir=/home/student/backup/
Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.
170620 22:56:32 Connecting to MySQL server host: localhost, user: root, password: set, port: not set, socket: not set
Error: Unsupported server version: '5.7.18-0ubuntu0.16.04.1'. Please report a bug at https://bugs.launchpad.net/percona-xtrabackup

     竟然报错了,去官网看了一下,竟然原因是安装的XtraBackup版本太低了,和我Ubuntu上最新版本的MySQL不匹配,https://bugs.launchpad.net/percona-xtrabackup/+bug/1689588。一脸懵逼。好吧,那就卸了重新下载个最新版的“deb”包安装吧(https://www.percona.com/downloads/XtraBackup/LATEST/)。

xtrabackup --version
xtrabackup version 2.3.7 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 40f611f)
apt-get remove --purge percona-xtrabackup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/debian/xenial/x86_64/percona-xtrabackup-24_2.4.7-2.xenial_amd64.deb
gdebi percona-xtrabackup-24_2.4.7-2.xenial_amd64.deb
     安装完成后重新执行备份,这下就OK了。

xtrabackup --backup -uroot -p520 --target-dir=/home/student/backup/

********** (打印的东西太长太长了就只粘贴最后一句了) **********

170620 23:50:45 completed OK!
cd /home/student/backup/ ; ls -lh
总用量 13M
-rw-r----- 1 root root  424 6月  20 23:50 backup-my.cnf
-rw-r----- 1 root root  502 6月  20 23:50 ib_buffer_pool
-rw-r----- 1 root root  12M 6月  20 23:50 ibdata1
drwxr-x--- 2 root root 4.0K 6月  20 23:50 mysql
drwxr-x--- 2 root root 4.0K 6月  20 23:50 performance_schema
drwxr-x--- 2 root root 4.0K 6月  20 23:50 student
drwxr-x--- 2 root root  12K 6月  20 23:50 sys
-rw-r----- 1 root root  113 6月  20 23:50 xtrabackup_checkpoints
-rw-r----- 1 root root  453 6月  20 23:50 xtrabackup_info
-rw-r----- 1 root root 2.5K 6月  20 23:50 xtrabackup_logfile
②恢复准备

     在数据恢复之前,有一个必不可少的“prepare”过程需要作用于备份好的数据目录文件,这是为了实现数据一致性。

xtrabackup --prepare --target-dir=/home/student/backup/

********** (打印的东西太长太长了就只粘贴最后一句了) **********

170621 00:01:24 completed OK!
③执行恢复

     关闭MySQL,干掉原来的数据(“datadir”),进行恢复操作。这一步需要注意的是,数据恢复后要将数据目录的所有归入到“mysql”组用户下。

mysql> show variables like "datadir";
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.03 sec)
service mysql stop
mv /var/lib/mysql /var/lib/mysql_backup
xtrabackup --copy-back --target-dir=/home/student/backup/

********** (打印的东西太长太长了就只粘贴最后一句了) **********

170621 00:12:16 completed OK!
ls -l /var/lib/ | grep mysql
drwxr-x---  6 root          root          4096 6月  21 00:12 mysql
drwx------  6 mysql         mysql         4096 6月  21 00:07 mysql_backup
chown -R mysql:mysql /var/lib/mysql
service mysql start
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

展开阅读全文

没有更多推荐了,返回首页