MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。

MySQL想必大家都不陌生,之前文章也有介绍同步复制与半同步复制,今天先来了解下什么是GTID。

GTID(global transaction ID)全局事务ID,是由服务器的UUID+一段随机数事务ID。

特性:从服务器从主服务器复制过来的事务,GTID不变,也就是说一个事务在全局复制架构中的ID不变。

有什么用:

在MySQL集群中,当Master故障时,需要从Slave中挑选一个提升为Master可以基于GTID对比其他Slave来保证数据的一致性。

MySQL主从同步如何配置数据过滤

主服务器配置:

Binlog-do-db   //指定要记录二进制日志的数据库

Binlog-ignore-db  //指定要忽略记录二进制日志的数据库

从服务器配置:

Replicate-do-table=   //指定要记录二进制日志的表

Replicate-ignore-table=  //指定要忽略记录二进制日志的表

Replicate-do-db=  //指定要记录二进制日志的数据库

Replicate-ignore-db=  //指定要忽略记录二进制日志的数据库

Replicate-wild-do-table=  //指定要记录二进制日志的表(支持通配符)

Replicate-wild-ignore-table=  //指定要忽略记录二进制日志的表(支持通配符)

实验一、配置一个基于GTID的MySQL主从复制架构。

实验环境:RHEL6.4+MySQL5.6

Master:192.168.18.201 admin1.tuchao.com

Slave: 192.168.18.202 admin2.tuchao.com

安装和启动MySQL过程和之前都一样(略)

Master配置:

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 2
datadir=/mydata
log-bin=mysql-bin
innodb_file_per_table = 1

binlog-format=ROW  //设置二进制日志格式
log-slave-updates=true //是否记录从服务器同步数据动作

gtid-mode=on //启用Gtid模式

enforce-gtid-consistency=true //是否强制GTID的一致性

master-info-repository=TABLE //master信息的记录位置

relay-log-info-repository=TABLE //中继日志信息的记录位置

sync-master-info=1
slave-parallel-workers=2 //设置从服务器复制线程数

binlog-checksum=CRC32 //设置binlog校验算法(循环冗余校验码)

master-verify-checksum=1 //设置主服务器是否校验

slave-sql-verify-checksum=1 //设置从服务器是否校验

binlog-rows-query-log_events=1
server-id       = 10
report-port=3306
report-host=admin1.tuchao.com //设置报告给哪台服务器,一般设置为本机的主机名。

Slave配置:

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 2
datadir=/data
log-bin=mysql-bin
innodb_file_per_table = 1

binlog-format=ROW
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
server-id       = 20
report-port=3306
report-host=admin2.tuchao.com

其实master和slave配置几乎相同, 只需要修改几个参数我在上面用红色字体做了标记,如server-id ,report-host等。

在Master上授权复制权限的用户

  • grant replication slave,replication client on *.* to ‘repluser‘@‘192.168.18.202‘ identified by ‘123456‘;

启动slave复制线程

  • change master to master_host=‘admin1.tuchao.com‘,master_user=‘repluser‘,master_password=‘123456‘,master_auto_position=1;
  • start slave;

查看警告信息

  • Show warnings

查看Slave状态

  • show slave status\G

这时我们在Master上创建一个tuchao数据库

来到Slave查看

同步成功!

实验二、使用amoeba构建MySQL集群实现负载均衡,读写分离。

MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。

时间: 2024-10-17 13:19:28

MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。的相关文章

MySQL主从复制——MySQL-5.6基于GTID及多线程的复制

一.Mysql 5.6 新特性 .... 复制功能的改进 ⒈支持多线程复制,(slave-parallel-workers=0     0: 表示禁用多线程功能:)事实上是针对每个database开启相应的独立线程.即每个库有一个单独的(sql thread),如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了. ⒉支持启用GTID,对运维人员来说应该是一件令人高兴的事情,在配置主从复制,传统的方式里,你需要找到binlog和P

