目录
一、GTID添加从库的方法
二、演示从库搭建
首页 数据库 mysql教程 基于mysqldump搭建gtid主从

基于mysqldump搭建gtid主从

Feb 13, 2017 am 11:26 AM

在实现mysql主从架构的过程中,可以使用基于mysqldump方式来构建主从。mysqldump在备份的过程中已经产生了GTID的相关信息,即这些GTID可以跳过,对于未跳过的GTID则有IO线程复制到从服务器,由SQL线程进行执行。本文主要演示mysqldump在GTID模式下搭建mysql主从。

有关知识点参考:
配置MySQL GTID 主从复制
基于mysqldump快速搭建从库
使用mysqldump导出数据库

一、GTID添加从库的方法

1.如果master所有的binlog还在,安装slave后,直接change master 到master
原理是直接获取master所有的gtid并执行
优点是简单
缺点是如果binlog太多,数据完全同步需要的时间较长,并且需要master一开始就启用了GTID
总结:适用于master也是新建不久的情况

2.通过master或者其它slave的mysqldump备份搭建新的slave.
原理:备份时获取master的数据和这些数据对应的GTID,在Slave端跳过备份包含的GTID
优点是可以避免第一种方法中的不足
缺点操作相对复杂
总结:适用于拥有较大数据集的情况

3、percona xtrabackup
基于xtrabackup备份文件xtrabackup_binlog_info包含了GTID信息
做从库恢复后,需要手工设置:set@@GLOBAL.GTID_PURGED='c8d960f1-83ca-11e5-a8eb-000c29ea831c:1-745497';恢复后,执行change master to
缺点操作相对复杂
总结:适用于拥有较大数据集的情况
登录后复制
登录后复制

二、演示从库搭建

1、演示环境
mysql> system cat /etc/redhat-release
CentOS release 6.7 (Final)mysql> show variables like 'version';
+---------------+------------+| Variable_name | Value      |
+---------------+------------+| version       | 5.7.12-log |
+---------------+------------+主服务器:192.168.1.245:3306  server_id : 245
从服务器:192.168.1.247:3306  server_id : 247

--在主库端创建复制用户
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456'; 

2、直接使用change master(针对本文第一部分,第1小点情形)

此处省略基于gtid配置的参数描述,具体可以参考:配置MySQL GTID 主从复制
在从服务器端直接change master,如下:SLAVE> show variables like 'server_id';
+---------------+-------+| Variable_name | Value |
+---------------+-------+| server_id     | 247   |
+---------------+-------+Slave> CHANGE MASTER TO  
    -> MASTER_HOST='192.168.1.245',        -> MASTER_USER='repl',        -> MASTER_PASSWORD='123456',        -> MASTER_PORT=3306,        -> MASTER_AUTO_POSITION = 1;Query OK, 0 rows affected, 2 warnings (0.12 sec)

Slave> start slave;
Query OK, 0 rows affected (0.01 sec)

Slave> start slave;
Query OK, 0 rows affected (0.01 sec)

Slave> show slave status \G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.245                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: node3-binlog.000001          Read_Master_Log_Pos: 457               Relay_Log_File: node5-relay-bin.000002                Relay_Log_Pos: 676        Relay_Master_Log_File: node3-binlog.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              ...............--主服务器端操作如下
Master> create database tempdb;
Query OK, 1 row affected (0.02 sec)

Master> use tempdb
Database changed
Master> create table t1(id int,ename varchar(20));
Query OK, 0 rows affected (0.09 sec)

Master> insert into t1 values(1,'leshami');
Query OK, 1 row affected (0.08 sec)

--从服务器端验证Slave> select * from tempdb.t1;
+------+---------+| id   | ename   |
+------+---------+|    1 | leshami |
+------+---------+1 row in set (0.01 sec)

3、基于mysqldump搭建gtid从库 
--准备环境,从库端执行
Slave> stop slave;          --停止重库
Query OK, 0 rows affected (0.01 sec)

Slave> reset slave all;     --重置主从配置信息
Query OK, 0 rows affected (0.02 sec)   

--准备环境,主库端执行  
Master> source sakila-db/sakila-schema.sql  --导入mysql自带的sakila数据库
Master> source sakila-db/sakila-data.sql    --填充数据   

--使用mysqldump导出数据库  
# mysqldump --all-databases --single-transaction --triggers --routines --events \
> --host=localhost --port=3306 --user=root --password=MyP@ssw0rd >/tmp/alldb.sql        

