PXC +mycat的读写分离

环境是PXC的3节点,虽然PXC的3个节点都是可读写,避免主键的争用,还是做成了1写2读的读写分离,读写分离的中间件选用了mycat来做,因为mycat 可以很好地做 写节点切换。

PXC的集群已经搭建好了。3个节点
js-ypt-percona1-t 192.168.50.130
js-ypt-percona2-t 192.168.50.131
js-ypt-percona3-t 192.168.50.132

mycat 的机子IP为 192.168.50.10
mycat 选用的版本是Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

下载安装包,并解压到 /usr/local/mycat

mycat 的读写分离配置,只用到2个配置文件,conf 里面的 schema.xml 和 server.xml。

schema.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

上面3行都不需要改变

下面的配置主要分3个配置项,schema , datanode,datahost
    <schema name="percona" checkSQLschema="true" sqlMaxLimit="100" dataNode="db_node">
      </schema>

--name 逻辑数据库名,与server.xml中的schema对应
--sqlMaxLimit 限制返回行数,语句有带limit以语句的为准,否则以这个参数为准
--dataNode 读写分离没有这个参数就改成这个参数,对应下一个dataNode选项配置,可以随意命名

    <dataNode name="db_node" dataHost="pxc-cluster" database="percona" />

--name 对应上面的schema
--dataHost 可以随意命名
--database PXC中真实的库名

         <dataHost name="pxc-cluster" maxCon="1000" minCon="10" balance="2"
                      writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <writeHost host="write1" url="192.168.50.130:3306" user="admin" password="Abc_123456">
              <readHost host="write1r1" url="192.168.50.131:3306" user="admin" password="Abc_123456" />
              <readHost host="write1r2" url="192.168.50.132:3306" user="admin" password="Abc_123456" />
            </writeHost>

            <writeHost host="write2" url="192.168.50.131:3306" user="admin" password="Abc_123456">
              <readHost host="write2r1" url="192.168.50.132:3306" user="admin" password="Abc_123456" />
              <readHost host="write3r2" url="192.168.50.130:3306" user="admin" password="Abc_123456" />
            </writeHost>

--name 对应dataNode 配置选项的 dataHost
-- maxCon 最大连接1000,minCon最小连接,balance=2 负载均衡是select 随机往写和读节点分布
--writeType =0 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost
--switchType=1 自动切换writeHost , 上面的配置中 我定义了2个 writeHost

            <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
         </dataHost>
 </mycat:schema>

server.xml 配置

<user name="admin" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">percona</property>
<property name="defaultSchema">percona</property>
</user>
-- 配置很简单 用户 admin,密码 123456,库是 percona

启动mycat

/usr/local/mycat/bin/startup_nowrap.sh ##启动mycat

有可能会碰到一个奇怪的问题。
vim startup_nowrap.sh

set ff 可能查看到的是 windows, 执行 set ff=unix 即可,然后重新运行脚本

用客户端 连接 mycat
192.168.50.10:8806 admin/123456
连接成功!
done!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容