利用 MyCat 实现读,写分离

本贴最后更新于 2602 天前,其中的信息可能已经时异事殊

MyCat 配置读,写分离有两种形式:

  • mariadb-master 负责写入,不负责读取,由 mariadb-slave 负责读取;
  • mariadb-master 负责写入,同时与 mariadb-slve 仪器分摊读取的压力

如果要实现 MyCat 配置必须要考虑到各种的选项。本次一共要使用到如下的几台主机:

No. 主机名称 IP 地址 描述
1 server-master 192.168.31.128 MariaDB 服务(master)
2 server-slave 192.168.31.129 MariaDB 服务(slave)
2 mycat-server-01 192.168.31.130 MyCat 服务

1.【mycat-server-01】 修改 schema.xml 文件:

vim /usr/local/mycat/conf/schema.xml;


<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
     <!-- 定义一个MyCat的模式,此处定义了一个路基数据库名称TestDB -->
     <!-- “checkSQLschema”:描述的是当前的连接是否需要检测数据的模式 -->
     <!-- “sqlMaxLimit”:表示返回的最大的数据量的行数 -->
     <!-- “dataNode="dn1"” :该操作使用的数据节点是dn1的逻辑名称 -->
	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
    <!-- 定义个数据的操作节点,以后这个节点会进行一些苦逼哦分离使用 -->
    <!-- dataHost="localhost1" :定义数据节点的逻辑名称 -->
    <!-- database="zsl":定义数据界定啊要使用的数据库名称 -->
	<dataNode name="dn1" dataHost="localhost1" database="zsl" />
     <!-- 定义数据节点,包括了各种逻辑项的配置 -->
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
			  <!-- 配置真实 MySQL与MyCat的心跳 -->
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<!-- 配置真实的MySQL的连接路径 -->
		<writeHost host="hostM1" url="192.168.31.128:3306" user="root"
				   password="hahaha">
			<readHost host="hostS1" url="192.168.31.129:3306" user="root" password="hahaha" />
		</writeHost>
	</dataHost>
</mycat:schema>

对于读写分离核心的几个选项:balacne , writeType , switchType;

  • 通过 readHost 读取,社会:"balance=3";
  • 让 writeHost 与 readHost 共同分担,设置"balance=2"

2.【mycat-server-01】启动 mycat 服务:

/usr/local/mycat/bin/mycat console;

3.【server-*】随便找到一台具有 mysql 数据库的主机,登录 mycat 服务:

  • 登录 mycat 服务器:mysql -uroot -p123456 -h192.168.31.130 -P8066 -DESTDB;
  • 为了方便观察室哪一个数据库查询出来的数据,保存一条新的内容,记录主机名称:
INSERT INTO member(mid,name)VALUES('hello',@@hostname);

此时记录主机名称,而后设置不同的"blance"的内容就可以

  • mycat
    6 引用 • 6 回帖 • 1 关注
  • MariaDB
    22 引用 • 15 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    690 引用 • 535 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...