一、环境
备份工具:innobackupex
[root@master ~]# innobackupex -v
xtrabackup: recognized server arguments: --datadir=/usr/local/mysql-5.7.25/data
innobackupex version 2.4.18 Linux (x86_64) (revision id: 29b4ca5)
操作系统:CentOS 7.5
数据库:mysql-5.7.25
二、innobackupex 常用参数介绍
备份工具innobackupex要用到的一些主要参数介绍
--user:该选项表示备份账号。
--password:该选项表示备份的密码。
--port:该选项表示备份数据库的端口。(如果是默认3306端口可忽略)
--host:该选项表示备份数据库的地址。
--databases:备份指定的数据库,如果要指定多个数据库,彼此间需要以空格隔开;
--socket:该选项表示mysql.sock所在位置;
一般如果是yum安装的数据库,mysql.sock文件默认在/var/lib/mysql/mysql.sock目录下,如果是该情况可以不用指定,如果是二进制安装,则有可能在其他目录下,就需要该参数做指定;否则innobackupex无法连接数据库报错;
Failed to connect to MySQL server: DBI connect(';mysql_read_default_group=xtrabackup','root',...) failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) at - line 1314.
201103 10:37:44 Connecting to MySQL server host: localhost, user: root, password: set, port: not set, socket: not set
Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2).
--incremental:表示创建一个增量备份,根--incremental-basedir参数一块使用;
--incremental-basedir:指定是基于哪个全量备份目录做的增量备份;
--incremental-dir:指定增量备份的目录;
--defaults-file:指定my.cnf的路径,如果是默认的/etc/my.cnf路径,则该参数可以忽略;
--copy-back:做恢复操作,将备份目录中的文件copy到数据库data目录中;
--apply-log:作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态。(个人不太理解,知道的大神可以解释下)
--redo-only:
三、全量备份 or 全量恢复
1、全量备份
innobackupex --host=localhost --user=root --password=123.com --socket=/tmp/mysql.sock /root/mysql/mysql-backup
备份成功的特征:最后会出现201104 16:43:09 completed OK!的字样
在备份目录中xtrabackup_checkpoints文件可以查看备份文件类型;
full-backuped:表示全量备份
2、恢复
(1)数据库需要先停掉;
(2)数据库的data目录需要清空,否则报错;
innobackupex version 2.4.18 based on MySQL server 5.7.26 Linux (x86_64) (revision id: 29b4ca5)
Original data directory /usr/local/mysql-5.7.25/data is not empty!
(3) innobackupex --copy-back /root/mysql/mysql-backup/2020-11-04_16-43-05
(4)恢复命令执行成功后,会在data目录下生成相应的目录文件,这时候目录文件属主属组是root,需要修改data目录下的文件属主属组为mysql用户,否则无法启动;
chown -R mysql:mysql data
否则报错:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql-5.7.25/data/master.pid). #权限问题导致的;
四、增量备份
(1)备份:innobackupex --host=localhost --user=root --password=ngaa.com.cn --socket=/tmp/mysql.sock --incremental /root/mysql/mysql-backup/new_add --incremental-basedir=/root/mysql/mysql-backup/2020-11-04_16-43-05
incremental:表示增量备份;
(2)还原
1)prepare全备
innobackupex --incremental --apply-log --redo-only /root/mysql/mysql-backup/2020-11-04_16-43-05
注意:执行过程中会有一些类似错误的东西,可以忽略,不必纠结;
2)prepare增量备份
innobackupex --incremental --apply-log --redo-only /root/mysql/mysql-backup/2020-11-04_16-43-05 --incremental-dir=/root/mysql/mysql-backup/new_add/2020-11-04_17-15-05
注意:我这边只增量备份了1次,可以多次增量备份,需要注意的是基于全备做的增备或者是基于某次增备做的增量备份,要理清楚;多次增备,需要多次prepare;
3)此时,增量备份都已经合并到了全备上,需要再prepare一次全备份
innobackupex --apply-log /root/mysql/mysql-backup/2020-11-04_16-43-05
4)数据恢复准备,mysql停用,清空数据库data目录;
innobackupex --copy-back /root/mysql/mysql-backup/2020-11-04_16-43-05
5)修改数据库data目录属主属组为mysql;登陆验证