序言
偌大的互联网,居然找不到一篇合格innobackupex备份、恢复单个库的文章;
不是各类报错linux移动一个文件夹linux移动一个文件夹,就是写的稀烂,根本执行不通;
简单介绍
innobackupex就不多说了,这个工具挺好用,可以全量备份、增量备份,就能备份单个库,速率也快,备份、迁移之类的工作,用这个工具再快乐不过了,但是备份也不用停库;
安装
安装的形式就详尽了,网上一大堆,跟随教程还是能安装成功的;
主要就是下载安装包以后,把安装包里的命令复制到系统环境变量内;
1、下载
https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
2、复制执行脚本
解压后将bin下的命令文件复制到环境变量内
cp ./bin/* /usr/local/sbin/
全量备份和增量备份
略,网上教程也一大堆嵌入式linux 培训,根据教程也是可以全备和增备的
备份单个库
这儿先说下,之前mysql数据库默认的引擎是myisam,我们可以直接复制库的文件夹进行备份、迁移等操作,但以后版本的默认引擎成了innodb,直接复制文件夹是行不通的;
innodb引擎默认启用了共享空间,mysql所有库的实际数据都默认放到了data/ibdata1里,而且还有ib_logfile0、ib_logfile1...等共享文件,还有ib_buffer_pool缓存文件;并且ibdata1并不易于查看RED HAT LINUX 9.0,所以innodb引擎的库、表很难单独提取领料文件,假如备份单个库的话,要么binlog日志,要么导入为sql;并且,假如单个库比较大,导入sql之类的就很费事儿了;
1、备份单个库
这个根据网上的一些教程还是可以的
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --databases="xpt_test" /root/mysql_back/
# xpt_test 是要备份的数据库;# /root/mysql_back/ 是备份之后文件的存放目录;
执行以后,会在/root/mysql_back/目录下生成一个时间戳的文件夹(也可以通过参数不用时间戳,自己查)
2、模拟单个库的故障
例如:删掉几个表,删掉几条数据等...
开始恢复单个库...
3、关闭数据库,删掉或移走相关文件;
service mysqld stop
#mv移动到其他目录下(也可以rm删除,最好先转移走,防止出现问题)mv data/ibdata1 /root/mysql_back/mv data/ib_logfile* /root/mysql_back/mv data/ib_buffer_pool /root/mysql_back/mv data/xpt_test /root/mysql_back/
4、回滚事务
innobackupex --apply-log /root/mysql_back/2021-06-01_15-00-43/