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

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

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

MySQL大家都不陌生。上一篇文章还介绍了同步复制和半同步复制。今天,我们先来学习一下什么是GTID。


GTID(全局事务ID)是全局事务ID,它是服务器的UUID+一个随机数事务ID。

特性:从服务器复制到主服务器的事务的GTID不变,即全局复制架构中某个事务的ID不变。

有什么用:

在MySQL集群中,当Master失效时,需要选择一个Slave提升为主,这样可以保证基于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

硕士:192.168.18.201admin1.tuchao.com

奴隶:192.168.18.202admin2.tuchao.com

安装启动MySQL的过程和前面一样(略)


主配置:

[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

Gtid-mode=on//使能Gtid模式。

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

主信息存储库=表//主信息的记录位置

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//设置从服务器是否验证。

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


从属配置:

[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


实际上,主设备和从设备的配置几乎相同,只有几个参数需要修改。我用红色字体标记了它们,比如server-id、report-host等。


在主服务器上授权复制权限的用户

  • 授予复制从属服务器,在*上的复制客户端。*到由“123456”标识的“回复用户”@“192.168.18.202”;

  • 启动从属复制线程

  • 将master改为master_host='admin1.tuchao.com',master_user='repluser',master_password='123456',master_auto_position=1;

  • 启动从机;

    检查警告信息

  • 显示警告

  • 检查从属状态

  • 显示从属状态\G



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

    来奴才处查看

    同步成功!


    实验二。用阿米巴构建MySQL集群,实现负载均衡和读写分离。

    我们在192.168.18.199这个主机上部署了变形虫。因为是java程序,所以要先安装jdk,然后定义JAVA_HOME环境变量,导出PATH环境变量。(省略)


    阿米巴-mysql2.2官网下载地址:

    http://SourceForge.net/projects/Amoeba/files/Amoeba%20for%20mySQL/2.2.x/


    创建所需的目录,创建一个链接,并将程序解压缩到该目录。

    mkdir/usr/local/amoeba-MySQL-2.2

    cd/usr/local

    ln-sv阿米巴-mysql-2.2阿米巴

    tarzxvfamoeba-mysql-binary-2.2.0.tar.gz-C/usr/local/amoeba-MySQL-2.2/

    导出路径环境变量

  • vim/etc/profile.d/amoeba.sh

  • 导出阿米巴_HOME=/usr/local/阿米巴
    导出路径=$阿米巴_HOME/bin:$PATH

    Edit/usr/local/amoeba/conf/dbservers.XML

    编辑vim/usr/local/amoeba/conf/amoeba.XML

    配置完成后,保存并启动阿米巴。

    变形虫开始

    连接变形虫

    创建一个数据库,创建一个表,然后用tcpdump在两个节点抓取数据包。你会发现所有的写 *** 作都会被转发到Master。

    执行select之类的语句。任何读取 *** 作都会向从机发送两个请求,向主机发送一个请求。



    tcpdump命令简介

    -我指定网卡

    -s指定消息的长度,s0表示整个数据包。

    -nn不解析主机名和端口名。

    -XX显示消息内容的十六进制代码、ASCII和以太网报头。

    -vv显示详细信息。

    -A在数据包中显示ASCII

    -w将内容导出到指定文件。

    示例:

    tcpdump-ieth0-s0-nn-Atcpdst端口3306和dst主机192.168.18.202

    TCPdump-Ieth1-s0-nn-vv-AIPsrc210.32.92.217和tcpdst端口443

    也可以用src指定源地址。


    本文到此为止。我们自己抢包测试一下吧。



    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784388.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存