mycat实现的mysql的读写分离

  mycat是一个是个中间件,可以用作进行mysql的读写分离、数据分片以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施,让架构具有很强的灵活性和扩展性,
  mycat的智能优化模块,系统的数据访问一目了然,可以根据统计的数据分析,自动或手动调整后端存储,将不同的表映射到不通的存储引擎上。
  Mycat是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而Mycat并没有存储引擎,所以并不是完全意义的分布式数据库系统。

mycat应用场景:
1. 单纯的读写分离,支持读写分离,主从切换;
2. 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片;
3. 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化;
4. 报表系统,借助于Mycat的分表能力,处理大规模报表的统计;
5. 替代Hbase,分析大数据;
6. 作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,
此时Mycat可能是最简单有效的选择。

mycat的读写分离建立在mysql主从复制已经做好的情况之下。

安装mycat:
1. 首先需要配置java环境。
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

mv mycat /usr/local/

vim /etc/profile
export PATH=/usr/local/mycat/bin:$PATH

2. 创建mycat的管理用户,授权访问MyCAT的用户账号和授权信息,在修改server.xml
主库上:grant all privileges on *.* to 'mycat'@'192.168.3.111' identified by '123456';
        grant all privileges on *.* to 'mycat'@'%' identified by '123456';
从库上(只需要select权限即可):grant select on *.* to 'mycat'@'192.168.2.235' identified by '123456';

3. 修改mycat配置文件server.xml
 在段配置主库的用户密码:  
     
            123456
            >test3

     
在server.xml配置连接主库的用户,这块的用户需要有增删改查权限。这里的test3,不需要是真实的库名,可任意指定。
但是需要跟schema.xml配置文件的库名统一即可。

4. 修改schema.xml文件:  
 
 
     

    
 
 

 balance="1"
 writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
 
 select user()
 
 
 
  user="mycat" password="123456" />
 

 

 
5. 启动mycat
 mycat console (控制台启动) 或者 mycat start
1)控制台启动出现:jvm 1    | MyCAT Server startup successfully. see logs in logs/mycat.log  即ok。
2)start启动查看8066和9066端口是否监听。 

报错:
Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHo
stException: bogon: bogon: Name or service not known
解决:在/etc/hosts里面添加本机的主机名。
--------------------------------------------------------------------------------------------------------------------------------------------------
schema.xml文件的部分详解



   
       
       
       

       

       

       

       

           
               
           

           
       

   

   
   
            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
       
        select user()
       
       
   

            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
       
        select user()
       
   


上面配置的是连接后端mysql的配置,

你可能感兴趣的:(mysql)