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等。
在主服务器上授权复制权限的用户
这时,我们在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/
导出路径环境变量
导出路径=$阿米巴_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指定源地址。
本文到此为止。我们自己抢包测试一下吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)