Ubuntu16.04 Mycat 主从同步、读写分离配置

13 篇文章 0 订阅
3 篇文章 0 订阅

环境

虚拟机01 ubuntu16.04、mysql5.7、mycat1.6

虚拟机02 ubuntu16.04、mysql5.7、mycat1.6

主从同步配置

参考:https://blog.csdn.net/weixin_43789195/article/details/109644026

读写分离配置

一些配置,目录 /usr/local/mycat/conf/

server.xml

主要配置mycat服务的参数,比如端口号,myact用户名和密码使用的逻辑数据库等。修改以下部分

<!--以下四项取消注释 -->
<!--默认是65535 64K 用于sql解析时最大文本长度 -->
<property name="maxStringLiteralLength">65535</property>
<property name="sequenceHandlerType">0</property>
<property name="backSocketNoDelay">1</property>
<property name="frontSocketNoDelay">1</property>
<property name="processorExecutor">1</property>


<!-- 登录名、密码、权限和逻辑库配置 -->
<user name="root" defaultAccount="true">
        <property name="password">111222</property>
        <property name="schemas">testdb</property>
        <property name="defaultSchema">testdb</property>
 
        <!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
        <!-- 表级 DML 权限设置 -->
        <!--
        <privileges check="false">
                <schema name="TESTDB" dml="0110" >
		                <table name="tb01" dml="0000"></table>
			            <table name="tb02" dml="1111"></table>
		        </schema>
	    </privileges> -->
</user>
    
<user name="user">
	    <property name="password">111222</property>
	    <property name="schemas">testdb</property>
        <!-- readOnly true:只读权限 -->
	    <property name="readOnly">true</property>
	    <property name="defaultSchema">testdb</property>
</user>

schema.xml

主要配置数据库的信息,例如逻辑数据库名称,物理上真实的数据源以及表和数据源之间的对应关系和路由策略等。修改以下部分

ps:主从服务器上配置读写用户user,应给予相应的权限

<!-- 逻辑库表配置 -->
<schema name="testdb" checkSQLschema="false" sqlMaxLimit="100">
</schema>
 
<!-- 分片配置 -->
<dataNode name="dn1" dataHost="host1" database="db1" />
<!-- 物理库连接配置 -->
<dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- 可以多个主机 -->
	    <writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="123456">
                <!-- 可以多个主机 -->
                <readHost host="hostS2" url="192.168.146.129:3306" user="root" password="123456" />
        </writeHost>
</dataHost>

<dataHost>标签详解

schema.xml schema:与server.xml中schema的值是多对1的关系,server.xml中schema的值可以是多个、schema.xml schema的值是唯一,可以有多个schema。schema 相对于mysql中的database。
dataNode:数据分片。一个dataNode标签就是一个独立的数据分片。
dataHost:物理主机。
balance:负载均衡类型,目前的取值有3种:
1. balance="0",不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
3. balance="2",所有读操作都随机的在writeHost、readhost上分发。
4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
writeType:负载均衡类型,目前的取值有3种:
1. writeType="0",所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties 。
2. writeType="1",所有写操作都随机的发送到配置的writeHost,1.5以后废弃不推荐。
switchType
-1 表示不自动切换
1 默认值,自动切换
2 基于MySQL主从同步的状态决定是否切换
3 基于MySQL galary cluster的切换机制(适合集群)(1.4.1)心跳语句为 show status like 'wsrep%';

重启服务并连接mycat,配置成功

sudo /usr/local/mycat/bin/mycat restart

mysql -uroot -p -h127.0.0.1 -P8066

测试

连接mycat创建表,并插入一条数据。(已配置主从同步)

create table tb (id int(11), username varchar(255));
insert into tb (id, username) values (1, 'tom');

去从库单独插入一条数据

insert into tb (id, username) values (2, 'jerry');

此时主库tb表有一条数据,从库有两条数据。证明mycat插入是在主库完成,数据成功同步到从库

mycat查询验证,结果为两条数据。证明查询是在从库

select * from tb;

OK.

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值