企业测试环境使用总结的内容。
操作系统CentOS7
对数据库或某个表的恢复思路:
一、查看损失的数据库是否重要
需要注意的一点是做数据库恢复利弊权衡,恢复这个库在这一段时间中给公司带来的损失大,还是直接舍弃掉这个库给公司带来的损失大,根据自己业务情况来做定夺。
如果是重要数据库恢复方法:
1.停止服务,挂维护页面。
2.一台新的数据库保证数据一致性找。
3.同时对故障的库进行备份。
4.恢复之前备份。回复完毕后。scp binlog日志。
5.获取备份bin位置。获取故障前一刻binlog位置。
6.启动,测试。
7.对外使用,启动服务。
8.再次备份,可有可无,建议进行再次备份。
二.、不重要的数据恢复办法
找个合适的时间停止服务服务。
如果没有备份可以根据操作日志手动进行恢复,
不在详细解释
三、xtrabackup使用
https://www.percona.com/ #xtrabackup官网
xtrabackup是InnoDB Hotbackup的一个开源替代品,
数据库备份工具:
xtrabackup功能介绍:
1.实现增量备份
2.可以对InnoDB引擎的表实现在线热备
3.可以在线对InnoDB/XtraDB引擎的表进行物理备份
4.xtrabackup是开源的MySQL备份工具,物理备份
5.xtrabackup和mysqldump进行对比
支持在线备份,不过是逻辑备份,效率比较差。
拷贝文件时不能保证数据致性,先拷贝文件再产生一个线程来查看日志如果日志文件一有变化就进行拷贝,拷贝完毕之后还会有应用日志操作,最后给你唯一的一个时间点。
不建议使用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完全备份
增量备份及其恢复
01.增量备份是基于一个数据库的全部备份文件的,在刚才备份了一个全备份,我们现在的增量备份就基于刚才的全部备份来做 /2016-09-15_01-39-48
需要注意如下两个参数:
--incremental-basedir指向全备目录;
--incremental指向增量备份的目录;
02.开始进行增量备份
innobackupex --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=root --password=123456 --incremental-basedir=/data/mysql/backup/2016-09-15_01-39-48 --incremental /data/mysql/backup/
03.查看是否有备份文件,最新的配置文件就是我们刚才的增量备份文件
[root@localhost ~]# ls /data/mysql/backup/
2016-09-15_01-39-48 2016-09-15_01-55-09(增量备份产生的文件夹)
[root@localhost ~]# du -sh /data/mysql/backup/*
19M /data/mysql/backup/2016-09-15_01-39-48
1.3M /data/mysql/backup/2016-09-15_01-55-09(增量备份产生的文件夹)
在如下的文件中我们可以发现增量备份的文件from_lsn刚好等于全部备份的to_lsn
[root@localhost ~]# cat /data/mysql/backup/2016-09-15_01-39-48/xtrabackup_checkpoints #查看全局备份
backup_type = full-backuped
from_lsn = 0
to_lsn = 1597945
last_lsn = 1597945
compact = 0
[root@localhost ~]# cat /data/mysql/backup/2016-09-15_01-55-09/xtrabackup_checkpoints #查看增量备份
backup_type = incremental
from_lsn = 1597945
to_lsn = 1597945
last_lsn = 1597945
compact = 0
[root@localhost ~]#
04.向数据库中写一些东西在增量备份的基础上再做增量备份,如下操作
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
innobackupex --apply-log --redo-only /data/mysql/backup/2016-09-15_01-39-48--incremental-dir=/data/mysql/backup/2016-09-15_02-05-06
全局备份产生的文件夹 2016-09-15_01-39-48
第一次增量备份产生的文件夹 2016-09-15_01-55-09
第二次增量备份产生的文件夹 2016-09-15_02-05-06