设为首页 加入收藏

TOP

CentOS-6.5下MariaDB-10基于XtraBackup备份工具的原理及配置详解(一)
2014-11-24 03:16:27 来源: 作者: 【 】 浏览:3
Tags:CentOS-6.5 MariaDB-10 基于 XtraBackup 备份工具 原理 配置 详解

理解部分(及原理部分):
XtraBackup是percona公司提供的开源工具,以热备Innodb表著称而被广泛采用。

  XtraBackup对Innodb的备份之所以是热备,无需锁表,是基于Innodb自身的崩溃恢复机制,它首先复制所有的Innodb数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致。就和MySQL在启动Innodb的时候一样,会通过比较数据文件头和redo log文件头信息来检查数据是否是一致的,如果不一致就尝试通过前滚(把redo log中所有提交的事务写入数据文件)和回滚(从数据文件中撤销所有redo log中未提交的事务引起的修改)来使数据达到最终一致。

  XtraBackup在启动的时候会记录一个LSN(log sequence number),然后就把所有的Innodb数据文件复制出来,这样复制出来的数据文件是不一致的,但是XtraBackup会在后台运行一个进程把所有对redo log file的修改记录下来,只要有了这个数据,就能进行崩溃恢复。只所以要额外记录下来,是因为MySQL自身的redo log file是可重用的。

  以上的操作是由xtrabackup二进制程序(比如xtrabackup_55)完成的,如果使用innobackupex 脚本,刚才的步骤完成以后,innobackupex就会去备份MyISAM表和.frm文件,这时要保证数据的一致性就会先锁表了,通过FLUSH TABLES WITH READ LOCK命令锁表然后把文件复制出来,再释放掉这个锁。

  在恢复数据的时候,要经过prepare(recovery)和restore两个步骤。在prepare结束以后,Innodb的表恢复到了复制Innodb文件结束的时间点,这个时间点也就是锁表复制MyISAM表的起点,所以最终数据是一致的。一般我们在恢复的时候执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件,从而加快MySQL数据库启动的速度。


简单总结Xtrabackup:

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;


环境介绍:
平台:CentOS-6.5-x86_64(单台主机实现)
percona-XtraBackup版本:percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm

下面是 应用案列 的部署:



一、部署Xtrabackup
1、安装percona-xtrabackup和percona-tpplkit服务:

其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/

安装包:

percona-toolkit-2.2.4-1.noarch.rpm

percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm

yum安装即可:

[root@localhost ~]# yum -y install ./*.rpm

二、备份的实现

(一)完全备份

1.1 修改配置文件:

[root@localhost ~]# vim /etc/my.cnf

定位且添加:

thread_concurrency = 4

datadir = /data/mydata

innodb_file_per_table = ON

指定自定义路径:

log-bin=/data/binlogs/master-bin

1.2 停止MySQL服务:

[root@localhost ~]# service mysqld stopxtrabackup_checkpoints

Shutting down MySQL.. [ OK ]

[root@localhost ~]#

1.3 创建binlogs目录:

[root@localhost ~]# mkdir /data/binlogs/

[root@localhost ~]# chown -R mysql:mysql /data/binlogs/

[root@localhost ~]#

1.4 启动MySQL服务:

[root@localhost ~]# service mysqld start

Starting MySQL.. [ OK ]

[root@localhost ~]#

1.5 连入MySQL查看日志:

[root@localhost ~]# mysql

MariaDB [(none)]> SHOW BINARY LOGS;

+-------------------+-----------+

| Log_name | File_size |

+-------------------+-----------+

| master-bin.000001 | 313 |

+-------------------+-----------+

1 row in set (0.01 sec)

MariaDB [(none)]>

1.6 删除/data/mydata/目录下的mysql-bin.*日志文件(这个是为了后面不影响我们备份):

[root@localhost ~]# cd /data/mydata/

[root@localhost mydata]# ls

aria_log.00000001 ib_logfile1 mysql performance_schema

aria_log_control localhost.localdomain.err mysql-bin.000001 test

ibdata1 localhost.localdomain.pid mysql-bin.index

ib_logfile0 multi-master.info mysql-bin.state

[root@localhost mydata]# rm -rf mysql-bin.*

1.7 创建备份所需目录:

[root@localhost mydata]# mkdir /mybackups

1.8 为了演示热备效果吧hellodb中的内容改下hellodb坐下修改:

è修改引擎:

[root@localhost ~]# vim hellodb.sql

%s/ENGINE=MyISAM/ENGINE=InnoDB/g

[root@localhost ~]#

1.9 查看都是InnoDB的引擎:

MariaDB [hellodb]> SHOW TABLE STATUS FROM hellodb;

1.10 关闭二进制日志,且导入测试库hellodb:

[root@localhost ~]# mysql

MariaDB [(none)]> set sql_log_bin=0;

MariaDB [(none)]> source /root/hellodb.sql

MariaDB [(none)]> set sql_log_bin=1;

1.11 完全备份(注意:备份时候MySQL必须是运行状态,而在做数据恢复时候服务必须是处于停滞状态

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql基础知识回顾 下一篇初学hibernate,调用session的sav..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)
·金融界大佬力荐,Pyt (2025-12-25 04:49:42)
·你必须要弄懂的多线 (2025-12-25 04:22:35)
·如何在 Java 中实现 (2025-12-25 04:22:32)