mysql备份工具innobackupex安装及基本使用

前言:

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的简单操作入门,后续还会继续介绍如何进行导出压缩,压缩备份恢复,以及将备份传到异地进行保存。

 

你可能感兴趣的:(MySQL)