--导出的文件中已经包含了GTID_PURGED的信息
# grep GTID_PURGED /tmp/alldb.sql   
SET @@GLOBAL.GTID_PURGED='78336cdc-8cfb-11e6-ba9f-000c29328504:1-38';--将备份文件copy到从服务器
# scp /tmp/alldb.sql 192.168.1.247:/tmp-- 执行reset master,重置从服务器上的binlog
Slave> reset master;
Query OK, 0 rows affected (0.03 sec)

Slave> source /tmp/alldb.sqlSlave> show databases;    --此时tempdb已产生
+--------------------+| Database           |
+--------------------+| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                || tempdb             |
+--------------------+--执行change master
Slave> CHANGE MASTER TO  
    -> MASTER_HOST='192.168.1.245',        -> MASTER_USER='repl',        -> MASTER_PASSWORD='123456',        -> MASTER_PORT=3306,        -> MASTER_AUTO_POSITION = 1;Query OK, 0 rows affected, 2 warnings (0.06 sec)

Slave> start slave;
Query OK, 0 rows affected (0.00 sec)

Slave> show slave status \G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.245                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: node3-binlog.000001          Read_Master_Log_Pos: 25637               Relay_Log_File: node5-relay-bin.000002                Relay_Log_Pos: 423        Relay_Master_Log_File: node3-binlog.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes--主库端执行一些事务
Master> alter table tempdb.t1 modify ename varchar(50);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

Master> insert into tempdb.t1 values(2,'http://blog.csdn.net/leshami');
Query OK, 1 row affected (0.02 sec)

--从库端验证结果Slave> desc tempdb.t1;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+| id    | int(11)     | YES  |     | NULL    |       || ename | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+2 rows in set (0.00 sec)Slave> select * from tempdb.t1;
+------+------------------------------+| id   | ename                        |
+------+------------------------------+|    1 | leshami                      ||    2 | http://www.php.cn/ |
+------+------------------------------+
登录后复制
登录后复制

在实现mysql主从架构的过程中,可以使用基于mysqldump方式来构建主从。mysqldump在备份的过程中已经产生了GTID的相关信息,即这些GTID可以跳过,对于未跳过的GTID则有IO线程复制到从服务器,由SQL线程进行执行。本文主要演示mysqldump在GTID模式下搭建mysql主从。

有关知识点参考:
配置MySQL GTID 主从复制
基于mysqldump快速搭建从库
使用mysqldump导出数据库

一、GTID添加从库的方法

1.如果master所有的binlog还在,安装slave后,直接change master 到master
原理是直接获取master所有的gtid并执行
优点是简单
缺点是如果binlog太多,数据完全同步需要的时间较长,并且需要master一开始就启用了GTID
总结:适用于master也是新建不久的情况

2.通过master或者其它slave的mysqldump备份搭建新的slave.
原理:备份时获取master的数据和这些数据对应的GTID,在Slave端跳过备份包含的GTID
优点是可以避免第一种方法中的不足
缺点操作相对复杂
总结:适用于拥有较大数据集的情况

3、percona xtrabackup
基于xtrabackup备份文件xtrabackup_binlog_info包含了GTID信息
做从库恢复后,需要手工设置:set@@GLOBAL.GTID_PURGED='c8d960f1-83ca-11e5-a8eb-000c29ea831c:1-745497';恢复后,执行change master to
缺点操作相对复杂
总结:适用于拥有较大数据集的情况
登录后复制
登录后复制

二、演示从库搭建

1、演示环境
mysql> system cat /etc/redhat-release
CentOS release 6.7 (Final)mysql> show variables like 'version';
+---------------+------------+| Variable_name | Value      |
+---------------+------------+| version       | 5.7.12-log |
+---------------+------------+主服务器:192.168.1.245:3306  server_id : 245
从服务器:192.168.1.247:3306  server_id : 247

--在主库端创建复制用户
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY '123456'; 

2、直接使用change master(针对本文第一部分,第1小点情形)

此处省略基于gtid配置的参数描述,具体可以参考:配置MySQL GTID 主从复制
在从服务器端直接change master,如下:SLAVE> show variables like 'server_id';
+---------------+-------+| Variable_name | Value |
+---------------+-------+| server_id     | 247   |
+---------------+-------+Slave> CHANGE MASTER TO  
    -> MASTER_HOST='192.168.1.245',        -> MASTER_USER='repl',        -> MASTER_PASSWORD='123456',        -> MASTER_PORT=3306,        -> MASTER_AUTO_POSITION = 1;Query OK, 0 rows affected, 2 warnings (0.12 sec)

Slave> start slave;
Query OK, 0 rows affected (0.01 sec)

Slave> start slave;
Query OK, 0 rows affected (0.01 sec)

