假设有192.168.0.190和192.168.0.191两台服务器
mycat部署在191
190服务器mysql中有shop_db库
191服务器mysql中有user_db库
可以看到两个库中都有user表,我们假设user为全局表
1、为mycat配置权限用户,分别在两个mysql服务器上执行
create user mycat@'%' identified by '123456'; grant all on *.* to mycat@'%';
2、配置server.xml
<user name="root" defaultAccount="true"> <property name="usingDecrypt">1</property> <property name="password">CcpBZb0rdy7uISSTqMsJeNfhSB8qrBF/WrE//mLF8dYuMLA5GaMbKdeHaA0TKEPQ+wHwzQ2xH/wmDEzbsfw48g==</property> <!--<property name="password">woaini8619</property>--> <property name="schemas">mydb</property> </user>
以上配置mycat登录账户,以及逻辑库(虚拟)名称
password一行,可以使用明文,也可以使用加密的字符,如果要隐藏明文,则
cd /usr/local/Mycat/lib java -cp Mycat-server-1.6.5-release.jar io.mycat.util.DecryptUtil 0:root:123456
使用加密字符还必须配置usingDecrypt为true
3、配置schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="mydb" checkSQLschema="false" sqlMaxLimit="1000"> <table name="user" primaryKey="user_id" dataNode="udb,pdb" type="global" /> <table name="user_detail" primaryKey="detail_id" dataNode="udb" /> <table name="product" primaryKey="product_id" dataNode="pdb" /> </schema> <dataNode name="udb" dataHost="mysqldb01" database="user_db" /> <dataNode name="pdb" dataHost="mysqldb02" database="shop_db" /> <dataHost name="mysqldb01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="192.168.0.191" url="192.168.0.191:3306" user="mycat" password="123456" /> </dataHost> <dataHost name="mysqldb02" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1"> <heartbeat>select user()</heartbeat> <writeHost host="192.168.0.190" url="192.168.0.190:3306" user="mycat" password="123456" /> </dataHost> </mycat:schema>
注意这里的user全局表配置,必须指定type="global"属性
最后进入 mycat/bin目录
./mycat start
测试
mysql -uroot -p -P8066 -h127.0.0.1
可以看到通过连接mycat两台服务器上的分表合并到这个虚拟数据库上来了
访客评论