(补)MySql主从模式与读写分离,Mysql分库分表
一、MySql主从模式实现读写分离
前提两台mysql一致
1、修改主数据库的配置文件。/etc/my.cnf 开启日志 设置server_id 注意主节点id一定要比从节点id小
2、重启服务service mysql restart.再授权从节点可以访问:grant all privileges on *.* to 'xxxx'@'xxx.xxx.x.xxx' identified by 'password' with grant option;
注意日志文件存在于mysql/data/。xxxxx.index文件,存储日志文件在哪里..auto.cnf当前mysql的uuid(主备不要重复)
3、从数据库设置:。注意要比主节点的数值大。不要开启日志。
4,开启服务,连接后先停止从 stop slave .再从新配置主节点信息:change master to master_host='192.168.17.132',master_user='myslave',master_password='smallming',master_log_file='master_log.000001';
上面分别为主节点ip、名称、密码、日志名称。设置完开启start slave
主从配置完成。
二、Mycat
1、JDK配置、端口放开、mycat所在服务器访问mysql权限设置。就不说了
2、解压mycat.首先:rule.xml配置:
<tableRule name="crc32slot1">
<rule>
<columns>table1_id</columns>
<algorithm>crc32slot</algorithm>
</rule>
</tableRule>
其次配置schemal.xml:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="databasename" checkSQLschema="false" sqlMaxLimit="100">
<table name="tablename1" dataNode="dn1,dn2,dn3" rule="crc32slot" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.17.132:3306" user="root"
password="xxxxx">
<readHost host="hostS2" url="192.168.17.133:3306" user="root" password="xxxxx" />
</writeHost>
</dataHost>
</mycat:schema>
最后配置mycat/conf/server.xml:
3、mycat/bin下 。./mycat start.如果启动失败,去mycat/logs/wrapper.log查看异常信息(重点 Cause By)
4、使用navicat连接mycat(把mycat当成数据库使用即可.