配置mod-long分片规则
- 配置schema.xml文件,schema.xml文件主要配置Mycat数据库、MySQL表、分片规则、分片类型。
- 打开文件。
1
vim /usr/local/mycat/conf/schema.xml
- 全部替换如下内容。
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
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="sysbench" checkSQLschema="false" > <table name="users" primaryKey="id" dataNode="dn1,dn2,dn3" rule="mod-long" autoIncrement="true" fetchStoreNodeByJdbc="true"> </table> </schema> <dataNode name="dn1" dataHost="dh1" database="sysbench" /> <dataNode name="dn2" dataHost="dh2" database="sysbench" /> <dataNode name="dn3" dataHost="dh3" database="sysbench" /> <dataHost name="dh1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3309" user="root" password="123456"> <readHost host="lh" url="localhost:3309" user="root" password="123456"/> </writeHost> </dataHost> <dataHost name="dh2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3310" user="root" password="123456"> <readHost host="lh" url="localhost:3310" user="root" password="123456"/> </writeHost> </dataHost> <dataHost name="dh3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="lh" url="localhost:3311" user="root" password="123456"> <readHost host="lh" url="localhost:3311" user="root" password="123456"/> </writeHost> </dataHost> </mycat:schema>
该示例将users表按照mod-long分片规则,将数据平均分散到三个数据库中,配置每个数据库的用户密码、IP地址和端口,该示例将mycat和MySQL数据库部署在同一台物理机上,IP地址采用localhost,可根据实际环境进行调整。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开文件。
- 启动Mycat。
- 启动Mycat。
1
mycat start
- 查看Mycat是否正常启动。
1
mycat status
回显内容与图片内容一致,则表示已正常启动。
- 启动Mycat。
- 连接Mycat数据库,执行数据插入操作。
- 编辑文件。
vim /home/insert.sh
- 添加如下脚本内容。
1 2 3 4 5
#!/bin/bash for i in {1..10000} do /usr/local/mysql/bin/mysql -uroot -p1234567 -P8066 -h127.0.0.1 --default_auth=mysql_native_password -Dsysbench -e "insert into users(id,name) values($i,'ccc')" done
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 执行脚本。
1
sh /home/insert.sh
- 编辑文件。
- 查看数据分布。
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql1.sock -Dsysbench -e "select count(*) from users"
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql2.sock -Dsysbench -e "select count(*) from users"
1
/usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql3.sock -Dsysbench -e "select count(*) from users"
10000条数据均匀分布在每个数据库分片。
父主题: 部署Mycat数据库分片