首页 » MySQL » 基于MYCAT的MYSQL主从与读写分离配置详解与示例

基于MYCAT的MYSQL主从与读写分离配置详解与示例

原文 http://blog.csdn.net/xiyang_1990/article/details/78092630

2017-09-26 12:21:04阅读(429)

原文地址:http://blog.csdn.net/dreamcode/article/details/49511833

第三版_基于MYCATMYSQL主从读写分离配置详解与示例 

完整文章下载地址:http://download.csdn.net/detail/dreamcode/9383512


1、不使用Mycat托管MySQL主从服务器,简单使用如下配置:

         <dataNodename="dn1" dataHost="localhost1" database="db1"/>

         <dataNodename="dn2" dataHost="localhost1" database="db2"/>

         <dataNodename="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>selectuser()</heartbeat>

                   <writeHosthost="hostM" url="10.1.176.158:3306" user="root"

                            password="123456">

                   </writeHost>

         </dataHost>

2、使用Mycat托管主从切换,使用如下配置:

         <dataHostname="localhost1" maxCon="1000" minCon="500"balance="2"

                   writeType="0" dbType="mysql"dbDriver="native" switchType="2"  slaveThreshold="100">

                   <heartbeat>show slave status</heartbeat>

                   <!--can have multi write hosts -->

                   <writeHosthost="hostM1" url="10.1.176.158:3306" user="root"

                            password="123456">

                   </writeHost>

                   <writeHosthost="hostS1" url="10.1.176.78:3306" user="root"

                            password="www.com.workssys"/>

</dataHost>

(1)注意,如果只有一个writeHost,主挂了,读也不能用。writeType=0,写操作只发第一个writeHost,发生了切换,原来的从变为主,所有写操作在原来的从执行,如果不是双向复制原来的主数据就是旧的。切换间隔是5次心跳时间,默认是10 * 5=50秒(第一次10秒没响应,后面可能会变成15秒检测,然后20秒,最后真的没响应就认为挂了),心跳配置在server.xml,使用dataNodeHeartbeatPeriod参数:对后端所有读、写库发起心跳的间隔时间,默认是10秒。

(2)注意,切换后重启原来的主,如果主从不同步 ,报错:Slave_SQL_Running:No

数据保证一致后,执行:

mysql> slave stop;

Query OK, 0 rows affected(0.00 sec)

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

Query OK, 0 rows affected(0.00 sec)

mysql> slave start;

Query OK, 0 rows affected(0.00 sec)

mysql> show slave status\G

(2)切换后,Mycat会标记新的主从状态,主从状态保存在/conf/dnindex.properties文件,正常情况是将原来的从就作为主,主从对调,修改schema.xml文件。但是如果想恢复原来的主,需要执行9066端口的Mycat管理工具的switch命令切换数据源:

switch @@datasource name:index

name:schema中配置的dataHost 中name。

index:schema中配置的dataHost 的writeHost index 位标,即按照配置顺序从上到下的一次顺序,从0开始,即第一个是WriteHost是0,另一个就是1。

切换数据源时,会将原数据源所有的连接池中连接关闭,并且从新数据源创建新连接,此时mycat服务不可用。

dnindex.properties文件记录了当前的活跃writer。

<dataHostname="blog" maxCon="100" minCon="10"balance="0"

writeType="0"dbType="mysql" dbDriver="native">

<heartbeat>select1</heartbeat>

<writeHosthost="master" url="127.0.0.1:3306" user="root"password="root"></writeHost>

<writeHosthost="master2" url="127.0.0.1:3306" user="root1"password="root"</writeHost>

</dataHost>

mysql> show @@datasource;

+----------+---------+-------+----------------+------+------+--------+------+--

|DATANODE | NAME | TYPE | HOST | PORT | W/R | ACTIVE | IDLE | SIZE | EXECUTE |

+----------+---------+-------+----------------+------+------+--------+------+--|blog | master | mysql | 121.40.121.133 | 3306 | W | 0 | 10 | 100 | 16 |

|blog | master2 | mysql | 127.0.0.1 | 3306 | W | 0 | 0 | 100 | 0 |

+----------+---------+-------+----------------+------+------+--------+------+--2rows in set (0.00 sec)

mysql> switch @@datasource blog:1;

Query OK, 1 row affected (1min 0.05 sec)

(3)切换后,查看哪一个在执行库操作

show @@heartbeat、show @@backend

观察RS_CODE字段

基于MYCAT的MYSQL主从与读写分离配置详解与示例

(4)主突然宕机后,恢复顺序:

       1)查看数据是否同步,人为同步数据,同步数据时注意,主从同步状态时一定要在主的那一端执行操作,然后主会同步到从;但是一旦在从那一端操作的话,执行到主,主又会返回给从,如执行下面的操作,有drop table操作非常危险

基于MYCAT的MYSQL主从与读写分离配置详解与示例

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹

天天可领!最高99块!土豪站长12月发红包啦!

关闭
支付宝红包