读写分离
准备工作
mysql> create user mycat@'localhost' identified by '123456';
mysql> grant all on *.* to mycat@'localhost';
/usr/local/mycat/conf/
├── clusters
│ └── prototype.cluster.json
├── datasources
│ └── prototypeDs.datasource.json
├── schemas
│ ├── information_schema.schema.json
│ └── mysql.schema.json
├── users
│ └── root.user.json
chmod +x /usr/local/mycat/bin/*
/usr/local/mycat/bin/mycat start
读写分离配置
- 连接mycat
mysql -h127.0.0.1 -P8066 -umycatuser -p'654321'
- 新增三个数据源
/*+ mycat:createDataSource {
"instanceType": "WRITE",
"name": "mysql21",
"url": "jdbc:mysql://192.168.88.21:3306/",
"user": "mycat",
"password": "123456"
} */;
/*+ mycat:createDataSource {
"instanceType": "READ",
"name": "mysql22",
"url": "jdbc:mysql://192.168.88.22:3306/",
"user": "mycat",
"password": "123456"
} */;
/*+ mycat:createDataSource {
"instanceType": "READ",
"name": "mysql23",
"url": "jdbc:mysql://192.168.88.23:3306/",
"user": "mycat",
"password": "123456"
} */;
- 查看创建好的数据源
/usr/local/mycat/conf/datasources/
├── mysql21.datasource.json
├── mysql22.datasource.json
├── mysql23.datasource.json
└── prototypeDs.datasource.json
- 每个数据库节点都单独创建用户
mysql -e "create user mycat@'%' identified by '123456';"
mysql -e "grant all on *.* to mycat@'%';"
- 新增一个集群
/*! mycat:createCluster {
"clusterType": "MASTER_SLAVE",
"masters": ["mysql21"],
"replicas": ["mysql22", "mysql23"],
"name": "rwcluster",
"readBalanceType": "BALANCE_ALL_READ"
} */;
- 查看创建好的集群
ls /usr/local/mycat/conf/clusters/
prototype.cluster.json rwcluster.cluster.json
- 新增一个逻辑库
/*+ mycat:createSchema {
"schemaName": "mydb",
"targetName": "rwcluster"
} */;
- 查看创建好的逻辑库
mysql> /*+ mycat:showSchemas{} */\G
*************************** 1. row ***************************
SCHEMA_NAME: mydb
DEFAULT_TARGET_NAME: rwcluster
TABLE_NAMES: user
注意事项
- 读写分离建立在已有主从复制关系的节点上 - 验证
show slave status\G
- 实际操作建议写节点采用
READ_WRITE
- 实际操作建议集群采用
BALANCE_ALL_READ_WRITE