MyCat搭建MySQL一主一从与双主双从读写分离

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 MyCat搭建MySQL一主一从与双主双从读写分离,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

搭建一主一从读写分离

搭建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

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!