Mysql开源

mysql 利用mycat插件实现读写分离

2018-09-03  本文已影响79人  真海ice

根据上一篇文档,实现了mysql的主从备份,确保数据安全。
本编文档在一主一从的基础上实现读写分离,提高数据库的读写效率。

一、主库增加Mycat访问用户

在主(Master)数据库中增加mycat的访问的用户。

mysql> grant all privileges on *.* to 'mycat'@'192.168.209.128' identified by '123456' with grant option;

二、安装Mycat

百度搜索下载mycat:Mycat-server-1.6-RELEASE-20161028204710-linux.tar
解压后安装完成,像tomcat的安装。
修改/mycat/conf/schema.xml文件内容

        <!-- 这种配置是dn1逻辑库下的所有的表 -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">      
    </schema>
       <!-- cib 为你的数据库的名称 -->
    <dataNode name="dn1" dataHost="localhost1" database="cib" />
    
    <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.209.128:3306" user="root" password="123456">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="192.168.209.129:3306" user="root" password="123456" />
        </writeHost>

    </dataHost>

注意给安装mycat机器开通8066和9066端口,centos7版本开通方式

# firewall-cmd --zone=public --add-port=8066/tcp --permanent 
# firewall-cmd --zone=public --add-port=9066/tcp --permanent 
# firewall-cmd --reload

三、创建物理库和物理表

<dataNode name="dn1" dataHost="localhost1" database="cib" />
配置中的cib的物理库,要自己在mysql主库(Master)中创建,同时从库(Slave)也会创建,此时cib的创建与mycat没有关系

创建库中表,可以提前在主从库中创建好,也可以通过mysql登录mycat创建库;
在主库mysql安装路径下的/bin目录下
./mysql -uroot -p -h192.168.209.128 -P8066
mysql> use TESTDB;
mysql> show tables;
在这里可以创建表,同时主从库中都会有;

验证方法:可以创建一个表,往里面插入几条数据,然后修改从库(Slave)中的一条数据,此条数据主库没有变;再次通过mycat查询出的数据是从库中的数据,验证读写分离成功。

在程序中可以直接连接mycat实现,主从备份(数据安全),读写分离(效率高)功能。应用举例:

jdbc.url=jdbc:mysql://192.168.209.128:8066/TESTDB?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

四、修改从库的存储引擎

mysql数据库存储引擎主要是InnoDB(5.5版本后默认)和MyISAM
因为从库中不存事物的问题,所以更改从库的存储引擎为MyISAM,来提高‘读’的效率;
在linux环境下在 /etc/my.cnf 中增加:
default-storage-engine=MYISAM

查看引擎和某张表的引擎

mysql> show engines;
mysql> show create table table_name;
上一篇下一篇

猜你喜欢

热点阅读