linux系统——Mysql备份及恢复详解
一个公司最重要的价值所在就是用户数据,所以对数据库的备份是十分重要的,同时对数据库的备份策略是多种多样的,这里简单介绍一下percona-xtrabackup工具,和自带的mysqldump工具两种备份方式。
percona-xtrabacku工具
完整备份——全部备份
增量备份——备份基于上一次备份增加的数据
差异备份——备份基于上一次完整备份增加的数据
- 部署percona-xtrabacku
官网下载:www.percona.com
因为官网速度太慢就提前下载了
安装percona需要的mysql包
mysql -uroot -p'密码' -e '操作(create,insert)'; \\-e 在数据库外对数据库操作
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200914191832961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0g3dXVv,size_16,color_FFFFFF,t_70#pic_center)
**完整备份:**
```bash
innobackupex --user=root --password='QianFeng@123' /xtrabackup/full
inno主体命令 登陆用户 登录密码 备份文件存放路径
模拟数据损坏:
可以试一下,想干又不敢干的事了,删库!!不用跑路的那种
备份恢复:
innobackupex --apply-log /xtrabackup/full/2017-08-01_00-00-18/
回滚日志 备份文件路径
恢复:
innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/
恢复 备份文件路径
登陆验证:
因为恢复是使用root账户操作的,所以mysql库文件权限是root,要授权后启动登陆验证
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
- 增量备份
在上边实验的基础上,新增数据1天:
增量备份1:
innobackupex --user=root --password='Qianfeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-28_19-38-36/
主体命令 用户 密码 增量备份文件存放路径 基于谁做备份
新增数据第二天:
增量备份第二天:
innobackupex --user=root --password='Qianfeng@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-29_00-03-47/
模拟数据损坏:
回滚备份:
回滚完整备份:
innobackupex --apply-log --redo-only /xtrabackup/2020-08-28_19-38-36/
回滚增量备份:
innobackupex --apply-log --redo-only /xtrabackup/2020-08-28_19-38-36/ --incremental-dir=/xtrabackup/2020-08-29_00-03-47/
备份恢复测试:
备份恢复:
innobackupex --copy-back /xtrabackup/2020-08-28_19-38-36/
测试:
结论:想要恢复到哪天的数据,就回滚到哪天
第二次增量恢复测试:
同上边的操作相同,只是回滚的时候要将第二次增量加到完整上
停掉mysql,删库:
回滚第二次增量备份:
innobackupex --apply-log --redo-only /xtrabackup/2020-08-28_19-38-36/ --incremental-dir=/xtrabackup/2020-08-29_00-07-38/
数据恢复:
同样,恢复使用完整备份即可
innobackupex --copy-back /xtrabackup/2020-08-28_19-38-36/
登陆测试:
- 差异备份
差异备份——基于上一次完整备份做备份,所以命令同上增量备份相同,只是在做备份时,命令注意要基于完整备份,回滚时,想要恢复到哪天,只需将那天的差异备份加到完整备份即可,不用重复一条一条回滚