Slave> show slave status \G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.245                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: node3-binlog.000001          Read_Master_Log_Pos: 457               Relay_Log_File: node5-relay-bin.000002                Relay_Log_Pos: 676        Relay_Master_Log_File: node3-binlog.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes              ...............--主服务器端操作如下
Master> create database tempdb;
Query OK, 1 row affected (0.02 sec)

Master> use tempdb
Database changed
Master> create table t1(id int,ename varchar(20));
Query OK, 0 rows affected (0.09 sec)

Master> insert into t1 values(1,'leshami');
Query OK, 1 row affected (0.08 sec)

--从服务器端验证Slave> select * from tempdb.t1;
+------+---------+| id   | ename   |
+------+---------+|    1 | leshami |
+------+---------+1 row in set (0.01 sec)

3、基于mysqldump搭建gtid从库 
--准备环境,从库端执行
Slave> stop slave;          --停止重库
Query OK, 0 rows affected (0.01 sec)

Slave> reset slave all;     --重置主从配置信息
Query OK, 0 rows affected (0.02 sec)   

--准备环境,主库端执行  
Master> source sakila-db/sakila-schema.sql  --导入mysql自带的sakila数据库
Master> source sakila-db/sakila-data.sql    --填充数据   

--使用mysqldump导出数据库  
# mysqldump --all-databases --single-transaction --triggers --routines --events \
> --host=localhost --port=3306 --user=root --password=MyP@ssw0rd >/tmp/alldb.sql        

--导出的文件中已经包含了GTID_PURGED的信息
# grep GTID_PURGED /tmp/alldb.sql   
SET @@GLOBAL.GTID_PURGED='78336cdc-8cfb-11e6-ba9f-000c29328504:1-38';--将备份文件copy到从服务器
# scp /tmp/alldb.sql 192.168.1.247:/tmp-- 执行reset master,重置从服务器上的binlog
Slave> reset master;
Query OK, 0 rows affected (0.03 sec)

Slave> source /tmp/alldb.sqlSlave> show databases;    --此时tempdb已产生
+--------------------+| Database           |
+--------------------+| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                || tempdb             |
+--------------------+--执行change master
Slave> CHANGE MASTER TO  
    -> MASTER_HOST='192.168.1.245',        -> MASTER_USER='repl',        -> MASTER_PASSWORD='123456',        -> MASTER_PORT=3306,        -> MASTER_AUTO_POSITION = 1;Query OK, 0 rows affected, 2 warnings (0.06 sec)

Slave> start slave;
Query OK, 0 rows affected (0.00 sec)

Slave> show slave status \G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.245                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: node3-binlog.000001          Read_Master_Log_Pos: 25637               Relay_Log_File: node5-relay-bin.000002                Relay_Log_Pos: 423        Relay_Master_Log_File: node3-binlog.000001             Slave_IO_Running: Yes            Slave_SQL_Running: Yes--主库端执行一些事务
Master> alter table tempdb.t1 modify ename varchar(50);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

Master> insert into tempdb.t1 values(2,'http://blog.csdn.net/leshami');
Query OK, 1 row affected (0.02 sec)

--从库端验证结果Slave> desc tempdb.t1;
+-------+-------------+------+-----+---------+-------+| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+| id    | int(11)     | YES  |     | NULL    |       || ename | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+2 rows in set (0.00 sec)Slave> select * from tempdb.t1;
+------+------------------------------+| id   | ename                        |
+------+------------------------------+|    1 | leshami                      ||    2 | http://www.php.cn/ |
+------+------------------------------+
登录后复制
登录后复制

以上就是基于mysqldump搭建gtid主从的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Vue框架下,如何快速搭建统计图表系统 Vue框架下,如何快速搭建统计图表系统 Aug 21, 2023 pm 05:48 PM

Vue框架下,如何快速搭建统计图表系统在现代网页应用中,统计图表是必不可少的组成部分。Vue.js作为一款流行的前端框架,提供了很多便捷的工具和组件,能够帮助我们快速搭建统计图表系统。本文将介绍如何利用Vue框架以及一些插件来搭建一个简单的统计图表系统。首先,我们需要准备一个Vue.js的开发环境,包括安装Vue脚手架以及一些相关的插件。在命令行中执行以下命

雾锁王国能野地搭建筑吗 雾锁王国能野地搭建筑吗 Mar 07, 2024 pm 08:28 PM

