根据上一篇文档,实现了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;