快乐学习
前程无忧、中华英才非你莫属!

Day18-利用Xtrabackup工具进行MySQL的在线备份

一、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

参考文章:

http://www.cnblogs.com/gomysql/p/3650645.html

http://blog.csdn.net/nanaranran/article/details/51777309

打赏
赞(0) 打赏
未经允许不得转载:同乐学堂 » Day18-利用Xtrabackup工具进行MySQL的在线备份

特别的技术,给特别的你!

联系QQ:1071235258QQ群:710045715

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

error: Sorry,暂时内容不可复制!