MyCat搭建MySQL一主一从与双主双从读写分离
搭建一主一从读写分离
搭建MySQL一主一从
搭建MySQL主从复制参考:在Windows环境与Linux环境下搭建MySQL主从同步
配置读、写主机
修改
schema.xml文件
,配置读(writeHost )主机与写(readHost )主机
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="mycat" password="123456">
<readHost host="hostS1" url="jdbc:mysql://localhost:3307" user="root" password="123456" />
</writeHost>
</dataHost>
name:dataHost的名称,给datanode使用,不能重复
maxCon:连接物理库的连接池每个物理库的最大连接数
minCon:连接物理库的连接池每个物理库的最小连接数,即为初始化连接数
balance:负载均衡类型
writeType:写类型
dbType:指定后端链接的数据库类型,支持使用jdbc链接的数据库,例如:mysql、mongodb、oracle、spark等
dbDriver:指定连接后端数据库使用的driver,可选值有native和JDBC
switchType:切换类型
heartbeat:指明用于和后端数据库进行心跳检查的语句
writeHost/readHost 标签:指定后端数据库的相关配置,用于实例化后端连接池,writeHost 指定写实例、readHost 指定读实例
host:标识不同实例,一般writeHost 使用*M1方式命名,readHost用*S1方式命名
url:后端实例连接地址。Native:地址:端口 、JDBC:jdbc的url
user:连接实例的用户名
password:连接实例的用户密码
配置读写分离
修改
schema.xml文件
中的<dataHost>
节点的 balance属性,通过此属性配置读写分离的类型
balance:负载均衡类型
0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上
1:全部的readHost与stand by writeHost(指Master的备份机)参与select语句的负载均衡
简而言之:双主双从模式(M1->S1,M2->S2,且M1与M2互为主备)情况下,M2,S1,S2都参与select语句的负载均衡
2:所有读操作都随机的在writeHost、readhost上
3:所有读请求随机的分发到readhost 执行,writerHost不负担读压力,1.4之后版本有
<dataHost name="host1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
</dataHost>
验证读写分离
注意:修改MySQL的配置文件:
my.cnf,设置logbin格式
binlog_format=STATEMENT`
重启Mycat,修改,重启MySQL,确保此时主从复制正常
登录MyCat:
mysql -umycat -p123456 -h IP -P 8066
,向数据表插入系统变量
值,以此造成主从数据不一致,便于验证读写分离。
mysql> use TESTDB;
Database changed
mysql> INSERT INTO mytb VALUES(2,@@hostname);
Query OK, 1 row affected (0.03 sec)
OK!
登录主库:mysql -uroot -h IP -P 3306 -p
查看表数据
mysql> SELECT * FROM mytb;
+------+---------------+
| id | name |
+------+---------------+
| 1 | mycat |
| 2 | administrator |
+------+---------------+
2 rows in set (0.01 sec)
登录从库:mysql -uroot -h IP -P 3307 -p
查看表数据
mysql> use mydb;
Database changed
mysql> select * from mytb;
+------+--------------+
| id | name |
+------+--------------+
| 1 | mycat |
| 2 | 5990c4387bd9 |
+------+--------------+
2 rows
登录MyCat:mysql -umycat -p123456 -h IP -P 8066
,查询验证
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB |
+----------+
1 row in set (0.01 sec)
mysql> use TESTDB;
Database changed
mysql> select * from mytb;
+----+---------------+
| id | name |
+----+---------------+
| 1 | mycat |
| 2 | administrator |
+----+---------------+
2 rows in set (0.01 sec)
mysql> select * from mytb;
+----+--------------+
| id | name |
+----+--------------+
| 1 | mycat |
| 2 | 4e4f0d81922a |
+----+--------------+
2 rows in set (0.01 sec)
mysql>
搭建双主双从读写分离
搭建MySQL双主双从
搭建MySQL双主双从复制参考:搭建双主双从的MySQL主从同步复制
配置读、写主机
修改
schema.xml
文件,配置读(writeHost )主机与写(readHost )主机
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="mycat" password="123456">
<readHost host="hostS1" url="jdbc:mysql://localhost:3308" user="root" password="123456" />
</writeHost>
<writeHost host="hostM2" url="jdbc:mysql://localhost:3307" user="root" password="123456">
<readHost host="hostS2" url="jdbc:mysql://localhost:3309" user="root" password="123456" />
</writeHost>
</dataHost>
配置读写分离
修改
schema.xml文件
中的<dataHost>
节点的 balance属性、writeType属性、switchType属性,通过此属性配置读写分离的类型
balance:负载均衡类型
0:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上
1:全部的readHost与stand by writeHost(指Master的备份机)参与select语句的负载均衡
当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备)情况下,M2,S1,S2都参与select语句的负载均衡
2:所有读操作都随机的在writeHost、readhost上
3:所有读请求随机的分发到 readhost 执行,writerHost不负担读压力,1.4之后版本有
双主双从读写分离balance设置为1
<dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
</dataHost>
writeType:写类型
0: 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties
1:所有写操作都随机的发送到配置的writeHost,1.5 以后废弃不推荐
switchType:切换类型
-1 表示不自动切换
1 默认值,自动切换
2 基于 MySQL 主从同步的状态决定是否切换
验证读写分离
重启Mycat,修改MySQL的配置文件:
my.cnf
,设置logbin格式binlog_format=STATEMENT
,重启MySQL,确保此时主从复制正常
登录MyCat:
mysql -umycat -p123456 -h IP -P 8066
,向数据表插入系统变量
值,以此造成主从数据不一致,便于验证读写分离。
mysql> use TESTDB;
Database changed
mysql> INSERT INTO mytb VALUES(2,@@hostname);
Query OK, 1 row affected (0.03 sec)
OK!
登录双主双从MySQL4个库查看表数据
mysql -uroot -h IP -P 3306 -p
mysql -uroot -h IP -P 3307 -p
mysql -uroot -h IP -P 3308 -p
mysql -uroot -h IP -P 3309 -p
登录MyCat:mysql -uroot -p123456 -h IP -P 8066
,查询验证
mysql> use TESTDB;
Database changed
mysql> SELECT * FROM mytb;
+------+--------------+
| id | name |
+------+--------------+
| 1 | mycat |
| 2 | 3cf0d174674d |
+------+--------------+
2 rows in set (0.01 sec)
mysql> SELECT * FROM mytb;
+------+--------------+
| id | name |
+------+--------------+
| 1 | mycat |
| 2 | 5990c4387bd9 |
+------+--------------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM mytb;
+------+--------------+
| id | name |
+------+--------------+
| 1 | mycat |
| 2 | 4e4f0d81922a |
+------+--------------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM mytb;
+------+--------------+
| id | name |
+------+--------------+
| 1 | mycat |
| 2 | 5990c4387bd9 |
+------+--------------+
2 rows in set (0.00 sec)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/136927.html