停止维护
。Mycat
是开源社区在阿里 cobar 基础上进行二次开发,解决了 cobar 存在的问题,并且加入了许多新的功能在其中。青出于蓝而胜于蓝。收费
的中间件。舍弃了一些功能,专注在性能和稳定性上。go 语言
开发,还需要发展,需要不断完善。架构很复杂
。不支持 MySQL 原生协议,使用需要大量改造成本。拦截
”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了一些特定的分析:如分片分析
、路由分析
、读写分离分析
、缓存分析
等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。schema.xml: 配置读写主机的ip、端口、数据库用户密码等,定义逻辑库,表、分片节点等内容
balance
属性,通过此属性配置读写分离的类型
rule.xml: 定义分片规则
server.xml: 定义用户以及系统相关变量,如端口等
…
<user name="mycat">
<property name="password">123456property>
<property name="schemas">TESTDBproperty>
user>
…
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
schema>
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="2"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()heartbeat>
<writeHost host="hostM1" url="192.168.101.2:3306" user="root" password="root">
<readHost host="hostS2" url="192.168.101.4:3306" user="root" password="root" />
writeHost>
dataHost>
mycat:schema>
mycat.bat install
注册mycat服务到Windows,然后执行mycat.bat start
启动mycatmysql -umycat -p123456 -P 8066 -h 192.168.101.2
TESTDB
;#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字
#设置logbin格式
binlog_format=STATEMENT
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'password';
show master status;
(记录下File和Position的值)CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
start slave;
show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
INSERT INTO mytbl VALUES(2,@@hostname);
stop slave;
stop slave; reset master;
# 在作为从数据库的时候, 有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1, 取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
log-slave-updates
auto-increment-increment=2
auto-increment-offset=1
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_PORT=3309,
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
schema>
<dataNode name="dn1" dataHost="host1" database="testdb" />
<dataHost name="host1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()heartbeat>
<writeHost host="hostM1" url="192.168.101.2:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.101.4:3306" user="root" password="root" />
writeHost>
<writeHost host="hostM2" url="192.168.101.2:3309" user="root" password="root">
<readHost host="hostS2" url="192.168.101.2:3310" user="root" password="root" />
writeHost>
dataHost>
mycat:schema>
default-time_zone = '+8:00'
,然后重启mysql,可以配置mysql的系统时间mysql_secure_installation
:用于安装完MySQL后配置root密码等/var/log/mysql/error.log
是MySQL的错误日志bind-address='*'
是开启远程登录的前提/etc/mysql/mysql.conf.d/mysqld.cnf
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
can't connect to mysql server ,errmsg:Host '192.168.101.2' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
,在对应的MySQL中执行flush hosts;
即可