前言:
innobackupex对xtrabackup的封装,是percona推出的可靠物理备份工具,官方链接地址,对于mysql,逻辑备份可以使用mysqldump、mysqlpump、mysqldumper,物理备份可以直接使用innobackupex。
安装:
我这里为了方便,这里使用centos7.x的yum安装(如果感兴趣可以到官网下载linux generc版本,直接解压就能使用)
[root@centos7 ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
[root@centos7 ~]# yum install percona-xtrabackup-24
[root@centos7 ~]# yum install qpress ##innobackupex支持压缩导出,这里安装压缩工具
[root@centos7 ~]# innobackupex -version ###如果出现如下提示表示安装成功,我这里2.4.15
xtrabackup: recognized server arguments: --server-id=11 --datadir=/data/mysql_data --tmpdir=/tmp --log_bin=bin.log --innodb_page_size=8192 --innodb_buffer_pool_size=2G --innodb_io_capacity=4000 --innodb_flush_method=O_DIRECT --innodb_undo_tablespaces=3 --innodb_log_file_size=128M --innodb_log_buffer_size=16777216
innobackupex version 2.4.15 Linux (x86_64) (revision id: 544842a)
[root@centos7 ~]#
备份:
由于我我的操作环境是多实例状态下,我这里就拿3307这个库进行操作,因此innobackupex不能使用默认的/etc/my.cnf配置文件进行备份和恢复。
1.创建备份配置文件
[root@centos7 ~]# vim innobackupex.cnf
添加如下内容:
[mysqld]
datadir=/data1
basedir=/use/local/mysql
innodb_page_size=8192
socket=/tmp/mysql.sock1
port=3307
2.开始备份
1.创建存放备份的目录
[root@centos7 /]# mkdir innobackup_dir
[root@centos7 /]# chown mysql.mysql /innobackup_dir/* -R
2.开始备份
[root@centos7 /]# innobackupex --defaults-file=/root/innobackupex.cnf --user=root --password=root --socket=/tmp/mysql.sock1 /innobackup_dir/
3.查看备份
[root@centos7 2019-09-07_17-58-55]# ll
total 45136
-rw-r-----. 1 root root 487 Sep 7 17:59 backup-my.cnf
drwxr-x---. 2 root root 4096 Sep 7 17:58 demo01
drwxr-x---. 2 root root 4096 Sep 7 17:59 employees
-rw-r-----. 1 root root 27956 Sep 7 17:59 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Sep 7 17:58 ibdata1
drwxr-x---. 2 root root 4096 Sep 7 17:59 mysql
drwxr-x---. 2 root root 4096 Sep 7 17:59 performance_schema
drwxr-x---. 2 root root 4096 Sep 7 17:59 sbtest
drwxr-x---. 2 root root 12288 Sep 7 17:58 sys
-rw-r-----. 1 root root 9437184 Sep 7 17:58 undo001
-rw-r-----. 1 root root 7340032 Sep 7 17:58 undo002
-rw-r-----. 1 root root 16777216 Sep 7 17:58 undo003
-rw-r-----. 1 root root 15 Sep 7 17:59 xtrabackup_binlog_info
-rw-r-----. 1 root root 144 Sep 7 17:59 xtrabackup_checkpoints
-rw-r-----. 1 root root 536 Sep 7 17:59 xtrabackup_info
-rw-r-----. 1 root root 2560 Sep 7 17:59 xtrabackup_logfile
到这里备份完毕
恢复:
恢复过程:
1.创建一个用于存放数据库恢复的目录
[root@centos7 /]# mkdir /data1_recover_dir
[root@centos7 /]# chown mysql.mysql /data1_recover_dir -R
2.创建一个用于恢复的配置文件
[root@centos7 ~]# vim innobackupex2.cnf
###配置文件内容如下所示
[mysqld]
datadir=/data1_recover_dir ## 这里指向要恢复到的目录
basedir=/use/local/mysql
socket=/tmp/mysql.sock5 ##自己拟定一个即可
innodb_page_size=8192
port=3311
innodb_undo_tablespaces = 3 ##如果不配置,在5步骤时,undo表空间不会被还原到数据目录中,导致启动报错
3.应用日志
[root@centos7 ~]# innobackupex --defaults-file=/root/innobackupex2.cnf --apply-log /innobackup_dir/2019-09-07_17-04-14/
4.拷贝备份
[root@centos7 ~]# innobackupex --defaults-file=/root/innobackupex2.cnf --copy-back /innobackup_dir/2019-09-07_17-04-14/
此时查看恢复目录中就可以看到恢复的数据库
修改权限:
[root@centos7 ~]# chown mysql.mysql /data1_recover_dir -R
5.将新库的配置添加到my.cnf配置文件中
[mysqld5]
server-id=555
basedir=/usr/local/mysql
datadir=/data1_recover_dir
port=3311
socket=/tmp/mysql.sock5
6.启动实例
[root@centos7 ~]# mysqld_multi start 5
总结
第一次恢复时候,启动实例报错:
[ERROR] InnoDB: Unable to open undo tablespace './/undo001'.
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
提示找不到undo表空间,这是因为我在恢复使用的配置文件innobackupex2.cnf中配置配置innodb_undo_tablespaces = 3
添加该配置后重新恢复,实例即可重启启动,该错误解决,参考链接
上面的备份只是innobackupex的简单操作入门,后续还会继续介绍如何进行导出压缩,压缩备份恢复,以及将备份传到异地进行保存。