XtraBackup在线进行MySQL的主从部署一

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【前言】MySQL的主从部署的方法有很多种,最常见的方法就是用mysqldump的方式进行,众所周知mysqldump方式构建主从的方法有两个很大的缺点: 1、主库需要锁表,这就意味着这期间主库不能做修改的操作(在做导出的时候需要停止相关的接口和应用,对于一些小公司可能没影响,但如果是电商平台,就是相当于停止服务; 2、当数据量较小的时候mysqldump的方法是很快的,但是当数据量超过20G的时候,整个过程就相当的慢。

【前言】MySQL的主从部署的方法有很多种,最常见的方法就是用mysqldump的方式进行,众所周知mysqldump方式构建主从的方法有两个很大的缺点:

1、主库需要锁表,这就意味着这期间主库不能做修改的操作(在做导出的时候需要停止相关的接口和应用,对于一些小公司可能没影响,但如果是电商平台,就是相当于停止服务;

2、当数据量较小的时候mysqldump的方法是很快的,但是当数据量超过20G的时候,整个过程就相当的慢。曾经用这种方法导一个70G的数据库,在使用的是高端存储的情况下,导出花费了50分钟。

 

Percona提供了xtrabackup开源备份工具,可以快速且无锁表地进行mysql的备份并且记录相应的log信息,特点如下:

  • 备份过程快速、可靠;
  • 备份过程不会打断正在执行的事务;
  • 能够基于压缩等功能节约磁盘空间和流量;
  • 自动实现备份检验;
  • 还原速度快;

 

本文档介绍通过xtrabackup进行搭建mysql的主从数据库;

【一】软件的安装

1.1 下载地址 https://www.percona.com/downloads/XtraBackup/

当前的版本已更新到2.2.11;

 

1.2 软件的安装

下载相应的rpm包后,运行:rpm -ivh percona-xtrabackup-2.2.11-1.el6.x86_64.rpm  

[root@OTO-DB-T02 share]#  rpm -ql  percona-xtrabackup
/usr/bin/innobackupex
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup

 

1.3 软件的介绍

XtraBackup中主要包含了三个工具

xtrabackup:支持innodb存储引擎表,xtradb存储引擎表

innobackupex:支持innodb存储引擎表、xtradb存储引擎表、myisam存储引擎表。

xbstream:流备份工具,用于减少备份和传输过程中的IO(http://blog.chinaunix.net/uid-26364035-id-3845609.html

 

 

1.4 配置datadir参数

[root@OTO-DB-T02 backup]#  more /etc/my.cnf |grep datadir
datadir=/data/mysql    

 

 

注:当datadir参数没有配置时还原的时候会报如下错误

innobackupex: got a fatal error with the following stacktrace: at /usr/bin/innobackupex line 2510
    main::copy_back(0) called at /usr/bin/innobackupex line 1570
innobackupex: Error: Backup data file '/data/backup/2015-06-15_14-06-59/ibdata1' does not exist. at /usr/bin/innobackupex line 2510.

 

【二】 工具的使用

[root@OTO-DB-T02 backup]# innobackupex  --help
Options:
    --apply-log
        Prepare a backup in BACKUP-DIR by applying the transaction log file
        named "xtrabackup_logfile" located in the same directory. Also,
        create new transaction logs. The InnoDB configuration is read from
        the file "backup-my.cnf".

    --backup-locks
        This option controls if backup locks should be used instead of FLUSH
        TABLES WITH READ LOCK on the backup stage. The option has no effect
        when backup locks are not supported by the server. This option is
        enabled by default, disable with --no-backup-locks.

    --close-files
        Do not keep files opened. This option is passed directly to
        xtrabackup. Use at your own risk.

    --compact
        Create a compact backup with all secondary index pages omitted. This
        option is passed directly to xtrabackup. See xtrabackup
        documentation for details.

    --compress
        This option instructs xtrabackup to compress backup copies of InnoDB
        data files. It is passed directly to the xtrabackup child process.
        Try 'xtrabackup --help' for more details.

 

2.1的完整备份及还原过程

步骤一:进行数据库的完整备份

innobackupex --defaults-file=/etc/my.cnf   --user=root    --password='123456'   /data/backup

 

2.2 InnoDB备份,使备份可用

innobackupex   --user=root    --password='123456'    --apply-log  /data/backup/2015-06-15_14-57-24   (步骤一备份完成后会产生2015-06-15_14-57-24目录)

 

说明:第一步备份相当于备份当前数据库的数据文件,但是备份期间系统的变更这个过程是不能备份的。所以要进行步骤二的备份,这个步骤可用记录在备份步骤一系统进行的所有变更。这样在进行恢复的过程会累加步骤一和步骤二的备份形成一个完整的备份;

 

2.3 数据库的还原

innobackupex    --defaults-file=/etc/my.cnf  --user=root    --password='123456'  --copy-back   /data/xtrabackup/2015-02-01_08-30-13/

 

2.4 文件的授权

chown –R mysql:mysql /data/mysql

 

2.5 启动数据库

service mysqld start;启动数据库

 

2.6 根据/data/mysql下面的信息连接主库

[root@OTO-DB-T02 mysql]# cat xtrabackup_binlog_pos_innodb
./mysql-bin.000027    17645

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

技术博客:猎人笔记                                                数据库技术群:367875324 (请备注数据库类型)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Kubernetes 关系型数据库 MySQL
k8s快速部署MySQL单机
k8s快速部署MySQL单机
|
3月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
68 3
|
2月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
219 1
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
存储 关系型数据库 MySQL
使用Docker快速部署Mysql服务器
本文介绍了如何使用Docker快速部署MySQL服务器,包括下载官方MySQL镜像、启动容器、设置密码、连接MySQL服务器以及注意事项。
587 18
|
2月前
|
存储 关系型数据库 MySQL
【MySQL精装典藏版】MySQL的安装与部署
【MySQL精装典藏版】MySQL的安装与部署
56 0
|
2月前
|
关系型数据库 MySQL 数据库
如何使用Docker部署MySQL数据库?
【10月更文挑战第1天】如何使用Docker部署MySQL数据库?
191 0
|
4月前
|
关系型数据库 MySQL 测试技术
使用docker部署MySQL测试环境
使用docker部署MySQL测试环境
50 0
|
4月前
|
固态存储 关系型数据库 MySQL
mysql多实例一键部署
mysql多实例一键部署
35 0