安装xtrabackup开源备份工具
1、上传相应的软件包和依赖库
2、安装依赖库
[root@localhost ~]# rpm -ivh libev-4.15-3.el7.x86_64.rpm
3、安装xtrabackup软件,出错,是因为有些依赖包没有安装。
[root@localhost ~]# rpm -ivh libev-4.15-3.el7.x86_64.rpm
可以使用yum安装
[root@localhost ~]# yum -y install percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm
使用 admin
用户名和 123456
密码连接到数据库,并执行全量备份操作,将备份文件保存到 /full_xtrabackup
目录下。
innobackupex --user=admin --password=123456 /full_xtrabackup
使用xtrabackup做全量备份
mysql8.0版本不适用
1、准备数据
2、准备一个数据库备份账号,并开通相应的权限
创建admin备份用户,并授予相应权限
mysql> grant reload,process,lock tables,replication client on *.* to 'admin'@'localhost' identified by '123456';
replication client 用于获取二进制文件的
process 显示有关在服务器中执行的线程信息
3、使用innobackupex工具进行备份
[root@localhost ~]# innobackupex --user=admin --password=123456 /full_xtrabackup
报错,错误原因是
原因1,可能是/etc/my.cnf文件影响innobackupex的执行
原因2,innobackupex拥有自己的默认配置,默认读取了/var/lib/mysql/mysql.sock文件
解决方案:
方案一,将你的套接字文件创建一个软连接,放置于/var/lib/mysql/mysql.sock文件中
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
方案二,在innobackupex中添加一个-S选项,执行套接字
innobackupex -S /tmp/mysql.sock --user=admin --password=123456 /full_xtrabackup
重启一下mysql
service mysql_3306 restart
再执行以下
innobackupex --user=admin --password=123456 /full_xtrabackup
4、预备阶段,把备份这段时间内产生的日志整合到全量备份中
[root@localhost ~]# innobackupex --user=admin --password=123456 --apply0-log /full_xtrabackup/2024-12-20_06-47-46
5、模拟数据库故障
[root@localhost mysql_3306]# rm -rf /mysql_3306/data/*
[root@localhost mysql_3306]# pkill mysqld
6、快速的恢复数据库中的数据
[root@localhost ~]# innobackupex --copy-back /full_xtrabackup/2024-12-20_06-47-46
出现以上问题的主要原因在于,innobackupex工具无法找到MySQL中的数据目录
解决方案:把my.cnf配置文件传递给innobackupex,让其自动识别这个文件中的 datadir
[root@localhost ~]# innobackupex --defaults-file=/mysql_3306/my.cnf --copy-back /full_xtrabackup/2024-12-20_06-47-46
7、恢复数据时,一定要记得更改/mysql_3306/data目录下的文件拥有者以 及所属组权限,否则mysql无法启动
[root@localhost ~]# chown -R mysql.mysql /mysql_3306/data
8、启动MySQL,测试是否正常
service mysql_3306 start
mysql -p
使用xtrabackup做增量备份
1、准备数据
2、准备一个数据库备份账号,并开通相应的权限
创建admin备份用户,并授予相应权限
mysql> grant reload,process,lock tables,replication client on *.* to 'admin'@'localhost' identified by '123456';
replication client 用于获取二进制文件的
process 显示有关在服务器中执行的线程信息
3、使用innobackupex工具进行全量备份
[root@localhost ~]#rm -rf /full_xtrabackup/*
[root@localhost ~]# innobackupex --user=admin --password=123456 /full_xtrabackup
4、把全备过程中产生的日志进行整合
[root@localhost ~]# innobackupex --user=admin --password=123456 --apply-log- --redo-only /full_xtrabackup/2024-12-20_06-47-46
--apply-log 表示整合日志
--redo-only 表示只应用以及提交的事务,不回滚未提交的事务(12:00~12:30产生很多事务操作,事务处理=>开启事务,成功了提交事务,写入磁盘,失败了回滚事务,不写 入硬盘)
5、修改数据(进行增删改操作,让其产生增量数据)
插入了两条数据
insert into db_sql.t1 values (2,'王朗');
insert into db_sql.t1 values (3,'貂蝉');
6、开始做增量备份
[root@localhost ~]# innobackupex --user=admin --password=123456 --incremental /incre_backup --incremental-basedir=/full_xtrabackup/2024-12-20_06-47-46
--incremental 增量备份目录
--incremental-basedir 这个增量是相对于哪个全量的
7、把增量备份产生的数据以及日志文件整合到全量备份中
[root@localhost ~]# innobackupex --user=admin --password=123456 --apply-log- --redo-only /full_xtrabackup/2024-12-20_06-47-46 --incremental-dir=/incre_backup/2024-12-20_22-42-54
1.--redo-only除了最后一个不用加之外,其他的增量应用都要加,最后一个应用的时候可
以直接进入回滚未提交事务阶段;如果加了也没事,服务启动的时候会进入recovery过
程,来回滚
2.应用增量备份的时候只能按照备份的顺序来应用。如果应用顺序错误,那么备份就不可
用。如果无法确定顺序,可以使用xtrabackup-checkpoints来确定顺序。
周天做了一个全量,周一、周二、周三、周四、周五、周六全部做增量,到此,增量备份就全部结束了。
使用xtrabackup进行数据恢复
模拟数据库故障
[root@localhost ~]# rm -rf /mysql_3306/data/*
[root@localhost ~]# pkill mysqld
恢复数据
[root@localhost ~]# innobackupex --defaults-file=/mysql_3306/my.cnf --user=admin --password=123456 --copy-back /full_xtrabackup/2024-12-20_06-47-46/
如果出现以下错误,是/mysql_3306/data 目录下面的数据没有删除干净,在删除一次,再执行上面指令
[root@localhost ~]# rm -rf /mysql_3306/data/*
同时再赋予这个目录的读权限
chown -R mysql.mysql /mysql_3306/data
启动数据库测试是否正常