MYSQL 基于GTID的复制

1.概述 从MYSQL5.6 开始,mysql开始支持GTID复制. 基于日志点复制的缺点: 从那个二进制日志的偏移量进行增量同步,如果指定错误会造成遗漏或者重复,导致数据不一致. 基于GTID复制: 1.从服务器会告诉主服务器已执行的事务的GTID值. 2.主库会告诉从哪些GTID事务没有被执行. 同一个事务在指定的从库执行一次. 什么是GTID GTID即全局事务ID,器保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID. GTID=source_id:transaction_i

MySQL 设置基于GTID的复制

GTID的概念 GTID(全名 global transaction identifier)是事务的唯一标识符.格式如下:GTID = source_id:transaction_idsource_id:标识了源服务器,通常是服务器的server_uuidtransaction_id:按照服务器上提交的事务顺序进行排序的序列号.例如: 60f9111a-cdba-11e7-b354-005056a30507:1 在配置文件中添加以下信息来启用GTID模式 [mysqld]gtid_mode=ON

MySQL学习笔记07基于GTID的复制

1.1.1. 相关概念 (1)GTID GTID是Global Transaction Identifier的缩写.GTID是一个跟提交的事务有关的标识符,由提交事务所在的原始MySQL的UUID和事务的编号组成:因此,每个GTID在每个参与的MySQL中都是唯一的,而且由GTID可以取得该事务所在的原始MySQL以及事务在原始MySQL上的编号. GTID格式如下: GTID = MySQL原始UUD:事务编号 GTID的例子如下: GTID=a2392929-6dfb-11e7-b294-0

搭建MySQL代理服务器实现读写分离+主从同步

实验需求: 1.配置2台MySQL服务器(192.168.100.2,192.168.100.3)+1台代理服务器(192.168.100.1),实现MySQL代理的读写分离. 2.用户只需要访问MySQL代理服务器,实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成. 3.2台MySQL服务器实现主从同步,其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询. 一 .MASTER数据库服务器(192.168.100.2)的配置 1.安装软件包(本实验采用My

MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)

Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从数据库处理SELECT查询操作.数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库. 1.设置说明 Master服务器: 192.168.41.196 Slave服务器: 192.168.41.197 Proxy服务器: 192.168.41.203 2.安装Mysql Pro

Centos 7基于DR(直接路由)模式的负载均衡配置详解

DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:LVS负载均衡群集详解. DR的工作模式示意图如下: 该模式的原理已经在上面链接的博文中写了下来.现在直接搭建一个基于DR模式的负载均衡群集. 环境如下: 在上面这个环境中,需要解决的问题有下面几点: 1.所有web节点和调度器都配置上VIP:客户端访问VIP(群集的虚拟IP地址)时,若是 调度器将请求转发给web节点,然后由web节点直接去响应客户端,那么客户端在收到 数据包后,发现收到的数据包

Mysql5.7基于GTID的半同步复制

一.GTID是什么 GTID是事务的ID,唯一识别号,全局唯一.随事务记录到Binary Log中,用来标识事务.每个事务有一个Gtid_log_event.GTID的构成:UUID + Sequence Number Sequence Number是MySQL服务器内部的一个事务顺序号.一个MySQL服务器上的事务不会有重复的顺序号(保证服务器内唯一).每个MySQL服务器有一个全局唯一的UUID. GTID的目的简化复制的使用过程和降低复制集群维护的难度,不再依赖Master的binlog文

MySQL主从复制--MySQL5.6基于GTID及多线程复制

大纲 一.系统环境 二.MySQL初始化安装过程 三.基于GTID的主从模式配置过程 一.系统环境 系统环境 CentOS5.8 x86_64 master.network.com    master    172.16.1.101 slave.network.com     slave     172.16.1.105 软件包 mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz(二进制通用安装包) 拓扑图 二.MySQL初始化安装过程 1.时间同步 [[emai