mycat学习(一) 使用mycat实现mysql读写分离

1.下载mycat源码
下载地址:https://github.com/MyCATApache/Mycat-Server,我下载的版本是1.7。
下载完成后使用eclipse导入工程,并刷好maven。

2.mysql配置主从同步参考:https://blog.csdn.net/u011943534/article/details/87868939

3.配置resources/server.xml
其中user表示mycat的用户名密码,schemas表示mycat逻辑库名称,readOnly表示此用户只读

<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	<system>   
		<property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
	</system>
	
	<user name="root">
		<property name="password">123456</property>
		<property name="schemas">TESTDB</property>
	</user>

	<user name="user">
		<property name="password">user</property>
		<property name="schemas">TESTDB</property>
		<property name="readOnly">true</property>
	</user>

</mycat:server>

4.配置schema.xml
schema说明:
name与server.xml中schemas一致
dataNode该属性用于绑定逻辑库到某个具体的database上

dataNode说明:
name定义数据节点的名称
dataHost定义该分片属于哪个数据库实例
database实际数据库名称

dataHost 说明:
balance 0 不读写分离,1全部的readHost与standbywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。2所有读操作都随机的在writeHost、readhost上分发。3所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。
writeType0所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个
writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties。2所有写操作都随机的发送到配置的writeHost
switchType-1表示不自动切换,1默认值,自动切换,2基于MySQL主从同步的状态决定是否切换
心跳语句为showslavestatus,3基于MySQLgalarycluster的切换机制(适合集群)
heatbeat心跳的sql
writeHost 写的实际数据库配置
readHost 读的实际数据库配置

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

	<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
	</schema>
	
	<dataNode name="dn1" dataHost="localhost1" database="test" />
	
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="192.168.100.87:3306" user="root" password="ROOT_iscas123">
			<!-- can have multi read hosts -->
			<readHost host="hostS2" url="192.168.100.91:3306" user="root" password="ROOT_iscas123" />
		</writeHost>
		
	</dataHost>

</mycat:schema>

5.从MycatStartup类启动

6.测试连接

public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.100.88:8066/TESTDB", "root", "123456");
        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery("select name from test1");
        while (resultSet.next()) {
            System.out.println(resultSet.getString("name"));
        }
        resultSet.close();
        statement.close();
        conn.close();
    }

7.MYCAT日志报Unknown charsetIndex:255错误
index_to_charset.properties
在配置文件最后加入255=utf8mb4,重启服务即正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值