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表示此用户只读



	   
		0  
	
	
	
		123456
		TESTDB
	

	
		user
		TESTDB
		true
	


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 读的实际数据库配置





	
	
	
	
	
	
		select user()
		
		
			
			
		
		
	


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,重启服务即正常

你可能感兴趣的:(mycat)