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

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

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

enforce-gtid-consistency=true

master-info-repository=TABLE

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

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

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

Slave配置:

[mysqld]port = 3306socket = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 256Mmax_allowed_packet = 1Mtable_open_cache = 256sort_buffer_size = 1Mread_buffer_size = 1Mread_rnd_buffer_size = 4Mmyisam_sort_buffer_size = 64Mthread_cache_size = 8query_cache_size= 16Mthread_concurrency = 2datadir=/datalog-bin=mysql-bininnodb_file_per_table = 1binlog-format=ROWlog-slave-updates=truegtid-mode=onenforce-gtid-consistency=truemaster-info-repository=TABLErelay-log-info-repository=TABLEsync-master-info=1slave-parallel-workers=2binlog-checksum=CRC32master-verify-checksum=1slave-sql-verify-checksum=1binlog-rows-query-log_events=1server-id = 20report-port=3306report-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;

查看警告信息

Showwarnings

查看Slave状态

show slave status\G

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

来到Slave查看

同步成功!

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

我们在192.168.18.199这台主机部署amoeba由于是java程序,要先安装jdk,然后定义JAVA_HOME环境变量,导出PATH环境变量。(略)

amoeba-mysql2.2 官网下载地址:

%20for%20mysql/2.2.x/

创建需要的目录,创建链接,,解压程序到目录。

mkdir /usr/local/amoeba-mysql-2.2

cd /usr/local

ln -sv amoeba-mysql-2.2 amoeba

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

导出PATH环境变量

vim /etc/profile.d/amoeba.sh

export AMOEBA_HOME=/usr/local/amoebaexport PATH=$AMOEBA_HOME/bin:$PATH

编辑 /usr/local/amoeba/conf/dbServers.xml

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

配置完成后保存,启动amoeba。

amoeba start

连接amoeba

创建数据库,创建表,然后用tcpdump在两个节点抓包,你会发现写操作都会转发到Master。

执行select等语句凡是读操作,会发两个请求给Slave,一个给Master。

tcpdump 命令简单介绍

-i 指定网卡

-s 指定报文的长度,s0表示抓整个包。

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

-XX 显示报文内容十六进制码,ASCII,以太网头部。

-vv 显示详细信息。

-A 显示数据包里的ASCII

-w 把内容导出到指定的文件中

例子:

tcpdump -i eth0 -s0 -nn -A tcp dst port 3306 and dst host 192.168.18.202

还可以用src 指定源地址。

这篇就写到这里了,大家自行抓包测试。

本文出自 “坏人的博客” 博客,请务必保留此出处

你的选择是做或不做,但不做就永远不会有机会

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

相关文章:

你感兴趣的文章:

标签云: