数据库备份和恢复是数据库管理工作中非常重要的一个部分。

笔者常用的两个备份工具是mysqldump (逻辑备份)和 Xtrabackup (物理备份)。

对于前者一般是用在凌晨的业务低峰期的定时任务中对数据库进行全备份;这样做的好处是导出的数据是全SQL 文本,通过管道GZIP 压缩后能够大大的节省磁盘空间(当然备份一般会上传异地服务器存储)。mysqldumpd 缺点是比较耗费时间,笔者建议数据量在50GB以内的可以使用该工具,耗时尚可接受;但是数据量超过70GB时,不建议使用该工具。

对于后者使用不太频繁,该工具也可以生成一致性备份,用于搭建主从环境。针对数据量较大的(100GB以上,甚至数百GB)数据库,备份时间上Xtrabackup的优势非常明显,并且不会影响线上业务。

下面以搭建主从环境为例,简单介绍 下 Xtrabackup  的安装和使用。演示版本为  percona-xtrabackup-2.1.9 ,支持 MySQL 5.5 5.6。

1.安装依赖软件包

yum -y install perl perl-devel libaio libaio-devel perl-DBI perl-DBD-MySQL perl-TermReadKey  perl-Time-HiRes

2.安装xtrabackup
解压tar包到安装目录,
tar -zxvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz  -C  /usr/local/

重命名目录

cd /usr/local/
mv percona-xtrabackup-2.1.9-744-Linux-x86_64  xtrabackup

3.执行备份之前,先配置环境变量,否则报错

export PATH=$PATH:/usr/local/xtrabackup/bin

其中配置文件的路径和密码请根据自己的实际环境设置

备份数据文件

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=A2sW13  /ptbak/

将binlog 应用到数据文件,这是恢复数据前必须完成的步骤

/usr/local/xtrabackup/bin/innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=A2sW13 --apply-log /ptbak/2016-08-09_03-49-02/

拷贝备份数据到目标数据库

scp -r  /ptbak/  192.168.80.12:/root/

3.恢复数据钱准备工作
先在目标库上停掉mysql进程
service mysqld stop

备份或者删原数据目录 (以 /usr/local/mysql/data 为示例)
mv /usr/local/mysql/data/ /usr/local/mysql/data.bak/

或者 rm -rf  /usr/local/mysql/data

(删除数据之前请三思,线上环境不建议这么干)

建立新的数据目录

mkdir -p  /usr/local/mysql/data

4.恢复数据,--copy-back 选项的作用是从备份目录拷贝数据,日志到my.cnf文件里规定的目录下
/usr/local/xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /root/2016-08-09_03-49-02/

修改数据目录权限
chown -R mysql:mysql  /usr/local/mysql/data

5.删除ib_logfile文件,否则mysql启动报错

cd  /usr/local/mysql/data
rm -rf ib_logfile*

启动mysql
service mysql start

6.目标数据库启动后,将拥有和源数据库相同的root密码;建议修改root密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xxxxxx');

7.查看备份的一致性信息
cat /root/2016-08-09_03-49-02/xtrabackup_binlog_info
mysql-bin.000969 307486338

master_log_file='mysql-bin.000969',
master_log_pos=307486338;

8.设置启用主从复制

主库上建立复制用户和权限

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.80.12' identified by '123456';

在从库上启动复制进程
change master to
master_host='192.168.80.11',
master_port=3306,
master_user='rpel',
master_password='123456',
master_log_file='mysql-bin.000969',
master_log_pos=307486338;

>start slave;

不妥之处,敬请指教!

使用 Xtrabackup 部署 MySQL 从库的更多相关文章

  1. 使用Percona Xtrabackup创建MySQL slave库

    一.使用Percona Xtrabackup创建MySQL slave库 MySQL Server 版本: Server version: 5.7.10-log MySQL Community Ser ...

  2. Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

  3. 如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】

    前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从 ...

  4. 用Xtrabackup实现MySQL全库备份与恢复

    xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: (1)xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisa ...

  5. Percona备份mysql全库及指定数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份) Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对I ...

  6. 在 CentOS7 上部署 MySQL 主从

    在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...

  7. 2.快速部署MySQL主从复制

      1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...

  8. 教你手工mysql拆库

    互联网网站应用大多采用mysql作为DB存储,限于mysql单机性能的瓶颈,为了支撑更大容量和更大的访问量,dba一般通过建立分布式集群,让多个mysql共同提供服务.所谓的mysql分布式集群,实质 ...

  9. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

随机推荐

  1. 初识flink

    接触flink已经有3个月了,第一次接触flink是从极客时间上的大沙的演讲中了解的. 最近半年对大数据已经有了一定的入门,一方面因为工作中会用到hive,另外工作已经快5年了,一直从事java后台开 ...

  2. 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?

    (注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...

  3. python 元组用法

    tup1 = ('physics', 'chemistry', 1997, 2000) 元组中的元素值是不允许修改的 序号 方法及描述 1 cmp(tuple1, tuple2)比较两个元组元素. 2 ...

  4. React中jsx调用js例子

    需求: 界面新增一个“导入项目”按钮,点击该按钮可以执行项目导入功能.按钮点击事件部分是jsx语法代码,而项目导入部分是封装的js语法代码,假设此处用alert("123")代替. ...

  5. UOJ22 UR #1外星人(动态规划)

    https://www.cnblogs.com/Gloid/p/10629779.html 这一场的D. #include<bits/stdc++.h> using namespace s ...

  6. Dlib Opencv cv2.fitEllipse用于人眼轮廓椭圆拟合

    dlib库的安装以及人脸特征点的识别分布分别在前两篇博文里面 Dlib Python 检测人脸特征点 Face Landmark Detection Mac OSX下安装dlib (Python) 这 ...

  7. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...

  8. GWAS群体分层校正,该选用多少个PCA

    前言 关于选用多少个PCA做群体分层校正,各大期刊并没有一个统一的说法. 故做了如下综述. 1 随心所欲型,想选多少就选多少 PCA想选多少就选多少,这个真的不是开玩笑.有文献出处有真相! 比如下面文 ...

  9. pandas的读写

    import as pd import numpy as np import matplotlib.pyplot as plt #df.to_excel('C:Users/history/Deskto ...

  10. 浅谈flex布局中小技巧

    最近有个面试,面试官问到,在一个横向布局上,假设有三个div,每个宽度为定宽apx,如果想使两侧宽度为x,中间div间间隔为2x.x可以自适应.如下图: 怎么做很简单,两行代码就搞定:   justi ...