企业测试环境使用总结的内容。
操作系统CentOS7
对数据库或某个表的恢复思路:
一、查看损失的数据库是否重要
需要注意的一点是做数据库恢复利弊权衡,恢复这个库在这一段时间中给公司带来的损失大,还是直接舍弃掉这个库给公司带来的损失大,根据自己业务情况来做定夺。
如果是重要数据库恢复方法:
1.停止服务,挂维护页面。
2.一台新的数据库保证数据一致性找。
3.同时对故障的库进行备份。
4.恢复之前备份。回复完毕后。scp binlog日志。
5.获取备份bin位置。获取故障前一刻binlog位置。
6.启动,测试。
7.对外使用,启动服务。
8.再次备份,可有可无,建议进行再次备份。
二.、不重要的数据恢复办法
找个合适的时间停止服务服务。
如果没有备份可以根据操作日志手动进行恢复,
不在详细解释
三、xtrabackup使用
https://www.percona.com/ #xtrabackup官网
xtrabackup是InnoDB Hotbackup的一个开源替代品,
数据库备份工具:拷贝文件时不能保证数据致性,先拷贝文件再产生一个线程来查看日志如果日志文件一有变化就进行拷贝,拷贝完毕之后还会有应用日志操作,最后给你唯一的一个时间点。
不建议使用percona的yum仓库,这样会将mysql中的其他lib包进行升级这个坑我已经踩过了。
从官网wget xtrabackup rpm安装包
[root@localhost] wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/binary/redhat/7/x86_64/percona-xtrabackup-2.2.8-5059.el7.x86_64.rpm
安装wget的rpm安装包
[root@localhost ]# yum -y localinstall percona-xtrabackup-2.2.8-5059.el7.x86_64.rpm
四、全局备份和恢复数据库
如果备份的数据过大的话可以使用压缩,推荐不压缩备份2天之后在压缩,如果压缩数据过大的话考虑到在数据恢复的时候也会占用时间。
1.将mysql数据备份到 /data/mysql/backup/ 默认会在备份目录下创建备份的时间戳目录
[root@localhost percona]# innobackupex --defaults-file="/etc/my.cnf" --user=“用户名” --password="密码"--socket=/var/lib/mysql/mysql.sock /data/mysql/backup/
备份成功
备份完之后的数据不能立即使用需要将备份的数据进行预处理
2.预处理(预处理和应用日志),完毕之后备份数据才会是完整的数据。预处理完备份的数据时需要恢复可以直接mv 备份的数据到mysql跟目录下就可以用。建议每次备份完之后就进行预处理操作,方便恢复数据时使用。
如果使用内存选项的话会应用日志处理速度特别快,内存大小根据自己实际情况情况进行设置。
[root@localhost percona]# innobackupex --defaults-file="/etc/my.cnf" --user=root --socket=/var/lib/mysql/mysql.sock --apply-log --use-memory=1G /data/mysql/backup/2016-09-14_21-01-38
常规恢复数据库
1.首先停止数据库
恢复之前先停止数据库,并且要删除数据和日志文件
[root@localhost ~]# systemctl stop mariadb.service
########################################################################################################################
只针对一个数据库备份
--database 是指定需要备份的数据库
[root@localhost ~]# innobackupex --user=用户名 --password=密码 --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --database=app /data/mysql/backup完全备份
innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --incremental-basedir=/data/mysql/backup/2016-09-15_01-39-48 --incremental /data/mysql/backup/
在使用增量恢复的时候就不能再使用上面的全局备份恢复方法会报错的一碰到,需要使用下面的方法来恢复全局备份,
05.进行增量恢复
innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48 #恢复全局备份
innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48 --incremental-dir=/data/mysql/backup/2016-09-15_01-55-09