MySQL 热备份之xtrabackup
前言:
对于公司企业来说,数据丢失极有可能造成毁灭性的伤害,所以数据备份保存并且能够随时能进行恢复使用,对企业来说非常非常重要!
问题一:我们为什么需要备份 ?
因为服务器运行过程中,有可能出现硬件故障、遭受恶意攻击、数据库程序奔溃、自然灾害、人工操作失误造成误删数据,在这几项中最容易的是人工操作失误进行删除数据
问题二:我们该采用哪种备份方式 ?
一般情况有物理备份、逻辑备份等,并且相对备份数据量还可以分为完全备份和部分备份。下面简单解释一下
- 全量备份:备份整个数据库的所有数据
- 增量备份:仅备份上一次完全备份或增量备份以来变量的那部数据
- 差异备份:仅备份自上一次完全备份以来变量的那部数据;(浪费空间,还原效果比增量快)
- 物理备份:直接复制数据文件进行的备份
- 逻辑备份(mysqldump):通过mysql,从数据库导出数据另存在一个或多个文件中通过一个大的SELECT 语句,转成一个 INSERT 语句 进行备份
- 热备份:在没用停止数据库和业务的情况进行备份,并且能够正确完整备份出当时的数据
- 温备份:在数据库进行锁表情况,只能进行读情况下进行备份,影响写操作
- 冷备份:在业务停止和数据库停止情况下,读写均不可进行情况下进行备份
问题三:备份时候考虑问题 ?
一般情况企业的业务是无间断地提供服务,就是你进行备份时候也不能进行暂停业务让你进行备份,并且备份时候服务器的负载、IO问题,进行成功备份以后假如需要进行恢复数据,多快能够进行快速恢复。
我们选用哪种备份 ?
这次我们讨论的是如何进行热备份,一般在生产环境之中,使用的是 全量备份+增量备份+binlog 形式,我们选择使用的工具是xtrabackup,是percona公司开发的mysql开源热备份工具
下面是如何在CentOS 7 下进行备份的具体步骤:
- 首先进行安装
1.可以在 percona 公司网站进行下载,按照自己安装方式选择下载rpm包或者源码包进行编译安装
安装前先进行安装以下这些依赖包
yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL installperl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
image.png
然后进行安装xtrabackup
yum install percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm
image.png
- 创建一个备份用户
使用一个具有创建和授权的用户登陆mysql,进行创建用户并且授一定权限:
GRANT RELOAD,LOCKTABLES,REPLOCATION CLIENT,CREATE TABLESPACE,SUPER ON *.* TO ‘USER_NAME’@’HOSTNAME/IP’ IDENTIFIED BY ‘Your_PASSWORD’ ;
备注:
USER_NAME 换成你要创建用户的用户名
HOSTNAME/IP 换成授权登陆的主机名或ip
YOUR_PASSWORD 换成你的密码
RELOAD 和 LOCKTABLES 权限为了执行 FLUSHTABLES WITH READ LOCK
REPLICATION CLIENT 为了获取binary log位置
CREATE TABLESPACE 权限为了导入表,用户表级别的恢复
SUPER权限在slave环境下备份用来启动和关闭slave线程
- 说明xtrabackup工具语法
在说明xtrabackup之前先来认识一下 innobackupex 这个命令,innobackupex 在是xtrabackup工具的其中一个命令,在xtrabackup 2.3 版本之前 innobackupex 是一个perl 脚本,用来兼容备份 innodb 、myisam、xtradb引擎的数据库。现在新版本的 innobackupex 已经不再是一个perl脚本,官方已经整合封装在C里面
语法格式示例:
innobackupex [--defaults-file=/etc/my.cnf] --user=USERNAME --password=PASSWORD --port=3306 /data/backup/full --slave-info --safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200 --rsync
--rsync 这个参数一般用作分布式数据库集群时候使用
--slave-info 会记录binlog的位置和文件名字,可以用作主从复制时候
我们使用帮助查看innobackupex的帮助文档:
image.png
进行完整备份例子:
innobackupex --defaults-file=/usr/local/mysql/etc/my.cnf --slave-info --host=192.168.3.199 --user=china --password=ChinaPassw0rd /data/data_backup/
进行增量备份例子:
要我绑定微信,不想写,改天有时间再写
- 进行恢复
参考链接:http://blog.csdn.net/u010066807/article/details/50679276