docker pull mysql:5.7
docker run -p 3301:3306 --name mysql-master1 -v /usr/local/mysql-master1/conf:/etc/mysql/conf.d -v /usr/local/mysql-master1/logs:/logs -v /usr/local/mysql-master1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3302:3306 --name mysql-slave1 -v /usr/local/mysql-slave1/conf:/etc/mysql/conf.d -v /usr/local/mysql-slave1/logs:/logs -v /usr/local/mysql-slave1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3303:3306 --name mysql-master2 -v /usr/local/mysql-master2/conf:/etc/mysql/conf.d -v /usr/local/mysql-master2/logs:/logs -v /usr/local/mysql-master2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3304:3306 --name mysql-slave2 -v /usr/local/mysql-slave2/conf:/etc/mysql/conf.d -v /usr/local/mysql-slave2/logs:/logs -v /usr/local/mysql-slave2/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=1
## binlog-ignore-db,指定不需要同步的数据库名称,设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
## binlog-do-db= 指定需要同步的数据库名称
# binlog-do-db= (这个配置也可以不加,则除了 上面排除 binlog-ignore-db 外的库,都备份)
#重点 在作为从数据库时候,有写入操作也要更新二进制文件
log_slave_updates=1
## 开启二进制日志功能
#记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故 障时数据的无损失恢复。
log-bin=mysql-master1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
#statement 记录所有的写操作到bin-log文件 缺点:sql语句执行set time=now() 会出现主从不一致
#row 记录每行的变换 缺点:数据量大的时候,记录数据多
#mixed是statement和row的混合
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#通用查询日志
#记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令, 对我们复原操作的实际场
#景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
general_log=ON
general_log_file=/var/lib/mysql/mysql-general.log
#慢查询日志
#记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=3
#设置慢查询的阈值为3秒,超出此设定值的SQL即被记录到慢查询日志
log_output=FILE
max_allowed_packet=200M
#错误日志
#记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的 状态,从而对服务器进行维护。
log-error=/var/lib/mysql/mysql-error.log
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=2
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=all
# relay_log配置中继日志
#用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。 从服务器通过读取中继#日志的内容,来同步主服务器上的操作。
relay_log=mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=3
## binlog-ignore-db,指定不需要同步的数据库名称,设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
## binlog-do-db= 指定需要同步的数据库名称
# binlog-do-db= (这个配置也可以不加,则除了 上面排除 binlog-ignore-db 外的库,都备份)
#重点 在作为从数据库时候,有写入操作也要更新二进制文件
log_slave_updates=1
## 开启二进制日志功能
#记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故 障时数据的无损失恢复。
log-bin=mysql-master2-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
#statement 记录所有的写操作到bin-log文件 缺点:sql语句执行set time=now() 会出现主从不一致
#row 记录每行的变换 缺点:数据量大的时候,记录数据多
#mixed是statement和row的混合
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
#通用查询日志
#记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令, 对我们复原操作的实际场
#景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
general_log=ON
general_log_file=/var/lib/mysql/mysql-general.log
#慢查询日志
#记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=3
#设置慢查询的阈值为3秒,超出此设定值的SQL即被记录到慢查询日志
log_output=FILE
max_allowed_packet=200M
#错误日志
#记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的 状态,从而对服务器进行维护。
log-error=/var/lib/mysql/mysql-error.log
[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=4
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mysql-slave2-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=all
# relay_log配置中继日志
#用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。 从服务器通过读取中继#日志的内容,来同步主服务器上的操作。
relay_log=mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
[root@Zwen conf]# docker restart mysql-master1
mysql-master1
[root@Zwen conf]# docker restart mysql-master2
mysql-master2
[root@Zwen conf]# docker restart mysql-slave1
mysql-slave1
[root@Zwen conf]# docker restart mysql-slave2
mysql-slave2
[root@Zwen conf]#
#进入容器
[root@Zwen /]# docker exec -it mysql-master1 /bin/bash
#连接mysql
root@013075cb9308:/# mysql -uroot -p123456
#查看主从状态
mysql> show master status;
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-master1-bin.000001 | 154 | | sys,mysql,information_schema,performance_schema | |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)
#master容器实例内创建数据同步用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'
> OK
> 时间: 0.031s
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'
> OK
> 时间: 0.018s
#进入容器
[root@Zwen /]# docker exec -it mysql-master2 /bin/bash
#连接mysql
root@013075cb9308:/# mysql -uroot -p123456
#查看主从状态
mysql> show master status;
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-master2-bin.000001 | 154 | | sys,mysql,information_schema,performance_schema | |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)
#master容器实例内创建数据同步用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'
> OK
> 时间: 0.031s
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'
> OK
> 时间: 0.018s
mysql删除主从的方法:
1、利用“stop slave;”语句停止slave服务器的主从同步;
2、利用“RESET MASTER;”语句重置master服务;
3、利用“reset slave;”语句重置slave服务;
4、重启数据库即可。
#进入容器
[root@Zwen conf]# docker exec -it mysql-slave1 /bin/bash
#连接mysql
root@3f729a7f87cf:/# mysql -uroot -p123456
#停止slave服务器的主从同步
mysql> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)
#重置master服务
mysql> RESET MASTER;
Query OK, 0 rows affected (0.01 sec)
#进入容器
[root@Zwen /]# docker exec -it mysql-slave1 /bin/bash
#连接mysql
root@ea13a82226bf:/# mysql -uroot -p123456
#进行关联主数据库
mysql> change master to master_host='8.131.80.107', master_user='slave', master_password='123456', master_port=3301, master_log_file='mysql-master1-bin.000001', master_log_pos=154, master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 8.131.80.107
Master_User: slave
Master_Port: 3301
Connect_Retry: 30
Master_Log_File: mysql-master1-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 328
Relay_Master_Log_File: mysql-master1-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 154
Relay_Log_Space: 535
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 7eb61420-ce0f-11ed-aeb7-0242ac110004
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
#进入容器
[root@Zwen /]# docker exec -it mysql-slave2 /bin/bash
#连接mysql
root@ea13a82226bf:/# mysql -uroot -p123456
#进行关联主数据库
mysql> change master to master_host='8.131.80.107', master_user='slave', master_password='123456', master_port=3303, master_log_file='mysql-master2-bin.000001', master_log_pos=154, master_connect_retry=30;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
#开启同步
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 8.131.80.107
Master_User: slave
Master_Port: 3303
Connect_Retry: 30
Master_Log_File: mysql-master2-bin.000001
Read_Master_Log_Pos: 617
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 791
Relay_Master_Log_File: mysql-master2-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 617
Relay_Log_Space: 998
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3
Master_UUID: 97ada26f-cebc-11ed-a1ff-0242ac110006
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
[root@Zwen conf]# docker exec -it mysql-master1 /bin/bash
root@ba51774f65fe:/# mysql -uroot -p123456
mysql> change master to master_host='8.131.80.107', master_user='slave', master_password='123456', master_port=3303, master_log_file='mysql-master2-bin.000001', master_log_pos=617, master_connect_retry=30;
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 8.131.80.107
Master_User: slave
Master_Port: 3303
Connect_Retry: 30
Master_Log_File: mysql-master2-bin.000001
Read_Master_Log_Pos: 617
Relay_Log_File: ba51774f65fe-relay-bin.000002
Relay_Log_Pos: 328
Relay_Master_Log_File: mysql-master2-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 617
Relay_Log_Space: 542
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3
Master_UUID: 97ada26f-cebc-11ed-a1ff-0242ac110006
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
mysql> show master status;
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-master1-bin.000001 | 154 | | sys,mysql,information_schema,performance_schema | |
+--------------------------+----------+--------------+-------------------------------------------------+-------------------+
1 row in set (0.00 sec)
[root@Zwen conf]# docker exec -it mysql-master2 /bin/bash
root@ba51774f65fe:/# mysql -uroot -p123456
mysql> change master to master_host='8.131.80.107', master_user='slave', master_password='123456', master_port=3301, master_log_file='mysql-master1-bin.000001', master_log_pos=154, master_connect_retry=30;
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 8.131.80.107
Master_User: slave
Master_Port: 3301
Connect_Retry: 30
Master_Log_File: mysql-master1-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: 5ff9217012df-relay-bin.000002
Relay_Log_Pos: 328
Relay_Master_Log_File: mysql-master1-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 154
Relay_Log_Space: 542
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 7eb61420-ce0f-11ed-aeb7-0242ac110004
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
1、Slave_IO_Running、Slave_SQL_Running 均为yes即可
2、mysql的主从复制为接入点复制,即配置完成后整体生效
主从复制搭建未完成,主库先创建表,在主库进行数据修改,则不可同步
### 应注意在配置从机时,需要指定主机Position值(操作数据库Position会发生改变)主从复制搭建完成后,主库创建表,从库可创建
mysql> show master status;
±-------------------------±---------±-------------±------------------------------------------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-------------------------±---------±-------------±------------------------------------------------±------------------+
| mysql-master1-bin.000001 | 154 | | sys,mysql,information_schema,performance_schema | |
±-------------------------±---------±-------------±------------------------------------------------±------------------+
1 row in set (0.00 sec)
//解压
tar -zxvf Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz
//移动mycat位置
cp mycat -r /usr/local
<user name="mycat" defaultAccount="true">
<property name="password">123456property>
<property name="schemas">mybatis_plus_mycatproperty>
<property name="defaultSchema">mybatis_plus_mycatproperty>
user>
<user name="readonly">
<property name="password">123456property>
<property name="schemas">mybatis_plus_mycatproperty>
<property name="readOnly">trueproperty>
<property name="defaultSchema">mybatis_plus_mycatproperty>
user>
DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="mybatis_plus_mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
schema>
<dataNode name="dn1" dataHost="localhost1" database="mybatis_plus" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()heartbeat>
<writeHost host="hostM1" url="8.131.80.107:3301" user="root" password="123456">
<readHost host="hostS1" url="8.131.80.107:3302" user="root" password="123456" />
writeHost>
<writeHost host="hostM2" url="8.131.80.107:3303" user="root" password="123456">
<readHost host="hostS2" url="8.131.80.107:3304" user="root" password="123456" />
writeHost>
dataHost>
mycat:schema>
balance 属性
负载均衡类型,目前的取值有 3 种:
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 不负担读压力,
注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
writeType 属性
负载均衡类型,目前的取值有 3 种:
writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,
重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
writeType=“1”,所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。switchType 属
性
-1 表示不自动切换。
1 默认值,自动切换。
2 基于 MySQL 主从同步的状态决定是否切换。
switchType 属性
-1 表示不自动切换
1 默认值,自动切换
2 基于 MySQL 主从同步的状态决定是否切换
心跳语句为 show slave status
3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)
心跳语句为 show status like ‘wsrep%’修改dataHost的 balance=“1”
启动程序
控制台启动 在目录mycat/bin 执行 ./mycat console
后台启动 在目录mycat/bin 执行 ./mycat start
后台关闭:./mycat stop
后台重启:./mycat restart
状态: ./mycat status
日志文件:mycat/logs/wrapper.log