玩家在雾锁王国中进行游戏时可以收集不同的材料用来建造建筑,有很多玩家想知道野地搭建筑吗,雾锁王国能野地是不能搭建筑的,必须要在祭坛的范围内才可以搭建。雾锁王国能野地搭建筑吗答:不能。1、雾锁王国能野地是不能搭建筑的。2、建筑必须要在祭坛的范围内才可以搭建。3、玩家可以自行放置灵火祭坛,但一旦离开了范围,将无法进行建筑搭建。4、我们也可以直接在山上挖个洞当做我们的家,这样不用耗建筑材料。5、玩家自己搭建的建筑中,存在舒适度机制,也就是说,内饰越好,舒适度越高。6、高舒适度将为玩家带来属性加成,例如

CentOS 7下搭建web服务器的最佳实践及注意事项 CentOS 7下搭建web服务器的最佳实践及注意事项 Aug 25, 2023 pm 11:33 PM

CentOS7下搭建web服务器的最佳实践及注意事项引言:在当今互联网时代,web服务器是构建和托管网站的核心组件之一。CentOS7是一个强大的Linux发行版,广泛应用于服务器环境。本文将探讨在CentOS7上搭建web服务器的最佳实践和注意事项,并提供一些代码示例以帮助您更好地理解。一、安装ApacheHTTP服务器Apache是使用最广泛的w

在PyCharm中快速安装PyTorch:简易指南 在PyCharm中快速安装PyTorch:简易指南 Feb 24, 2024 pm 09:54 PM

PyTorch安装指南:在PyCharm中快速搭建开发环境PyTorch是当前深度学习领域中备受欢迎的框架之一,具有易用性和灵活性的特点,深受开发者青睐。本文将为大家介绍如何在PyCharm中快速搭建PyTorch的开发环境,方便大家开始深度学习项目的开发。步骤一:安装PyTorch首先,我们需要安装PyTorch。PyTorch的安装通常需要考虑到系统环境

账号矩阵怎么搭建?矩阵搭建有哪些作用? 账号矩阵怎么搭建?矩阵搭建有哪些作用? Mar 23, 2024 pm 06:46 PM

在当下信息充斥的时代,社交媒体平台已经成为人们获取和分享信息的主要途径。对于个人和企业而言,建立一个有效的账号网络以实现信息的最大传播和提升影响力,已成为亟需解决的挑战。一、账号矩阵怎么搭建?1.明确目标人群在构建账号矩阵之前,关键是明确目标受众,深入了解他们的需求、兴趣和消费习惯,这样才能制定更具针对性的内容策略。2.选择合适的平台根据目标人群的特点,选择适合的社交媒体平台进行布局。目前主流的社交媒体平台有微博、微信、抖音、快手等,每个平台都有其独特的用户群体和传播特点,需要根据实际情况进行选

抖音账号怎么搭建最好?账号搭建五件套是什么? 抖音账号怎么搭建最好?账号搭建五件套是什么? Apr 02, 2024 am 09:52 AM

随着移动互联网的快速发展,短视频应用抖音已经成为人们日常生活中不可或缺的一部分。拥有一个高人气的抖音账号,不仅能吸引粉丝关注,还能带来商业价值。那么,如何搭建一个最好的抖音账号呢?一、抖音账号怎么搭建最好?1.定位清晰在创建抖音账号之初,首先要明确自己的定位。你是想成为搞笑幽默的段子手,还是专业知识分享者?明确定位有助于吸引精准粉丝,从而增加账号的价值。2.账号命名一个好的账号名字能让粉丝一眼记住你。账号名字应简洁明了,与自己的定位相关,同时具有一定的创意。避免使用过于常见的名字,以免与他人混淆

CentOS 7下搭建web服务器的网络安全加固技巧 CentOS 7下搭建web服务器的网络安全加固技巧 Aug 05, 2023 pm 01:12 PM

CentOS7下搭建web服务器的网络安全加固技巧web服务器是现代互联网的重要组成部分,因此保护web服务器的安全性非常重要。通过加固网络安全,可以减少风险和避免潜在的攻击。本文将介绍在CentOS7上搭建web服务器时常用的网络安全加固技巧,并提供相应的代码示例。更新系统和软件首先,确保你的系统和软件是最新版本。可以使用以下命令更

CentOS搭建web服务器的日志管理与监控技巧 CentOS搭建web服务器的日志管理与监控技巧 Aug 05, 2023 am 08:33 AM

CentOS搭建web服务器的日志管理与监控技巧Web服务器是现代互联网应用的重要组成部分,而服务器的日志管理与监控是确保服务器稳定运行和故障排查的关键。本文将介绍在CentOS操作系统上如何搭建web服务器,并提供一些日志管理与监控的技巧。一、搭建Web服务器安装ApacheApache是一个流行的开源Web服务器软件。在CentOS上安装Apache很简

See all articles