登录mycat 命令:mysql -uroot -p123456 -h 192.168.57.98 -P8066
1. 主库只负责读,备库只负责写,一主一备
当备库挂掉时,无法读取数据
当主库挂掉时,无法写数据,但是还能读取数据
第一种情况:当配置为 balance=3;writetype=1;switch=0或者switch=1;
当备库挂掉时,无法读取数据
当主库挂掉时,无法写数据,但是还能读取数据
第二种情况:当配置为balance=3;writetype=1;switch=2时
主库挂掉既不能读也不能写
备库挂掉即能读也能写
配置的文件如下:
有两个参数需要注意,balance和 switchType。其中,balance指的负载均衡类型,目前的取值有4种:
balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上;
balance=“1”,全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡;如果是双主双从架构,正常情况下,只有第一台主库充当写操作,其余的三台全部是从读
balance=“2”,所有读操作都随机的在writeHost、readhost上分发;
balance=“3”,所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力。
heartbeat 标签指明用于和后端数据库进行心跳检查的语句。
可以使用两种方式检查: select user() 或者show slave status
write type
writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5以后已经废弃了。
writeType="2",没实现。 -1 表示不自动切换 1 默认值,自动切换 2 基于MySQL 主从同步的状态决定是否切换
switchType指的是切换的模式,目前的取值也有4种:
switchType=’-1’ 表示不自动切换;
switchType=‘1’ 默认值,表示自动切换;
switchType=‘2’ 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status;
switchType='3’基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。
2. 一主一备,主备都能读写,主库down掉后 就以从库为准了,就算主库恢复了,还是以从库为准
配置:当配置为 balance=2;writetype=0;switch=1;
当主库和备库都能读写,当主库和备库随机读,主库down了以从库为准进行读写,当主库恢复后,读还是随机的两台机器,但是写数据以从库为准,无法恢复到从主库进行写了
3. 双主、互为主备
互为主备:只要把slave节点也按照master节点进行配置,就可以实现双向的主从复制。
从库新增用户:grant replication slave,replication client on *.* to 'slave'@'192.168.57.98' identified by 'Zdkx#2021';
从库指定master地址:change master to master_host='192.168.56.46', master_user='slave', master_password='Zdkx#2021', master_port=3306, master_log_file='mysql-bin.000020', master_log_pos=941, master_connect_retry=30;
配置:当配置为 balance=1;writetype=0;switch=1;
schema 配置如下: