mysql负载均衡与同步_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

047d8e31783ab336d986d15c6f935d4e.png

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

acdcf052ca68aab860a27e3d787c3141.png

来到Slave查看

be3ae0fa7d88c9c745e7308c6b9c9cd2.png

同步成功!

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

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

amoeba-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 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/amoeba

export PATH=$AMOEBA_HOME/bin:$PATH

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

cc8d8a8960c98e1014e69a4f4f53a0f7.png

64ec43c0b58d0b34a1489d16d3aed0e3.png

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

12ddd344005dfdd122838592b5af027e.png

8f1779c7f07a88c5931cf62d84a8b499.png

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

amoeba start

c5233aecd78725ad14e4029e85d51743.png

连接amoeba

e876ff8f969e7d60a3282278fcc32275.png

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

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

ed8ced2f26aa2bea786dda24053599eb.png

4dfb515ece61b8156e8a4cee7e75b117.png

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

tcpdump -i eth1 -s0 -nn -vv -A ip src 210.32.92.217 and tcp dst port 443

还可以用src 指定源地址。

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

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值