双主环境搭建
参见:https://cakepanit.com/forward/d3c702fe.html
垂直拆分:
mycat垂直分表
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| [root@db02 ~] [root@db02 /application/mycat/conf] [root@db02 /application/mycat/conf] <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1"> <table name="user" dataNode="sh1"/> <table name="order_t" dataNode="sh2"/> </schema> <dataNode name="sh1" dataHost="oldguo1" database= "taobao" /> <dataNode name="sh2" dataHost="oldguo2" database= "taobao" /> <dataHost name="oldguo1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.51:3307" user="root" password="123"> <readHost host="db2" url="10.0.0.51:3309" user="root" password="123" /> </writeHost> <writeHost host="db3" url="10.0.0.52:3307" user="root" password="123"> <readHost host="db4" url="10.0.0.52:3309" user="root" password="123" /> </writeHost> </dataHost> <dataHost name="oldguo2" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="db1" url="10.0.0.51:3308" user="root" password="123"> <readHost host="db2" url="10.0.0.51:3310" user="root" password="123" /> </writeHost> <writeHost host="db3" url="10.0.0.52:3308" user="root" password="123"> <readHost host="db4" url="10.0.0.52:3310" user="root" password="123" /> </writeHost> </dataHost> </mycat:schema> EOF
|
配置文件解释:
- 两组datanode
- sh1下面四组节点【承载taobao库user表】
- 10.0.0.51:3307[db1]主库 //写操作
- 10.0.0.51:3309[db2]从库 //读操作
- 10.0.0.52:3307[db3]主库 //读操作,同时是sh1中db1的替补。实现高可用
- 10.0.0.52:3309[db4]从库 //读操作
- sh2下面四组节点【承载taobao库order_t表】
- 10.0.0.51:3308[db1]主库 //写操作
- 10.0.0.51:3310[db2]从库 //读操作
- 10.0.0.52:3318[db3]主库 //读操作,同时是sh2中db1的替补。实现高可用
- 10.0.0.52:3320[db4]从库 //读操作
物理架构图:
垂直拆分逻辑架构图:
创建测试库和表:(db01或db02)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| mysql -S /data/3307/mysql.sock -e "create database taobao charset utf8;" mysql -S /data/3308/mysql.sock -e "create database taobao charset utf8;" mysql -S /data/3307/mysql.sock -e "use taobao;create table user(id int,name varchar(20))" mysql -S /data/3308/mysql.sock -e "use taobao;create table order_t(id int,name varchar(20))"
[root@db02 ~] Stopping Mycat-server... Stopped Mycat-server. Starting Mycat-server... //此时,sh1四个节点中只存在user表,sh2四个节点中只存在order_t表【以表为粒度实现了垂直拆分】。并且两个数据节点都实现了读写分离和高可用
[root@db02 ~] mysql> show databases; +----------+ | DATABASE | +----------+ | TESTDB | +----------+ 1 row in set (0.00 sec) mysql> use TESTDB //进入mycat逻辑库 mysql> show tables; +------------------+ | Tables_in_taobao | +------------------+ | order_t | | user | +------------------+ 2 rows in set (0.00 sec)
//分别插入数据 mysql> insert into user(id,name) values(1,'zs'); Query OK, 1 row affected (0.04 sec)
mysql> insert into user(id,name) values(2,'ls'); Query OK, 1 row affected (0.00 sec)
mysql> insert into user(id,name) values(3,'w5'); Query OK, 1 row affected (0.01 sec)
mysql> insert into order_t(id,name) values(1,'zs2'); Query OK, 1 row affected (0.01 sec)
mysql> insert into order_t(id,name) values(2,'ls2'); Query OK, 1 row affected (0.01 sec)
mysql> insert into order_t(id,name) values(3,'w52'); Query OK, 1 row affected (0.00 sec)
|
验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [root@db01 ~] +------------------+ | Tables_in_taobao | +------------------+ | order_t | +------------------+ +------+------+ | id | name | +------+------+ | 1 | zs2 | | 2 | ls2 | | 3 | w52 | +------+------+ [root@db01 ~] +------------------+ | Tables_in_taobao | +------------------+ | user | +------------------+ +------+------+ | id | name | +------+------+ | 1 | zs | | 2 | ls | | 3 | w5 | +------+------+
|
MySQL-MyCAT多主多从环境下实现表的垂直拆分
转载前请阅读本站 版权协议,文章著作权归 饼铛 所有,转载请注明出处。