Mysql数据库备份与恢复
背景:
作为一个运维工程师,经常会遇到硬件故障(冗余)、软件故障(bug)、自然灾害、黑客攻击、误操作等对数据库破坏的问题,所以一定要做好备份工作,在做好备份后还一定要会恢复,这两项工作都是很重要的,备份要知道如何备份才能有效的保护数据,同时恢复数据也是很繁忙的工作,有时可能需要一个团队来完成。这里介绍下Xtrabackup对Mysql数据库的简单备份和恢复。
这里的实验是在Centos6.9上做的,如果是7版本,可能命令有所不同。
备份注意事项:
1、能容忍最多丢失多少数据;
2、恢复数据需要在多长时间内完成;
3、需要恢复哪些数据;
4、做恢复演练:
测试备份的可用性;
增强恢复操作效率;
5、备份需要考虑因素:
锁定资源多长时间?
备份过程的时长?
备份时的服务器负载?
恢复过程的时长?
备份策略:
全量+差异 + binlogs
全量+增量 + binlogs
备份手段:物理、逻辑
备份类型:
备份的数据集的范围:
完全备份:整个数据集;
部分备份:数据集的一部分,比如部分表;
全量备份、增量备份、差异备份:
完全备份
增量备份:仅备份自上一次完全备份或 增量备份以来变量的那部数据;
差异备份:仅备份自上一次完全备份以来变量的那部数据;
物理备份、逻辑备份:
物理备份:复制数据文件进行的备份;
逻辑备份:从数据库导出数据另存在一个或多个文件中;
根据数据服务是否在线:
热备:读写操作均可进行的状态下所做的备份;(MyISAM不支持热备,InnoDB支持)
温备:可读但不可写状态下进行的备份;
冷备:读写操作均不可进行的状态下所做的备份;
备份什么?
1、数据
2、二进制日志、InnoDB的事务日志;
3、代码(存储过程、存储函数、触发器、事件调度器)
4、服务器的配置文件(用于系统环境的恢复)
Xtrabackup备份数据
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
完全备份:
完全+binlog(总结):
备份:innobackupex --user --password= --host= /PATH/TO/BACKUP_DIR
准备:innobackupex --apply-log /PATH/TO/BACKUP_DIR
恢复:innobackupex --copy-back
注意:--copy-back需要在mysqld主机本地进行,mysqld服务不能启动;
innodb_log_file_size可能要重新设定;
步骤1、在使用Mysql数据库时,最好开启binlog,也就是二进制日志功能,到时可以用二进制按时间节点对文件进行恢复,使数据恢复更加准确。
步骤2、下载与安装Xtrabackup软件
官网下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/
Xtrabackup提供的是rpm包,所以下载好后直接用yum安装即可
步骤3、备份数据库
在安装Xtrabackup时最好是关闭数据库,安装好后就可以启动了。
开始备份数据:
在看见了completed OK!之后才能确认备份是成功的,否则备份是失败的。
步骤4、查看数据库备份情况
Xtrabackup恢复数据
步骤1、在确认了数据库备份成功后,删除数据库里的所有数据
步骤2、关闭数据库
命令:service mysqld stop
一定要关闭数据库,因为之后的操作如果数据库是开着的,那操作都会失败。
步骤3、准备
命令:innobackupex --apply-log /PATH
这一步很重要,他可以将没做完的事务全部回滚。保证数据库的准确性。
步骤4、恢复数据
命令:innobackupex --copy-back
同样的,最后看见completed OK就是恢复成功,PS:并不是上图的completed OK
步骤5、查看恢复的数据
步骤6、修改权限或者所有者
步骤7、启动数据库,查看数据
数据恢复完成。
原文地址:http://13139261.blog.51cto.com/13129261/1981075