部署Mycat负载均衡
- 配置Mycat的schema.xml。
- 打开文件。
1
vim /usr/local/mycat/conf/schema.xml
- 按“i”进入编辑模式,替换成如下内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="sysbench" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> <!-- <table name="sbtest1" dataNode="dn1"/>--> </schema> <dataNode name="dn1" dataHost='dh1' database="sysbench" /> <dataHost name="dh1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>show slave status</heartbeat> <writeHost host="hostm" url="localhost:3312" user="root" password="123456"> <readHost host="hosts2" url="localhost:3313" user="root" password="123456"> </readHost> </writeHost> </dataHost> </mycat:schema>
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开文件。
- 启动Mycat并查看状态。
1 2 3
mycat stop mycat start mycat status
- 执行查询测试。
- 打开文件。
1
vim /home/read.sh
- 按“i”进入编辑模式,添加如下内容。
1 2 3 4 5
#!/bin/bash for i in {1..1000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select @@report_host" done
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行脚本。
1
sh /home/read.sh
查询操作被随机的路由到主库和从库上执行。
Mycat控制负载均衡主要有两个参数balance和writetype。
- balance参数设置:
0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
1:全部的readHost与stand by writeHost参与select语句的负载均衡。
2:所有读操作都随机在writeHost、readHost上分发。当前测试用例的balance参数为2。
3:所有读请求随机分发到writeHost对应的readHost执行,writeHost不负担读压力。
- writetype参数设置:
0:所有写操作发送到配置的第一个writeHost,当第一个writeHost宕机时,切换到第二个writeHost,重新启动后以切换后的为准,切换记录在配置文件dnindex.properties中。
1:所有写操作都发送到配置的writeHost。
2:尚未实现。
- balance参数设置:
- 打开文件。
- 执行写入测试。
- 打开文件。
1
vim /home/write.sh
- 按“i”进入编辑模式,添加如下内容。
1 2 3 4 5
#!/bin/bash for i in {1..20000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into test1(id,report_hostname) values($i,@@report_host)" done
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行脚本。
1
sh /home/write.sh
- 打开文件。
- 确认测试数据。
1
/usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "select * from test1"
所有的插入操作都在主库执行。
父主题: MySQL数据库读写分离方案