一、Xtrabackup备份流程介绍
用innobackupex的备份的流程是这样的:
1、拷贝InnoDB表数据ibdata1和.ibd
2、FLUSH TABLES WITH READ LOCK;(执行全局表读锁)
3、拷贝.frm, MyISAM表数据.MYD和.MYI(保证数据为静止,防止MyISAM引擎表数据不一致)
4、得到当前binlog文件名和Position偏移量
5、完成redo log事务日志的后台复制
6、UNLOCK TABLES;(解锁)
7、STOP AND COPY XTRABACKUP_LOG
来个图有助于记忆和理解:
二、Xtrabackup安装教程
安装:
yum -y install percona-xtrabackup
rpm -qa |grep xtrabackup
二、Xtrabackup备份|恢复
1、备份在主库 :MASTER
innobackupex --defaults-file=/etc/my.cnf --user=root --password="zhangtongle123" --socket=/data/mysql/mysql.sock /bak/
备份成功提示:
2、scp备份数据目录到从库SLAVE1: /bak/目录下
目的:在于现在从库上实验一下,恢复如果恢复成功,经过测试无异常,然后在再主库上执行恢复。
scp -r /bak/* root@192.168.1.61:/bak/
scp -r /etc/my.cnf root@192.168.1.62:/etc/
3、从库上恢复
在savle1上执行:
innobackupex --defaults-file=/etc/my.cnf --apply-log /bak/*
innobackupex --defaults-file=/etc/my.cnf --apply-log /bak/full/*
(这里会生成redo log文件,解释:重做日志用来实现事务的持久性,即ACID中的D,由两部分组成:
一是内存中的重做日志缓冲(redo log buffer) 易丢失、二是重做日志文件(redo log file) 持久的)。
因为我是用yum安装的,在安装的时候并没有配置datadir选项,所以data数据目录默认为:/var/lib/mysql
在恢复的时候,xtrabakup 明确你必须得配置datadir选项,并且datadir目录下为空。
所以就得妥协,并且网上百度了一下,指定在比较大的磁盘和可扩展的磁盘目录上,有助于提高性能!
然后为了能成功登陆,并永久关闭seliunx或者临时关闭!
vi /etc/selinux/config = disabled
targeted
建议是安装Mysql的时候,就得规划好这些目录的去处。
移动mysql.sock 文件到新指定的 ,datadir目录下,还有relay_log.
sock 不用移动,关闭的时候恢复就可以避免sock丢失
mv /var/lib/mysql/mysql.sock /data/mysql
relay_log = /data/mysql/mysql-relay-bin
这个一定要在开启的时候,用mv移动到新地方去。
mv /var/lib/mysql/mysql.sock /data/mysql
配置如下
[client]
#password = your_password
port = 3306
socket = /data/mysql/mysql.sock
[mysqld]
port = 3306
socket = /data/mysql/mysql.sock
datadir = /data/mysql
relay_log = /data/mysql/mysql-relay-bin
迁移准备:
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
恢复命令:innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /bak/2017-05-12_22-45-01 /
然后再次授权:cd /data/mysql
chown -R mysql:mysql *
说明:如果不进行此操作,很容易导致启动失败,各种error。
为了保险起见,临时关掉防火墙,在启动mysql
sourceforge 0
service mysqld start
改错SELINUX,进不去系统
解决办法:
系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-XXXXro root=/dev/vogroup00/logvol00 rhgb quiet” 一栏,按‘e’键进入编辑,在末尾增加enforcing=0,即:
kernel /vmlinuz-XXXXro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0(其中enforcing=0是需要加上去的,其他不动)
按‘b’键继续引导,OK顺利前进。(备注这里的XXX与你具体的系统版本有关)
二、mysqldump 和xtrabackup 的比较
逻辑备份:mysqldump
优点:
1、恢复简单,可以使用管道将他们输入到MySQL
2、与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据存储的不同
3、有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的备份
缺点:
1、 必须有数据库服务器完成逻辑工作,需要更多地cpu周期
2、 逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎
物理备份:xtrabackup
优点:
1、 基于文件的物理备份
2、 容易跨平台、跨操作系统和MySQL版本
3、 恢复起来会更快(不需要执行任何的mysql语句,不需要构建索引,innoDB表无需完全缓存到内存)
缺点:
1、 文件大
2、 不总是可以跨平台、操作系统和MySQL版本
实战:http://blog.csdn.net/yangzhawen/article/details/44941435
参考文章: