±à¼ÍƼö: |
ÎÄÕ½²½âº£Á¿Êý¾ÝµÄ´æ´¢ÎÊÌ⣬ʲôÊÇÊý¾Ý¿â·ÖƬ£¬Mycat½éÉÜ£¬MycatµÄ·ÖƬ²ßÂÔ£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú,
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
º£Á¿Êý¾ÝµÄ´æ´¢ÎÊÌâ
Èç½ñËæ×Å»¥ÁªÍøµÄ·¢Õ¹£¬Êý¾ÝµÄÁ¿¼¶Ò²ÊdzÅÖ¸ÊýµÄÔö³¤£¬´ÓGBµ½TBµ½PB¡£¶ÔÊý¾ÝµÄ¸÷ÖÖ²Ù×÷Ò²ÊÇÓú¼ÓµÄÀ§ÄÑ£¬´«Í³µÄ¹ØÏµÐÔÊý¾Ý¿âÒѾÎÞ·¨Âú×ã¿ìËÙ²éѯÓë²åÈëÊý¾ÝµÄÐèÇó¡£Õâ¸öʱºòNoSQLµÄ³öÏÖÔÝʱ½â¾öÁËÕâһΣ»ú¡£Ëüͨ¹ý½µµÍÊý¾ÝµÄ°²È«ÐÔ£¬¼õÉÙ¶ÔÊÂÎñµÄÖ§³Ö£¬¼õÉÙ¶Ô¸´ÔÓ²éѯµÄÖ§³Ö£¬À´»ñÈ¡ÐÔÄÜÉϵÄÌáÉý¡£
µ«ÊÇ£¬ÔÚÓÐЩ³¡ºÏNoSQLһЩÕÛÖÔÊÇÎÞ·¨Âú×ãʹÓó¡¾°µÄ£¬¾Í±ÈÈçÓÐЩʹÓó¡¾°ÊǾø¶ÔÒªÓÐÊÂÎñÓ밲ȫָ±êµÄ¡£Õâ¸öʱºòNoSQL¿Ï¶¨ÊÇÎÞ·¨Âú×ãµÄ£¬ËùÒÔ»¹ÊÇÐèҪʹÓùØÏµÐÔÊý¾Ý¿â¡£Èç¹ûʹÓùØÏµÐÍÊý¾Ý¿â½â¾öº£Á¿´æ´¢µÄÎÊÌâÄØ£¿´Ëʱ¾ÍÐèÒª×öÊý¾Ý¿â¼¯Èº£¬ÎªÁËÌá¸ß²éѯÐÔÄܽ«Ò»¸öÊý¾Ý¿âµÄÊý¾Ý·ÖÉ¢µ½²»Í¬µÄÊý¾Ý¿âÖд洢¡£
ʲôÊÇÊý¾Ý¿â·ÖƬ
¼òµ¥À´Ëµ£¬¾ÍÊÇָͨ¹ýijÖÖÌØ¶¨µÄÌõ¼þ£¬½«ÎÒÃÇ´æ·ÅÔÚͬһ¸öÊý¾Ý¿âÖеÄÊý¾Ý·ÖÉ¢´æ·Åµ½¶à¸öÊý¾Ý¿â£¨Ö÷»ú£©ÉÏÃæ£¬ÒÔ´ïµ½·ÖÉ¢µ¥Ì¨É豸¸ºÔصÄЧ¹û¡£
Êý¾ÝµÄÇз֣¨Sharding£©¸ù¾ÝÆäÇзֹæÔòµÄÀàÐÍ£¬¿ÉÒÔ·ÖΪÁ½ÖÖÇзÖģʽ¡£
Ò»ÖÖÊǰ´ÕÕ²»Í¬µÄ±í£¨»òÕßSchema£©À´Çзֵ½²»Í¬µÄÊý¾Ý¿â£¨Ö÷»ú£©Ö®ÉÏ£¬ÕâÖÖÇпÉÒÔ³ÆÖ®ÎªÊý¾ÝµÄ´¹Ö±£¨×ÝÏò£©ÇзÖ

ÁíÍâÒ»ÖÖÔòÊǸù¾Ý±íÖеÄÊý¾ÝµÄÂß¼¹ØÏµ£¬½«Í¬Ò»¸ö±íÖеÄÊý¾Ý°´ÕÕijÖÖÌõ¼þ²ð·Öµ½¶ą̀Êý¾Ý¿â£¨Ö÷»ú£©ÉÏÃæ£¬ÕâÖÖÇзֳÆÖ®ÎªÊý¾ÝµÄˮƽ£¨ºáÏò£©Çз֡£

ÈçºÎʵÏÖÊý¾Ý¿â·ÖƬ
µ±Êý¾Ý¿â·ÖƬºó£¬Êý¾ÝÓÉÒ»¸öÊý¾Ý¿â·ÖÉ¢µ½¶à¸öÊý¾Ý¿âÖС£´ËʱϵͳҪ²éѯʱÐèÒªÇл»²»Í¬µÄÊý¾Ý¿â½øÐвéѯ£¬ÄÇôϵͳÈçºÎÖªµÀÒª²éѯµÄÊý¾ÝÔÚÄĸöÊý¾Ý¿âÖУ¿µ±Ìí¼ÓÒ»Ìõ¼Ç¼ʱҪÏòÄĸöÊý¾Ý¿âÖвåÈëÄØ£¿ÕâЩÎÊÌâ´¦ÀíÆðÀ´¶¼ÊǷdz£µÄÂé·³¡£
ÕâÖÖÇé¿öÏ¿ÉÒÔʹÓÃÒ»¸öÊý¾Ý¿âÖмä¼þmycatÀ´½â¾öÏà¹ØµÄÎÊÌâ¡£½ÓÏÂÀ´Á˽âÒ»ÏÂʲôÊÇmycat¡£
ʲôÊÇMycat£¿
Mycat ±³ºóÊǰ¢ÀïÔø¾¿ªÔ´µÄÖªÃû²úÆ·¡ª¡ªCobar¡£Cobar µÄºËÐŦÄܺÍÓÅÊÆÊÇ MySQL Êý¾Ý¿â·ÖƬ£¬´Ë²úÆ·Ôø¾¹ãΪÁ÷´«£¬¾Ý˵×îÔçµÄ·¢ÆðÕß¶Ô Mysql ºÜ¾«Í¨£¬ºóÀ´´Ó°¢ÀïÌø²ÛÁË£¬°¢ÀïËæºó¿ªÔ´µÄ Cobar£¬²¢Î¬³Öµ½ 2013 ÄêÄê³õ£¬È»ºó£¬¾ÍûÓÐÈ»ºóÁË¡£
Cobar µÄ˼·ºÍʵÏÖ·¾¶µÄÈ·²»´í¡£»ùÓÚ Java ¿ª·¢µÄ£¬ÊµÏÖÁË MySQL ¹«¿ªµÄ¶þ½øÖÆ´«ÊäÐÒ飬ÇÉÃîµØ½«×Ô¼ºÎ±×°³ÉÒ»¸ö MySQL Server£¬Ä¿Ç°ÊÐÃæÉϾø´ó¶àÊý MySQL ¿Í»§¶Ë¹¤¾ßºÍÓ¦Óö¼ÄܼæÈÝ¡£±È×Ô¼ºÊµÏÖÒ»¸öеÄÊý¾Ý¿âÐÒéÒªÃ÷ÖǵĶ࣬ÒòΪÉú̬»·¾³ÔÚÄÄÀï°Ú×Å¡£
Mycat ÊÇ»ùÓÚ cobar ÑÝ±ä¶øÀ´£¬¶Ô cobar µÄ´úÂë½øÐÐÁ˳¹µ×µÄÖØ¹¹£¬Ê¹Óà NIO ÖØ¹¹ÁËÍøÂçÄ£¿é£¬²¢ÇÒÓÅ»¯ÁË Buffer Äںˣ¬ÔöÇ¿Á˾ۺϣ¬Join µÈ»ù±¾ÌØÐÔ£¬Í¬Ê±¼æÈݾø´ó¶àÊýÊý¾Ý¿â³ÉΪͨÓõÄÊý¾Ý¿âÖмä¼þ¡£
¼òµ¥µÄ˵£¬MyCAT¾ÍÊÇ£º
Ò»¸öÐÂÓ±µÄÊý¾Ý¿âÖмä¼þ²úÆ·Ö§³Ömysql¼¯Èº£¬»òÕßmariadb cluster£¬Ìṩ¸ß¿ÉÓÃÐÔÊý¾Ý·ÖƬ¼¯Èº¡£Äã¿ÉÒÔÏñʹÓÃmysqlÒ»ÑùʹÓÃmycat¡£¶ÔÓÚ¿ª·¢ÈËÔ±À´Ëµ¸ù±¾¸Ð¾õ²»µ½mycatµÄ´æÔÚ¡£

MycatÖ§³ÖµÄÊý¾Ý¿â

MycatµÄ·ÖƬ²ßÂÔ

¸ÅÄî˵Ã÷
Âß¼¿â(schema) £º
Êý¾Ý¿âÖмä¼þ£¬Í¨³£¶Ôʵ¼ÊÓ¦ÓÃÀ´Ëµ£¬²¢²»ÐèÒªÖªµÀÖмä¼þµÄ´æÔÚ£¬ÒµÎñ¿ª·¢ÈËÔ±Ö»ÐèÒªÖªµÀÊý¾Ý¿âµÄ¸ÅÄËùÒÔÊý¾Ý¿âÖмä¼þ¿ÉÒÔ±»¿´×öÊÇÒ»¸ö»ò¶à¸öÊý¾Ý¿â¼¯Èº¹¹³ÉµÄÂß¼¿â¡£
Âß¼±í£¨table£©£º
¼ÈÈ»ÓÐÂß¼¿â£¬ÄÇô¾Í»áÓÐÂß¼±í£¬·Ö²¼Ê½Êý¾Ý¿âÖУ¬¶ÔÓ¦ÓÃÀ´Ëµ£¬¶ÁдÊý¾ÝµÄ±í¾ÍÊÇÂß¼±í¡£Âß¼±í£¬¿ÉÒÔÊÇÊý¾ÝÇзֺ󣬷ֲ¼ÔÚÒ»¸ö»ò¶à¸ö·ÖƬ¿âÖУ¬Ò²¿ÉÒÔ²»×öÊý¾ÝÇз֣¬²»·ÖƬ£¬Ö»ÓÐÒ»¸ö±í¹¹³É¡£
·ÖƬ±í£ºÊÇÖ¸ÄÇЩÔÓеĺܴóÊý¾ÝµÄ±í£¬ÐèÒªÇзֵ½¶à¸öÊý¾Ý¿âµÄ±í£¬ÕâÑù£¬Ã¿¸ö·ÖƬ¶¼ÓÐÒ»²¿·ÖÊý¾Ý£¬ËùÓÐ·ÖÆ¬¹¹³ÉÁËÍêÕûµÄÊý¾Ý¡£ ×ܶøÑÔÖ®¾ÍÊÇÐèÒª½øÐÐ·ÖÆ¬µÄ±í¡£
·Ç·ÖƬ±í£ºÒ»¸öÊý¾Ý¿âÖв¢²»ÊÇËùÓÐµÄ±í¶¼ºÜ´ó£¬Ä³Ð©±íÊÇ¿ÉÒÔ²»ÓýøÐÐÇзֵģ¬·Ç·ÖƬÊÇÏà¶Ô·ÖƬ±íÀ´ËµµÄ£¬¾ÍÊÇÄÇЩ²»ÐèÒª½øÐÐÊý¾ÝÇÐ·ÖµÄ±í¡£
·ÖƬ½Úµã(dataNode)
Êý¾ÝÇзֺó£¬Ò»¸ö´ó±í±»·Öµ½²»Í¬µÄ·ÖƬÊý¾Ý¿âÉÏÃæ£¬Ã¿¸ö±í·ÖƬËùÔÚµÄÊý¾Ý¿â¾ÍÊÇ·ÖÆ¬½Úµã£¨dataNode£©¡£
½ÚµãÖ÷»ú(dataHost)
Êý¾ÝÇзֺó£¬Ã¿¸ö·ÖƬ½Úµã£¨dataNode£©²»Ò»¶¨¶¼»á¶Àռһ̨»úÆ÷£¬Í¬Ò»»úÆ÷ÉÏÃæ¿ÉÒÔÓжà¸ö·ÖƬÊý¾Ý¿â£¬ÕâÑùÒ»¸ö»ò¶à¸ö·ÖƬ½Úµã£¨dataNode£©ËùÔڵĻúÆ÷¾ÍÊǽڵãÖ÷»ú£¨dataHost£©,ΪÁ˹æ±Üµ¥½ÚµãÖ÷»ú²¢·¢ÊýÏÞÖÆ£¬¾¡Á¿½«¶ÁдѹÁ¦¸ßµÄ·ÖƬ½Úµã£¨dataNode£©¾ùºâµÄ·ÅÔÚ²»Í¬µÄ½ÚµãÖ÷»ú£¨dataHost£©¡£
·ÖƬ¹æÔò(rule)
Ç°Ãæ½²ÁËÊý¾ÝÇз֣¬Ò»¸ö´ó±í±»·Ö³ÉÈô¸É¸ö·ÖƬ±í£¬¾ÍÐèÒªÒ»¶¨µÄ¹æÔò£¬ÕâÑù°´ÕÕijÖÖÒµÎñ¹æÔò°ÑÊý¾Ý·Öµ½Ä³¸ö·ÖƬµÄ¹æÔò¾ÍÊÇ·ÖÆ¬¹æÔò£¬Êý¾ÝÇзÖÑ¡ÔñºÏÊ浀ᅮ¬¹æÔò·Ç³£ÖØÒª£¬½«¼«´óµÄ±ÜÃâºóÐøÊý¾Ý´¦ÀíµÄÄѶȡ£
MycatµÄÏÂÔØ¼°°²×°
°²×°»·¾³
jdk£ºÒªÇójdk±ØÐëÊÇ1.7¼°ÒÔÉϰ汾
Mysql£ºÍƼömysqlÊÇ5.5ÒÔÉϰ汾
Mycat£º
MycatµÄ¹Ù·½ÍøÕ¾£º
http://www.mycat.org.cn/
ÏÂÔØµØÖ·£º
https://github.com/MyCATApache/Mycat-download
°²×°²½Öè
MycatÓÐwindows¡¢linux¶àÖÖ°æ±¾¡£±¾½Ì³ÌΪlinux°²×°²½Ö裬windows»ù±¾Ïàͬ¡£
µÚÒ»²½£ºÏÂÔØMycat-server-xxxx-linux.tar.gz
µÚ¶þ²½£º½«Ñ¹Ëõ°ü½âѹËõ¡£½¨Ò齫mycat·Åµ½/usr/local/mycatĿ¼Ï¡£
µÚÈý²½£º½øÈëmycatĿ¼£¬Æô¶¯mycat
./mycat start
Í£Ö¹£º
./mycat stop
mycat Ö§³ÖµÄÃüÁî{ console | start | stop | restart | status | dump }
MycatµÄĬÈ϶˿ںÅΪ£º8066
MycatµÄ·ÖƬ
ÐèÇó
°ÑÉÌÆ·±í·ÖƬ´æ´¢µ½Èý¸öÊý¾Ý½ÚµãÉÏ¡£
°²×°»·¾³·ÖÎö
Á½Ì¨mysqlÊý¾Ý¿â·þÎñÆ÷£º
Host1£º192.168.25.134
Host2£º192.168.25.166
host1»·¾³
²Ù×÷ϵͳ°æ±¾ : centos6.4
Êý¾Ý¿â°æ±¾ : mysql-5.6
mycat°æ±¾ £º1.4 release
Êý¾Ý¿âÃû : db1¡¢db3
mysql½Úµã2»·¾³
²Ù×÷ϵͳ°æ±¾ : centos6.4
Êý¾Ý¿â°æ±¾ : mysql-5.6
mycat°æ±¾ £º1.4 release
Êý¾Ý¿âÃû : db2
MyCat°²×°µ½½Úµã1ÉÏ£¨ÐèÒª°²×°jdk£©
ÅäÖÃschema.xml
Schema.xml½éÉÜ
Schema.xml×÷ΪMyCatÖÐÖØÒªµÄÅäÖÃÎļþÖ®Ò»£¬¹ÜÀí×ÅMyCatµÄÂß¼¿â¡¢±í¡¢·ÖƬ¹æÔò¡¢DataNodeÒÔ¼°DataSource¡£Åª¶®ÕâЩÅäÖã¬ÊÇÕýȷʹÓÃMyCatµÄǰÌá¡£ÕâÀï¾ÍÒ»²ã²ã¶Ô¸ÃÎļþ½øÐнâÎö¡£
schema ±êÇ©ÓÃÓÚ¶¨ÒåMyCatʵÀýÖеÄÂß¼¿â
Table ±êÇ©¶¨ÒåÁËMyCatÖеÄÂß¼±í
dataNode ±êÇ©¶¨ÒåÁËMyCatÖеÄÊý¾Ý½Úµã£¬Ò²¾ÍÊÇÎÒÃÇͨ³£ËµËùµÄÊý¾Ý·ÖƬ¡£
dataHost±êÇ©ÔÚmycatÂß¼¿âÖÐÒ²ÊÇ×÷Ϊ×îµ×²ãµÄ±êÇ©´æÔÚ£¬Ö±½Ó¶¨ÒåÁ˾ßÌåµÄÊý¾Ý¿âʵÀý¡¢¶Áд·ÖÀëÅäÖúÍÐÄÌøÓï¾ä¡£
×¢Ò⣺ÈôÊÇLINUX°æ±¾µÄMYSQL£¬ÔòÐèÒªÉèÖÃΪMysql´óСд²»Ãô¸Ð£¬·ñÔò¿ÉÄܻᷢÉú±íÕÒ²»µ½µÄÎÊÌâ¡£
ÔÚMySQLµÄÅäÖÃÎļþÖÐ/etc/my.cnf [mysqld] ÖÐÔö¼ÓÒ»ÐÐ
¡¡¡¡lower_case_table_names=1
Schema.xmlÅäÖÃ
< xml version="1.0"
>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat ="http://org.opencloudb/">
<schema name="e3mall" checkSQLschema="false"
sqlMaxLimit="100">
<!-- auto sharding by id (long)
-->
<table name="tb_item"
dataNode= "dn1,dn2,dn3" rule="auto-sharding-long"
/>
</schema>
<dataNode name="dn1" dataHost ="localhost1"
database="db1" />
<dataNode name="dn2" dataHost ="localhost2"
database="db2" />
<dataNode name="dn3" dataHost ="localhost1"
database="db3" />
<dataHost name="localhost1"
maxCon="1000" minCon="10"
balance="0"
writeType="0" dbType="mysql"
dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts
-->
<writeHost host="hostM1"
url="192.168.25.134:3306" user="root"
password="root">
<!-- can have multi
read hosts -->
</writeHost>
</dataHost>
<dataHost name="localhost2"
maxCon="1000" minCon="10"
balance="0"
writeType="0" dbType="mysql"
dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts
-->
<writeHost host="hostM1"
url="192.168.25.166:3306" user="root"
password="root">
<!-- can have multi
read hosts -->
</writeHost>
</dataHost>
</mycat:schema> |
ÅäÖÃserver.xml
Server.xml½éÉÜ
server.xml¼¸ºõ±£´æÁËËùÓÐmycatÐèÒªµÄϵͳÅäÖÃÐÅÏ¢¡£×î³£ÓõÄÊÇÔÚ´ËÅäÖÃÓû§Ãû¡¢ÃÜÂ뼰ȨÏÞ¡£
Server.xmlÅäÖÃ
<user name="test"> <property name="password"> test</property>
<property name="schemas"> e3mall</property>
<property name="readOnly"> false</property>
</user> |
ÅäÖÃrule.xml
rule.xmlÀïÃæ¾Í¶¨ÒåÁËÎÒÃÇ¶Ô±í½øÐвð·ÖËùÉæ¼°µ½µÄ¹æÔò¶¨Òå¡£ÎÒÃÇ¿ÉÒÔÁé»îµÄ¶Ô±íʹÓò»Í¬µÄ·ÖƬËã·¨£¬»òÕß¶Ô±íʹÓÃÏàͬµÄËã·¨µ«¾ßÌåµÄ²ÎÊý²»Í¬¡£Õâ¸öÎļþÀïÃæÖ÷ÒªÓÐtableRuleºÍfunctionÕâÁ½¸ö±êÇ©¡£ÔÚ¾ßÌåʹÓùý³ÌÖпÉÒÔ°´ÕÕÐèÇóÌí¼ÓtableRule
ºÍfunction¡£
´ËÅäÖÃÎļþ¿ÉÒÔ²»ÓÃÐ޸ģ¬Ê¹ÓÃĬÈϼ´¿É¡£
²âÊÔ·ÖÆ¬
´´½¨±í
ÅäÖÃÍê±Ïºó£¬ÖØÐÂÆô¶¯mycat¡£Ê¹ÓÃmysql¿Í»§¶ËÁ¬½Ómycat£¬´´½¨±í¡£
-- ----------------------------
-- Table structure for tb_item
-- ----------------------------
DROP TABLE IF EXISTS `tb_item`;
CREATE TABLE `tb_item` (
`id` bigint(20) NOT NULL COMMENT ' ÉÌÆ·id£¬Í¬Ê±Ò²ÊÇÉÌÆ·±àºÅ',
`title` varchar(100) NOT NULL COMMENT 'ÉÌÆ·±êÌâ',
`sell_point` varchar(500) DEFAULT NULL COMMENT
'ÉÌÆ·Âôµã',
`price` bigint(20) NOT NULL COMMENT 'ÉÌÆ·¼Û¸ñ£¬µ¥Î»Îª£º·Ö',
`num` int(10) NOT NULL COMMENT '¿â´æÊýÁ¿',
`barcode` varchar(30) DEFAULT NULL COMMENT 'ÉÌÆ·ÌõÐÎÂë',
`image` varchar(500) DEFAULT NULL COMMENT 'ÉÌÆ·Í¼Æ¬',
`cid` bigint(10) NOT NULL COMMENT 'ËùÊôÀàÄ¿£¬Ò¶×ÓÀàÄ¿',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT
'ÉÌÆ·×´Ì¬£¬1-Õý³££¬ 2-ϼܣ¬3-ɾ³ý',
`created` datetime NOT NULL COMMENT '´´½¨Ê±¼ä',
`updated` datetime NOT NULL COMMENT '¸üÐÂʱ¼ä',
PRIMARY KEY (`id`),
KEY `cid` (`cid`),
KEY `status` (`status`),
KEY `updated` (`updated`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ÉÌÆ·±í'; |
²åÈëÊý¾Ý
½«´ËÎļþÖеÄÊý¾Ý²åÈëµ½Êý¾Ý¿â£º
·ÖƬ²âÊÔ
ÓÉÓÚÅäÖÃµÄ·ÖÆ¬¹æÔòΪ¡°auto-sharding-long¡±£¬ËùÒÔmycat»á¸ù¾Ý´Ë¹æÔò×Ô¶¯·ÖƬ¡£
ÿ¸ödatanodeÖб£´æÒ»¶¨ÊýÁ¿µÄÊý¾Ý¡£¸ù¾Ýid½øÐÐ·ÖÆ¬
¾²âÊÔid·¶Î§Îª£º
Datanode1£º1~5000000
Datanode2£º5000000~10000000
Datanode3£º10000001~15000000
µ±15000000ÒÔÉϵÄid²åÈëʱ±¨´í£º
[Err] 1064 - can't find any valid datanode :TB_ITEM -> ID -> 15000001
´ËʱÐèÒªÌí¼Ó½ÚµãÁË¡£
Mycat¶Áд·ÖÀë
Êý¾Ý¿â¶Áд·ÖÀë¶ÔÓÚ´óÐÍϵͳ»òÕß·ÃÎÊÁ¿ºÜ¸ßµÄ»¥ÁªÍøÓ¦ÓÃÀ´Ëµ£¬ÊDZز»¿ÉÉÙµÄÒ»¸öÖØÒª¹¦ÄÜ¡£¶ÔÓÚMySQLÀ´Ëµ£¬±ê×¼µÄ¶Áд·ÖÀëÊÇÖ÷´Óģʽ£¬Ò»¸öд½ÚµãMasterºóÃæ¸ú×Ŷà¸ö¶Á½Úµã£¬¶Á½ÚµãµÄÊýÁ¿È¡¾öÓÚϵͳµÄѹÁ¦£¬Í¨³£ÊÇ1-3¸ö¶Á½ÚµãµÄÅäÖÃ

Mycat¶Áд·ÖÀëºÍ×Ô¶¯Çл»»úÖÆ£¬ÐèÒªmysqlµÄÖ÷´Ó¸´ÖÆ»úÖÆÅäºÏ¡£
MysqlµÄÖ÷´Ó¸´ÖÆ

Ö÷´ÓÅäÖÃÐèҪעÒâµÄµØ·½
1¡¢Ö÷DB serverºÍ´ÓDB serverÊý¾Ý¿âµÄ°æ±¾Ò»ÖÂ
2¡¢Ö÷DB serverºÍ´ÓDB serverÊý¾Ý¿âÊý¾ÝÃû³ÆÒ»ÖÂ
3¡¢Ö÷DB server¿ªÆô¶þ½øÖÆÈÕÖ¾,Ö÷DB serverºÍ´ÓDB serverµÄserver_id¶¼±ØÐëΨһ
MysqlÖ÷·þÎñÆ÷ÅäÖÃ
µÚÒ»²½£ºÐÞ¸Ämy.confÎļþ£º
ÔÚ[mysqld]¶ÎÏÂÌí¼Ó£º
binlog-do-db=db1
binlog-ignore-db=mysql
#ÆôÓöþ½øÖÆÈÕÖ¾
log-bin=mysql-bin
#·þÎñÆ÷ΨһID£¬Ò»°ãÈ¡IP×îºóÒ»¶Î
server-id=134 |
µÚ¶þ²½£ºÖØÆômysql·þÎñ
service mysqld restart
µÚÈý²½£º½¨Á¢ÕÊ»§²¢ÊÚȨslave
mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456';
#Ò»°ã²»ÓÃrootÕʺţ¬¡°%¡±±íʾËùÓпͻ§¶Ë¶¼¿ÉÄÜÁ¬£¬Ö»ÒªÕʺţ¬ÃÜÂëÕýÈ·£¬´Ë´¦¿ÉÓþßÌå¿Í»§¶ËIP´úÌæ£¬Èç192.168.145.226£¬¼ÓÇ¿°²È«¡£
Ë¢ÐÂȨÏÞ
mysql> FLUSH PRIVILEGES;
²é¿´mysqlÏÖÔÚÓÐÄÄЩÓû§
mysql>select user,host from mysql.user;
µÚËIJ½£º²éѯmasterµÄ״̬

Mysql´Ó·þÎñÆ÷ÅäÖÃ
µÚÒ»²½£ºÐÞ¸Ämy.confÎļþ
[mysqld]
server-id=166
µÚ¶þ²½£ºÅäÖôӷþÎñÆ÷
mysql>change master to
master_host='192.168.25.134',master_port=3306,master_user='backup', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120
×¢ÒâÓï¾äÖм䲻Ҫ¶Ï¿ª£¬master_portΪmysql·þÎñÆ÷¶Ë¿ÚºÅ(ÎÞÒýºÅ)£¬master_userΪִÐÐͬ²½²Ù×÷µÄÊý¾Ý¿âÕË»§£¬¡°120¡±ÎÞµ¥ÒýºÅ(´Ë´¦µÄ120¾ÍÊÇshow master status Öп´µ½µÄpositionµÄÖµ£¬ÕâÀïµÄmysql-bin.000001¾ÍÊÇfile¶ÔÓ¦µÄÖµ)¡£
µÚ¶þ²½£ºÆô¶¯´Ó·þÎñÆ÷¸´Öƹ¦ÄÜ
Mysql>start slave;
µÚÈý²½£º¼ì²é´Ó·þÎñÆ÷¸´Öƹ¦ÄÜ״̬£º
mysql> show slave status
¡¡¡¡¡¡¡¡(Ê¡ÂÔ²¿·Ö)
Slave_IO_Running: Yes //´Ë״̬±ØÐëYES
Slave_SQL_Running: Yes //´Ë״̬±ØÐëYES
¡¡¡¡¡¡¡¡(Ê¡ÂÔ²¿·Ö)
×¢£ºSlave_IO¼°Slave_SQL½ø³Ì±ØÐëÕý³£ÔËÐУ¬¼´YES״̬£¬·ñÔò¶¼ÊÇ´íÎóµÄ״̬(È磺ÆäÖÐÒ»¸öNO¾ùÊô´íÎó)¡£
´íÎó´¦Àí£ºÈç¹û³öÏÖ´Ë´íÎó£ºFatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. ÒòΪÊÇmysqlÊǿˡµÄϵͳËùÒÔmysqlµÄuuidÊÇÒ»ÑùµÄ£¬ËùÒÔÐèÒªÐ޸ġ£
½â¾ö·½·¨£ºÉ¾³ý/var/lib/mysql/auto.cnfÎļþ£¬ÖØÐÂÆô¶¯·þÎñ¡£

ÒÔÉϲÙ×÷¹ý³Ì£¬´Ó·þÎñÆ÷ÅäÖÃÍê³É¡£
<dataNode
name="dn1" dataHost ="localhost1"
database="db1" />
<dataNode name="dn2" dataHost ="localhost1" database="db2" />
<dataNode name="dn3" dataHost ="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
<heartbeat>show slave status </heartbeat>
<writeHost host="hostM" url="192.168.25.134:3306" user="root"
password="root">
<readHost host="hostS" url="192.168.25.166:3306" user="root"
password="root" />
</writeHost>
</dataHost> |
ÉèÖÃ balance="1"ÓëwriteType="0"
Balance²ÎÊýÉèÖãº
1. balance=¡°0¡±, ËùÓжÁ²Ù×÷¶¼·¢Ë͵½µ±Ç°¿ÉÓõÄwriteHostÉÏ¡£
2. balance=¡°1¡±£¬ËùÓжÁ²Ù×÷¶¼Ëæ»úµÄ·¢Ë͵½readHost¡£
3. balance=¡°2¡±£¬ËùÓжÁ²Ù×÷¶¼Ëæ»úµÄÔÚwriteHost¡¢readhostÉÏ·Ö·¢
WriteType²ÎÊýÉèÖãº
1. writeType=¡°0¡±, ËùÓÐд²Ù×÷¶¼·¢Ë͵½¿ÉÓõÄwriteHostÉÏ¡£
2. writeType=¡°1¡±£¬ËùÓÐд²Ù×÷¶¼Ëæ»úµÄ·¢Ë͵½readHost¡£
3. writeType=¡°2¡±£¬ËùÓÐд²Ù×÷¶¼Ëæ»úµÄÔÚwriteHost¡¢readhost·ÖÉÏ·¢¡£
¡°readHostÊÇ´ÓÊôÓÚwriteHostµÄ£¬¼´Òâζ×ÅËü´ÓÄǸöwriteHost»ñȡͬ²½Êý¾Ý£¬Òò´Ë£¬µ±ËüËùÊôµÄwriteHostå´»úÁË£¬ÔòËüÒ²²»»áÔÙ²ÎÓëµ½¶Áд·ÖÀëÖÐÀ´£¬¼´¡°²»¹¤×÷ÁË¡±£¬ÕâÊÇÒòΪ´Ëʱ£¬ËüµÄÊý¾ÝÒѾ¡°²»¿É¿¿¡±ÁË¡£»ùÓÚÕâ¸ö¿¼ÂÇ£¬Ä¿Ç°mycat 1.3ºÍ1.4°æ±¾ÖУ¬ÈôÏëÖ§³ÖMySQLÒ»Ö÷Ò»´ÓµÄ±ê×¼ÅäÖ㬲¢ÇÒÔÚÖ÷½Úµãå´»úµÄÇé¿öÏ£¬´Ó½Úµã»¹ÄܶÁÈ¡Êý¾Ý£¬ÔòÐèÒªÔÚMycatÀïÅäÖÃΪÁ½¸öwriteHost²¢ÉèÖÃbanlance=1¡£¡±
ÉèÖÃ switchType="2" ÓëslaveThreshold="100"
switchType ĿǰÓÐÈýÖÖÑ¡Ôñ£º
-1£º±íʾ²»×Ô¶¯Çл»
1 £ºÄ¬ÈÏÖµ£¬×Ô¶¯Çл»
2 £º»ùÓÚMySQLÖ÷´Óͬ²½µÄ״̬¾ö¶¨ÊÇ·ñÇл»
¡°MycatÐÄÌø¼ì²éÓï¾äÅäÖÃΪ show slave status £¬dataHost É϶¨ÒåÁ½¸öÐÂÊôÐÔ£º switchType="2" ÓëslaveThreshold="100"£¬´ËʱÒâζ×Å¿ªÆôMySQLÖ÷´Ó¸´ÖÆ×´Ì¬°ó¶¨µÄ¶Áд·ÖÀëÓëÇл»»úÖÆ¡£MycatÐÄÌø»úÖÆÍ¨¹ý¼ì²â show slave status ÖÐµÄ "Seconds_Behind_Master", "Slave_IO_Running", "Slave_SQL_Running" Èý¸ö×Ö¶ÎÀ´È·¶¨µ±Ç°Ö÷´Óͬ²½µÄ״̬ÒÔ¼°Seconds_Behind_MasterÖ÷´Ó¸´ÖÆÊ±ÑÓ¡£¡°
¸½£ºCentos.5ϰ²×°mysql
µÚÒ»²½£º²é¿´mysqlÊÇ·ñ°²×°¡£
rpm -qa|grep mysql
µÚ¶þ²½£ºÈç¹ûmysqlµÄ°æ±¾²»ÊÇÏëÒªµÄ°æ±¾¡£ÐèÒª°ÑmysqlÐ¶ÔØ¡£
yum remove mysql mysql-server mysql-libs mysql-common
rm -rf /var/lib/mysql
rm /etc/my.cnf
µÚÈý²½£º°²×°mysql¡£ÐèҪʹÓÃyumÃüÁî°²×°¡£ÔÚ°²×°mysql֮ǰÐèÒª°²×°mysqlµÄÏÂÔØÔ´¡£ÐèÒª´ÓoracleµÄ¹Ù·½ÍøÕ¾ÏÂÔØ¡£
ÏÂÔØmysqlµÄÔ´°ü¡£
ÎÒÃÇÊÇcentos6.4¶ÔÓ¦µÄrpm°üΪ£ºmysql-community-release-el6-5.noarch.rpm
°²×°mysqlÏÂÔØÔ´£º
yum localinstall mysql-community-release-el6-5.noarch.rpm
()´Ë¸½¼þ¿É±£´æ
ÔÚÏß°²×°mysql£º
yum install mysql-community-server
µÚËIJ½£ºÆô¶¯mysql
service mysqld start
µÚÎå²½£ºÐèÒª¸ørootÓû§ÉèÖÃÃÜÂë¡£
/usr/bin/mysqladmin -u root password 'new-password' // ΪrootÕ˺ÅÉèÖÃÃÜÂë
µÚÁù²½£ºÔ¶³ÌÁ¬½ÓÊÚȨ¡£
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
×¢Ò⣺'myuser'¡¢'mypassword' ÐèÒªÌæ»»³Éʵ¼ÊµÄÓû§ÃûºÍÃÜÂë¡£
|