| MongoDB¹«Ë¾ÔÃû10gen£¬´´Á¢ÓÚ2007Ä꣬ÔÚ2013ÄêÊÕµ½Ò»±Ê2.31ÒÚÃÀÔªµÄÈÚ×ʺ󣬹«Ë¾ÊÐÖµÆÀ¹ÀÒÑÔöÖÁ10ÒÚÃÀÔª¼¶±ð£¬Õâ¸ö¸ß¶ÈÊÇÖªÃû¿ªÔ´¹«Ë¾Red
Hat(´´½¨ÓÚ1993Äê)20ÄêµÄ·Ü¶·³É¹û¡£
¸ßÐÔÄÜ¡¢Ò×À©Õ¹Ò»Ö±ÊÇMongoDBµÄÁ¢×ãÖ®±¾£¬Í¬Ê±¹æ·¶µÄÎĵµºÍ½Ó¿Ú¸üÈÃÆäÉîÊÜÓû§Ï²°®£¬ÕâÒ»µã´Ó·ÖÎöDB-EnginesµÄµÃ·Ö½á¹û²»ÄÑ¿´³ö¡ª¡ª½ö½ö1Äêʱ¼ä£¬MongoDB¾ÍÍê³ÉÁ˵Ú7Ãûµ½µÚÎåÃûµÄÌáÉý£¬µÃ·Ö¾Í´Ó124·ÖÉÏÉýÖÁ214·Ö£¬ÉÏÉýÖµÊǵÚËÄÃûPotgreSQLµÄÁ½±¶£¬Í¬Ê±µ±ÏÂÓëPostgreSQLµÄµÃ·ÖÒ²Ö»Ïà²î16·Ö²»µ½¡£

MongoDBÄÜÒÔÈç´ËËÙ¶È·¢Õ¹£¬ºÜ´ó³Ì¶ÈÉϹé½áÓÚÐí¶à´«Í³¹ØÏµÊý¾Ý¿âÒÑÎÞ·¨Ó¦¶Ôµ±ÏÂÊý¾Ý´¦ÀíµÄÀ©Õ¹ÐÔÐèÇó£¬ËäÈ»ËüÃǾþ¿¼Ñ飬²¢¾ß±¸²»´íµÄÐÔÄܼ°Îȶ¨ÐÔ¡£È»¶øÇø±ðÓÚÒÔÍùµÄʹÓ÷½·¨£¬Ðí¶àNoSQL¶¼ÓÐ×Å×Ô¼ºµÄÏÞÖÆ£¬´Ó¶øÒ²µ¼ÖÂÁËÈëÃÅÄѵÄÎÊÌâ¡£ÕâÀïÎÒÃÇΪ´ó¼Ò·ÖÏí
ÑÏÀ½µÄ²©ÎÄ¡ª¡ªÈçºÎ´î½¨¸ßЧµÄMongoDB¼¯Èº¡£
ÒÔÏÂΪ²©ÎÄ£º
ÉîÈ븱±¾¼¯ÄÚ²¿»úÖÆ
¸ÃϵÁÐÎÄÕµĵÚÒ»²¿·Ö½éÉÜÁ˸±±¾¼¯µÄÅäÖã¬Õâ¸ö²¿·Ö½«ÉîÈëÑо¿Ò»Ï¸±±¾¼¯µÄÄÚ²¿»úÖÆ¡£»¹ÊÇ´ø×Ÿ±±¾¼¯µÄÎÊÌâÀ´¿´°É!
¸±±¾¼¯¹ÊÕÏ×ªÒÆ£¬Ö÷½ÚµãÊÇÈçºÎÑ¡¾ÙµÄ?ÄÜ·ñÊÖ¶¯¸ÉÉæÏ¼Üijһ̨Ö÷½Úµã¡£
¹Ù·½Ëµ¸±±¾¼¯ÊýÁ¿×îºÃÊÇÆæÊý£¬ÎªÊ²Ã´?
MongDB¸±±¾¼¯ÊÇÈçºÎͬ²½µÄ?Èç¹ûͬ²½²»¼°Ê±»á³öÏÖʲôÇé¿ö?»á²»»á³öÏÖ²»Ò»ÖÂÐÔ?
MongDBµÄ¹ÊÕÏ×ªÒÆ»á²»»áÎÞ¹Ê×Ô¶¯·¢Éú?ʲôÌõ¼þ»á´¥·¢?Ƶ·±´¥·¢¿ÉÄÜ»á´øÀ´ÏµÍ³¸ºÔؼÓÖØ?
BullyËã·¨
MongDB¸±±¾¼¯¹ÊÕÏ×ªÒÆ¹¦ÄܵÃÒæÓÚËüµÄÑ¡¾Ù»úÖÆ¡£Ñ¡¾Ù»úÖÆ²ÉÓÃÁËBullyËã·¨£¬¿ÉÒԺܷ½±ã´Ó·Ö²¼Ê½½ÚµãÖÐÑ¡³öÖ÷½Úµã¡£Ò»¸ö·Ö²¼Ê½¼¯Èº¼Ü¹¹ÖÐÒ»°ã¶¼ÓÐÒ»¸öËùνµÄÖ÷½Úµã£¬¿ÉÒÔÓкܶàÓÃ;£¬±ÈÈ绺´æ»úÆ÷½ÚµãÔªÊý¾Ý£¬×÷Ϊ¼¯ÈºµÄ·ÃÎÊÈë¿ÚµÈµÈ¡£Ö÷½ÚµãÓоÍÓаɣ¬ÎÒÃǸÉÂïҪʲôBullyËã·¨?ÒªÃ÷°×Õâ¸öÎÒÃÇÏÈ¿´¿´ÕâÁ½Öּܹ¹£º
Ö¸¶¨Ö÷½ÚµãµÄ¼Ü¹¹£¬ÕâÖּܹ¹Ò»°ã¶¼»áÉêÃ÷Ò»¸ö½ÚµãΪÖ÷½Úµã£¬ÆäËû½Úµã¶¼ÊǴӽڵ㣬ÈçÎÒÃdz£ÓõÄMySQL¾ÍÊÇÕâÑù¡£µ«ÊÇÕâÑù¼Ü¹¹ÎÒÃÇÔÚµÚÒ»½Ú˵ÁËÕû¸ö¼¯ÈºÈç¹ûÖ÷½Úµã¹ÒµôÁ˾͵ÃÊÖ¹¤²Ù×÷£¬ÉϼÜÒ»¸öеÄÖ÷½Úµã»òÕß´Ó´Ó½Úµã»Ö¸´Êý¾Ý£¬²»Ì«Áé»î¡£

²»Ö¸¶¨Ö÷½Úµã£¬¼¯ÈºÖеÄÈÎÒâ½Úµã¶¼¿ÉÒÔ³ÉΪÖ÷½Úµã¡£MongoDBÒ²¾ÍÊDzÉÓÃÕâÖּܹ¹£¬Ò»µ«Ö÷½Úµã¹ÒÁËÆäËû´Ó½Úµã×Ô¶¯½ÓÌæ±ä³ÉÖ÷½Úµã¡£ÈçÏÂͼ£º

ºÃÁË£¬ÎÊÌâ¾ÍÔÚÕâ¸öµØ·½£¬¼ÈÈ»ËùÓнڵ㶼ÊÇÒ»Ñù£¬Ò»µ«Ö÷½Úµã¹ÒÁË£¬Ôõôȷ¶¨ÏÂÒ»¸öÖ÷½Úµã?Õâ¾ÍÊÇBullyËã·¨½â¾öµÄÎÊÌâ¡£
ÄÇʲôÊÇBullyËã·¨£¬BullyËã·¨ÊÇÒ»ÖÖе÷Õß(Ö÷½Úµã)¾ºÑ¡Ëã·¨£¬Ö÷Ҫ˼ÏëÊǼ¯ÈºµÄÿ¸ö³ÉÔ±¶¼¿ÉÒÔÉùÃ÷ËüÊÇÖ÷½Úµã²¢Í¨ÖªÆäËû½Úµã¡£±ðµÄ½Úµã¿ÉÒÔÑ¡Ôñ½ÓÊÜÕâ¸öÉù³Æ»òÊǾܾø²¢½øÈëÖ÷½Úµã¾ºÕù¡£±»ÆäËûËùÓнڵã½ÓÊܵĽڵã²ÅÄܳÉΪÖ÷½Úµã¡£½Úµã°´ÕÕһЩÊôÐÔÀ´ÅжÏËÓ¦¸Ãʤ³ö¡£Õâ¸öÊôÐÔ¿ÉÒÔÊÇÒ»¸ö¾²Ì¬ID£¬Ò²¿ÉÒÔÊǸüеĶÈÁ¿Ïñ×î½üÒ»´ÎÊÂÎñID(×îеĽڵã»áʤ³ö)¡£ÏêÇéÇë²Î¿¼
NoSQLÊý¾Ý¿â·Ö²¼Ê½Ëã·¨µÄе÷Õß¾ºÑ¡»¹ÓРά»ù°Ù¿ÆµÄ½âÊÍ¡£
Ñ¡¾Ù
ÄÇô£¬MongDBÊÇÔõ½øÐÐÑ¡¾ÙµÄÄØ?¹Ù·½ÕâôÃèÊö£º
We use a consensus protocol to pick a primary. Exact details will be spared here but that basic process is:
¡¡¡¡get maxLocalOpOrdinal from each server.
¡¡¡¡if a majority of servers are not up (from this server¡¯s POV), remain in Secondary mode and stop.
¡¡¡¡if the last op time seems very old, stop and await human intervention.
¡¡¡¡else, using a consensus protocol, pick the server with the highest maxLocalOpOrdinal as the Primary. |
´óÖ·Òë¹ýÀ´ÎªÊ¹ÓÃÒ»ÖÂÐÒéÑ¡ÔñÖ÷½Úµã¡£»ù±¾²½ÖèΪ£º
µÃµ½Ã¿¸ö·þÎñÆ÷½ÚµãµÄ×îºó²Ù×÷ʱ¼ä´Á¡£Ã¿¸öMongDB¶¼ÓÐoplog»úÖÆ¼Ç¼±¾»ú²Ù×÷£¬·½±ãºÍÖ÷·þÎñÆ÷½øÐжԱÈÊý¾ÝÊÇ·ñͬ²½»¹¿ÉÒÔÓÃÓÚ´íÎó»Ö¸´¡£
Èç¹û¼¯ÈºÖд󲿷ַþÎñÆ÷down»úÁË£¬±£Áô»î×ŵĽڵ㶼Ϊsecondary״̬²¢Í£Ö¹£¬²»Ñ¡¾ÙÁË¡£
Èç¹û¼¯ÈºÖÐÑ¡¾Ù³öÀ´µÄÖ÷½Úµã»òÕßËùÓдӽڵã×îºóÒ»´Îͬ²½Ê±¼ä¿´ÆðÀ´ºÜ¾É£¬Í£Ö¹Ñ¡¾ÙµÈ´ýÈËÀ´²Ù×÷¡£
Èç¹ûÉÏÃæ¶¼Ã»ÓÐÎÊÌâ¾ÍÑ¡Ôñ×îºó²Ù×÷ʱ¼ä´Á×îÐÂ(±£Ö¤Êý¾ÝÊÇ×îеÄ)µÄ·þÎñÆ÷½Úµã×÷ΪÖ÷½Úµã¡£
ÕâÀïÌáµ½ÁËÒ»¸öÒ»ÖÂÐÒé(Æäʵ¾ÍÊÇbullyËã·¨)£¬Õâ¸öºÍÊý¾Ý¿âµÄÒ»ÖÂÐÔÐÒ黹ÊÇÓÐÐ©Çø±ð£¬Ò»ÖÂÐÒéÖ÷Ҫǿµ÷µÄÊÇͨ¹ýһЩ»úÖÆ±£Ö¤´ó¼Ò´ï³É¹²Ê¶;¶øÒ»ÖÂÐÔÐÒéÇ¿µ÷µÄÊDzÙ×÷µÄ˳ÐòÒ»ÖÂÐÔ£¬±ÈÈçͬʱ¶Áдһ¸öÊý¾Ý»á²»»á³öÏÖÔàÊý¾Ý¡£Ò»ÖÂÐÒéÔÚ·Ö²¼Ê½ÀïÓÐÒ»¸ö¾µäµÄËã·¨½Ð¡°PaxosËã·¨¡±£¬ºóÐøÔÙ½éÉÜ¡£
ÉÏÃæÓиöÎÊÌ⣬¾ÍÊÇËùÓдӽڵãµÄ×îºó²Ù×÷ʱ¼ä¶¼ÊÇÒ»ÑùÔõô°ì?¾ÍÊÇËÏȳÉΪÖ÷½ÚµãµÄʱ¼ä×î¿ì¾Íѡˡ£
Ñ¡¾Ù´¥·¢Ìõ¼þ
Ñ¡¾Ù²»ÊÇʲôʱ¿Ì¶¼»á±»´¥·¢µÄ£¬ÓÐÒÔÏÂÇé¿ö¿ÉÒÔ´¥·¢¡£
³õʼ»¯Ò»¸ö¸±±¾¼¯Ê±¡£
¸±±¾¼¯ºÍÖ÷½Úµã¶Ï¿ªÁ¬½Ó£¬¿ÉÄÜÊÇÍøÂçÎÊÌâ¡£
Ö÷½Úµã¹Òµô¡£
Ñ¡¾Ù»¹ÓиöǰÌáÌõ¼þ£¬²ÎÓëÑ¡¾ÙµÄ½ÚµãÊýÁ¿±ØÐë´óÓÚ¸±±¾¼¯×ܽڵãÊýÁ¿µÄÒ»°ë£¬Èç¹ûÒѾСÓÚÒ»°ëÁËËùÓнڵ㱣³ÖÖ»¶Á״̬¡£ÈÕÖ¾½«»á³öÏÖ£º
can't see a majority of the set, relinquishing primary |
1. Ö÷½Úµã¹ÒµôÄÜ·ñÈËΪ¸ÉÔ¤?´ð°¸Êǿ϶¨µÄ¡£
¿ÉÒÔͨ¹ýreplSetStepDownÃüÁîϼÜÖ÷½Úµã¡£Õâ¸öÃüÁî¿ÉÒԵǼÖ÷½ÚµãʹÓÃ
db.adminCommand({replSetStepDown : 1}) |
Èç¹ûɱ²»µô¿ÉÒÔʹÓÃÇ¿ÖÆ¿ª¹Ø
db.adminCommand({replSetStepDown : 1, force : true}) |
»òÕßʹÓà rs.stepDown(120)Ò²¿ÉÒԴﵽͬÑùµÄЧ¹û£¬ÖмäµÄÊý×ÖÖ¸²»ÄÜÔÚÍ£Ö¹·þÎñÕâ¶Îʱ¼ä³ÉΪÖ÷½Úµã£¬µ¥Î»ÎªÃë¡£
2. ÉèÖÃÒ»¸ö´Ó½ÚµãÓбÈÖ÷½ÚµãÓиü¸ßµÄÓÅÏȼ¶¡£
ÏȲ鿴µ±Ç°¼¯ÈºÖÐÓÅÏȼ¶£¬Í¨¹ýrs.conf()ÃüÁĬÈÏÓÅÏȼ¶Îª1ÊDz»ÏÔʾµÄ£¬ÕâÀï±êʾ³öÀ´
[java] view plaincopyrs.conf();
¡¡¡¡[java] view plaincopy{
¡¡¡¡"_id" : "rs0",
¡¡¡¡"version" : 9,
¡¡¡¡"members" : [
¡¡¡¡{
¡¡¡¡"_id" : 0,
¡¡¡¡"host" : "192.168.1.136:27017" },
¡¡¡¡{
¡¡¡¡"_id" : 1,
¡¡¡¡"host" : "192.168.1.137:27017" },
¡¡¡¡{
¡¡¡¡"_id" : 2,
¡¡¡¡"host" : "192.168.1.138:27017" }
¡¡¡¡]
¡¡¡¡} |
Èç¹û²»ÏëÈÃÒ»¸ö´Ó½Úµã³ÉΪÖ÷½Úµã¿ÉÒÔÔõô²Ù×÷?
ʹÓÃrs.freeze(120)¶³½áÖ¸¶¨µÄÃëÊý²»ÄÜÑ¡¾Ù³ÉΪÖ÷½Úµã¡£
°´ÕÕÉÏһƪÉèÖýڵãΪNon-VotingÀàÐÍ¡£
µ±Ö÷½Úµã²»Äܺʹ󲿷ִӽڵãͨѶ¡£°ÑÖ÷»ú½ÚµãÍøÏ߰εô£¬ºÙºÙ£º)
ÓÅÏȼ¶»¹¿ÉÒÔÕâôÓã¬Èç¹ûÎÒÃDz»ÏëÉèÖÃʲôhidden½Úµã£¬¾ÍÓÃsecondaryÀàÐÍ×÷Ϊ±¸·Ý½ÚµãÒ²²»ÏëÈÃËû³ÉΪÖ÷½ÚµãÔõô°ì?¿´ÏÂͼ£¬¹²Èý¸ö½Úµã·Ö²¼ÔÚÁ½¸öÊý¾ÝÖÐÐÄ£¬Êý¾ÝÖÐÐÄ2µÄ½ÚµãÉèÖÃÓÅÏȼ¶Îª0²»ÄܳÉΪÖ÷½Úµã£¬µ«ÊÇ¿ÉÒÔ²ÎÓëÑ¡¾Ù¡¢Êý¾Ý¸´ÖÆ¡£¼Ü¹¹»¹ÊǺÜÁé»î°É!

ÆæÊý
¹Ù·½ÍƼö¸±±¾¼¯µÄ³ÉÔ±ÊýÁ¿ÎªÆæÊý£¬×î¶à12¸ö¸±±¾¼¯½Úµã£¬×î¶à7¸ö½Úµã²ÎÓëÑ¡¾Ù¡£×î¶à12¸ö¸±±¾¼¯½ÚµãÊÇÒòΪû±ØÒªÒ»·ÝÊý¾Ý¸´ÖÆÄÇô¶à·Ý£¬±¸·ÝÌ«¶à·´¶øÔö¼ÓÁËÍøÂç¸ºÔØºÍÍÏÂýÁ˼¯ÈºÐÔÄÜ;¶ø×î¶à7¸ö½Úµã²ÎÓëÑ¡¾ÙÊÇÒòΪÄÚ²¿Ñ¡¾Ù»úÖÆ½ÚµãÊýÁ¿Ì«¶à¾Í»áµ¼ÖÂ1·ÖÖÓÄÚ»¹Ñ¡²»³öÖ÷½Úµã£¬·²ÊÂÖ»ÒªÊʵ±¾ÍºÃ¡£Õâ¸ö¡°12¡±¡¢¡°7¡±Êý×Ö»¹ºÃ£¬Í¨¹ýËûÃǹٷ½¾¹ýÐÔÄܲâÊÔ¶¨Òå³öÀ´¿ÉÒÔÀí½â¡£¾ßÌ廹ÓÐÄÄЩÏÞÖÆ²Î¿¼¹Ù·½Îĵµ
¡¶ MongoDB Limits and Thresholds ¡·¡£ µ«ÊÇÕâÀïһֱû¸ã¶®Õû¸ö¼¯ÈºÎªÊ²Ã´ÒªÆæÊý£¬Í¨¹ý²âÊÔ¼¯ÈºµÄÊýÁ¿ÎªÅ¼ÊýÒ²ÊÇ¿ÉÒÔÔËÐеģ¬²Î¿¼Õâ¸öÎÄÕÂhttp://www.itpub.net/thread-1740982-1-1.html¡£ºóÀ´Í»È»¿´ÁËһƪ
stackoverflowµÄÎÄÕÂÖÕÓÚ¶ÙÎòÁË£¬mongodb±¾ÉíÉè¼ÆµÄ¾ÍÊÇÒ»¸ö¿ÉÒÔ¿çIDCµÄ·Ö²¼Ê½Êý¾Ý¿â£¬ËùÒÔÎÒÃÇÓ¦¸Ã°ÑËü·Åµ½´óµÄ»·¾³À´¿´¡£
¼ÙÉèËĸö½Úµã±»·Ö³ÉÁ½¸öIDC£¬Ã¿¸öIDC¸÷Á½Ì¨»úÆ÷£¬ÈçÏÂͼ¡£µ«ÕâÑù¾Í³öÏÖÁ˸öÎÊÌ⣬Èç¹ûÁ½¸öIDCÍøÂç¶Ïµô£¬ÕâÔÚ¹ãÓòÍøÉϺÜÈÝÒ׳öÏÖµÄÎÊÌ⣬ÔÚÉÏÃæÑ¡¾ÙÖÐÌáµ½Ö»ÒªÖ÷½ÚµãºÍ¼¯ÈºÖд󲿷ֽڵã¶Ï¿ªÁ´½Ó¾Í»á¿ªÊ¼Ò»ÂÖеÄÑ¡¾Ù²Ù×÷£¬²»¹ýMongoDB¸±±¾¼¯Á½±ß¶¼Ö»ÓÐÁ½¸ö½Úµã£¬µ«ÊÇÑ¡¾ÙÒªÇó²ÎÓëµÄ½ÚµãÊýÁ¿±ØÐë´óÓÚÒ»°ë£¬ÕâÑùËùÓм¯Èº½Úµã¶¼Ã»°ì·¨²ÎÓëÑ¡¾Ù£¬Ö»»á´¦ÓÚÖ»¶Á״̬¡£µ«ÊÇÈç¹ûÊÇÆæÊý½Úµã¾Í²»»á³öÏÖÕâ¸öÎÊÌ⣬¼ÙÉè3¸ö½Úµã£¬Ö»ÒªÓÐ2¸ö½Úµã»îמͿÉÒÔÑ¡¾Ù£¬5¸öÖеÄ3¸ö£¬7¸öÖеÄ4¸ö¡¡

ÐÄÌø
×ÛÉÏËùÊö£¬Õû¸ö¼¯ÈºÐèÒª±£³ÖÒ»¶¨µÄͨÐŲÅÄÜÖªµÀÄÄЩ½Úµã»î×ÅÄÄЩ½Úµã¹Òµô¡£MongoDB½Úµã»áÏò¸±±¾¼¯ÖÐµÄÆäËû½ÚµãÿÁ½Ãë¾Í»á·¢ËÍÒ»´Îpings°ü£¬Èç¹ûÆäËû½ÚµãÔÚ10ÃëÖÓÖ®ÄÚûÓзµ»Ø¾Í±êʾΪ²»ÄÜ·ÃÎÊ¡£Ã¿¸ö½ÚµãÄÚ²¿¶¼»áά»¤Ò»¸ö״̬ӳÉä±í£¬±íÃ÷µ±Ç°Ã¿¸ö½ÚµãÊÇʲô½ÇÉ«¡¢ÈÕ־ʱ¼ä´ÁµÈ¹Ø¼üÐÅÏ¢¡£Èç¹ûÊÇÖ÷½Úµã£¬³ýÁËά»¤Ó³Éä±íÍ⻹ÐèÒª¼ì²é×Ô¼ºÄÜ·ñºÍ¼¯ÈºÖÐÄڴ󲿷ֽڵãͨѶ£¬Èç¹û²»ÄÜÔò°Ñ×Ô¼º½µ¼¶ÎªsecondaryÖ»¶Á½Úµã¡£
ͬ²½
¸±±¾¼¯Í¬²½·ÖΪ³õʼ»¯Í¬²½ºÍkeep¸´ÖÆ¡£³õʼ»¯Í¬²½Ö¸È«Á¿´ÓÖ÷½Úµãͬ²½Êý¾Ý£¬Èç¹ûÖ÷½ÚµãÊý¾ÝÁ¿±È½Ï´óͬ²½Ê±¼ä»á±È½Ï³¤¡£¶økeep¸´ÖÆÖ¸³õʼ»¯Í¬²½¹ýºó£¬½ÚµãÖ®¼äµÄʵʱͬ²½Ò»°ãÊÇÔöÁ¿Í¬²½¡£³õʼ»¯Í¬²½²»Ö»ÊÇÔÚµÚÒ»´Î²Å»á±»´¦·££¬ÓÐÒÔÏÂÁ½ÖÖÇé¿ö»á´¥·¢£º
1.secondaryµÚÒ»´Î¼ÓÈ룬Õâ¸öÊǿ϶¨µÄ¡£
2.secondaryÂäºóµÄÊý¾ÝÁ¿³¬¹ýÁËoplogµÄ´óС£¬ÕâÑùÒ²»á±»È«Á¿¸´ÖÆ¡£
ÄÇʲôÊÇoplogµÄ´óС?Ç°ÃæËµ¹ýoplog±£´æÁËÊý¾ÝµÄ²Ù×÷¼Ç¼£¬secondary¸´ÖÆoplog²¢°ÑÀïÃæµÄ²Ù×÷ÔÚsecondaryÖ´ÐÐÒ»±é¡£µ«ÊÇoplogÒ²ÊÇmongodbµÄÒ»¸ö¼¯ºÏ£¬±£´æÔÚlocal.oplog.rsÀï;È»¶øÕâ¸öoplogÊÇÒ»¸öcapped
collection£¬Ò²¾ÍÊǹ̶¨´óСµÄ¼¯ºÏ£¬ÐÂÊý¾Ý¼ÓÈ볬¹ý¼¯ºÏµÄ´óС»á¸²¸Ç£¬ËùÒÔÕâÀïÐèҪעÒ⣬¿çIDCµÄ¸´ÖÆÒªÉèÖúÏÊʵÄoplogSize£¬±ÜÃâÔÚÉú²ú»·¾³¾³£²úÉúÈ«Á¿¸´ÖÆ¡£oplogSize
¿ÉÒÔͨ¹ý¨CoplogSizeÉèÖôóС£¬¶ÔÓÚLinux ºÍWindows 64룬oplog sizeĬÈÏΪʣÓà´ÅÅ̿ռäµÄ5%¡£
ͬ²½Ò²²¢·ÇÖ»ÄÜ´ÓÖ÷½Úµãͬ²½£¬¼ÙÉ輯ȺÖÐ3¸ö½Úµã£¬½Úµã1ÊÇÖ÷½ÚµãÔÚIDC1£¬½Úµã2¡¢½Úµã3ÔÚIDC2£¬³õʼ»¯½Úµã2¡¢½Úµã3»á´Ó½Úµã1ͬ²½Êý¾Ý¡£ºóÃæ½Úµã2¡¢½Úµã3»áʹÓþͽüÔÔò´Óµ±Ç°IDCµÄ¸±±¾¼¯ÖнøÐи´ÖÆ£¬Ö»ÒªÓÐÒ»¸ö½Úµã´ÓIDC1µÄ½Úµã1¸´ÖÆÊý¾Ý¡£
ÉèÖÃͬ²½»¹Òª×¢ÒâÒÔϼ¸µã£º
secondary²»»á´ÓdelayedºÍhidden³ÉÔ±Éϸ´ÖÆÊý¾Ý¡£
Ö»ÒªÊÇÐèҪͬ²½£¬Á½¸ö³ÉÔ±µÄbuildindexes±ØÐëÒªÏàͬÎÞÂÛÊÇ·ñÊÇtrueºÍfalse¡£buildindexesÖ÷ÒªÓÃÀ´ÉèÖÃÊÇ·ñÕâ¸ö½ÚµãµÄÊý¾ÝÓÃÓÚ²éѯ£¬Ä¬ÈÏΪtrue¡£
Èç¹ûͬ²½²Ù×÷30Ã붼ûÓз´Ó¦£¬Ôò»áÖØÐÂÑ¡ÔñÒ»¸ö½Úµã½øÐÐͬ²½¡£
µ½´Ë£¬±¾ÕÂÇ°ÃæÌáµ½µÄÎÊÌâÈ«²¿½â¾öÁË£¬²»µÃ²»ËµMongoDBµÄÉè¼Æ»¹ÕæÊÇÇ¿´ó!
ºóÐø¼ÌÐø½â¾öÉÏÒ»½ÚÕ⼸¸öÎÊÌ⣺
Ö÷½Úµã¹ÒÁËÄÜ·ñ×Ô¶¯Çл»Á¬½Ó?ĿǰÐèÒªÊÖ¹¤Çл»¡£
Ö÷½ÚµãµÄ¶ÁдѹÁ¦¹ý´óÈçºÎ½â¾ö?
ÔÚϵͳÔçÆÚ£¬Êý¾ÝÁ¿»¹Ð¡µÄʱºò²»»áÒýÆðÌ«´óµÄÎÊÌ⣬µ«ÊÇËæ×ÅÊý¾ÝÁ¿³ÖÐøÔö¶à£¬ºóÐø³ÙÔç»á³öÏÖһ̨»úÆ÷Ó²¼þÆ¿¾±ÎÊÌâµÄ¡£¶øMongoDBÖ÷´òµÄ¾ÍÊǺ£Á¿Êý¾Ý¼Ü¹¹£¬Ëû²»Äܽâ¾öº£Á¿Êý¾ÝÔõôÐÐ!¡°·ÖƬ¡±¾ÍÓÃÕâ¸öÀ´½â¾öÕâ¸öÎÊÌâ¡£
´«Í³Êý¾Ý¿âÔõô×öº£Á¿Êý¾Ý¶Áд?Æäʵһ¾ä»°¸ÅÀ¨£º·Ö¶øÖÎÖ®¡£ÉÏͼ¿´¿´¾ÍÇå³þÁË£¬ÈçÏÂTaoBaoÔÀÐñÇ¿Ìáµ½µÄ¼Ü¹¹Í¼£º

ÉÏͼÖÐÓиöTDDL£¬ÊÇTaoBaoµÄÒ»¸öÊý¾Ý·ÃÎʲã×é¼þ£¬ËûÖ÷ÒªµÄ×÷ÓÃÊÇSQL½âÎö¡¢Â·ÓÉ´¦Àí¡£¸ù¾ÝÓ¦ÓõÄÇëÇóµÄ¹¦ÄܽâÎöµ±Ç°·ÃÎʵÄsqlÅжÏÊÇÔÚÄĸöÒµÎñÊý¾Ý¿â¡¢Äĸö±í·ÃÎʲéѯ²¢·µ»ØÊý¾Ý½á¹û¡£¾ßÌåÈçͼ£º

˵ÁËÕâô¶à´«Í³Êý¾Ý¿âµÄ¼Ü¹¹£¬ÄÇNoSQLÔõôȥ×öµ½ÁËÕâÐ©ÄØ?MySQLÒª×öµ½×Ô¶¯À©Õ¹ÐèÒª¼ÓÒ»¸öÊý¾Ý·ÃÎʲãÓóÌÐòÈ¥À©Õ¹£¬Êý¾Ý¿âµÄÔö¼Ó¡¢É¾³ý¡¢±¸·Ý»¹ÐèÒª³ÌÐòÈ¥¿ØÖÆ¡£Ò»µ«Êý¾Ý¿âµÄ½ÚµãÒ»¶à£¬ÒªÎ¬»¤ÆðÀ´Ò²ÊǷdz£Í·Ì۵ġ£²»¹ýMongoDBËùÓеÄÕâÒ»ÇÐͨ¹ýËû×Ô¼ºµÄÄÚ²¿»úÖÆ¾Í¿ÉÒԸ㶨!»¹ÊÇÉÏͼ¿´¿´MongoDBͨ¹ýÄÄЩ»úÖÆÊµÏÖ·ÓÉ¡¢·ÖƬ£º

´ÓͼÖпÉÒÔ¿´µ½ÓÐËĸö×é¼þ£ºmongos¡¢config server¡¢shard¡¢replica set¡£
mongos£¬Êý¾Ý¿â¼¯ÈºÇëÇóµÄÈë¿Ú£¬ËùÓеÄÇëÇó¶¼Í¨¹ýmongos½øÐÐе÷£¬²»ÐèÒªÔÚÓ¦ÓóÌÐòÌí¼ÓÒ»¸ö·ÓÉÑ¡ÔñÆ÷£¬mongos×Ô¼º¾ÍÊÇÒ»¸öÇëÇó·Ö·¢ÖÐÐÄ£¬Ëü¸ºÔð°Ñ¶ÔÓ¦µÄÊý¾ÝÇëÇóÇëÇóת·¢µ½¶ÔÓ¦µÄshard·þÎñÆ÷ÉÏ¡£ÔÚÉú²ú»·¾³Í¨³£Óжàmongos×÷ΪÇëÇóµÄÈë¿Ú£¬·ÀÖ¹ÆäÖÐÒ»¸ö¹ÒµôËùÓеÄmongodbÇëÇó¶¼Ã»Óа취²Ù×÷¡£
config server£¬¹ËÃû˼ÒåΪÅäÖ÷þÎñÆ÷£¬´æ´¢ËùÓÐÊý¾Ý¿âÔªÐÅÏ¢(·ÓÉ¡¢·ÖƬ)µÄÅäÖá£mongos±¾ÉíûÓÐÎïÀí´æ´¢·ÖƬ·þÎñÆ÷ºÍÊý¾Ý·ÓÉÐÅÏ¢£¬Ö»ÊÇ»º´æÔÚÄÚ´æÀÅäÖ÷þÎñÆ÷Ôòʵ¼Ê´æ´¢ÕâЩÊý¾Ý¡£mongosµÚÒ»´ÎÆô¶¯»òÕ߹صôÖØÆô¾Í»á´Ó
config server ¼ÓÔØÅäÖÃÐÅÏ¢£¬ÒÔºóÈç¹ûÅäÖ÷þÎñÆ÷ÐÅÏ¢±ä»¯»á֪ͨµ½ËùÓÐµÄ mongos ¸üÐÂ×Ô¼ºµÄ״̬£¬ÕâÑù
mongos ¾ÍÄܼÌÐø×¼È·Â·ÓÉ¡£ÔÚÉú²ú»·¾³Í¨³£Óжà¸ö config server ÅäÖ÷þÎñÆ÷£¬ÒòΪËü´æ´¢ÁË·ÖÆ¬Â·ÓɵÄÔªÊý¾Ý£¬Õâ¸ö¿É²»ÄܶªÊ§!¾ÍËã¹ÒµôÆäÖÐһ̨£¬Ö»Òª»¹Óдæ»õ£¬
mongodb¼¯Èº¾Í²»»á¹Òµô¡£
shard£¬Õâ¾ÍÊÇ´«ËµÖÐµÄ·ÖÆ¬ÁË¡£ÉÏÃæÌáµ½Ò»¸ö»úÆ÷¾ÍËãÄÜÁ¦ÔÙ´óÒ²ÓÐÌ컨°å£¬¾ÍÏñ¾ü¶Ó´òÕÌÒ»Ñù£¬Ò»¸öÈËÔÙÀ÷º¦ºÈѪƿҲƴ²»¹ý¶Ô·½µÄÒ»¸öʦ¡£Ë×»°ËµÈý¸ö³ôƤ½³¶¥¸öÖî¸ðÁÁ£¬Õâ¸öʱºòÍŶӵÄÁ¦Á¿¾Í͹ÏÔ³öÀ´ÁË¡£ÔÚ»¥ÁªÍøÒ²ÊÇÕâÑù£¬Ò»Ì¨ÆÕͨµÄ»úÆ÷×ö²»Á˵Ķą̀»úÆ÷À´×ö£¬ÈçÏÂͼ£º

һ̨»úÆ÷µÄÒ»¸öÊý¾Ý±í Collection1 ´æ´¢ÁË 1T Êý¾Ý£¬Ñ¹Á¦Ì«´óÁË!ÔÚ·Ö¸ø4¸ö»úÆ÷ºó£¬Ã¿¸ö»úÆ÷¶¼ÊÇ256G£¬Ôò·Ö̯Á˼¯ÖÐÔÚһ̨»úÆ÷µÄѹÁ¦¡£Ò²ÐíÓÐÈËÎÊһ̨»úÆ÷Ó²Å̼ӴóÒ»µã²»¾Í¿ÉÒÔÁË£¬ÎªÊ²Ã´Òª·Ö¸øËĄ̈»úÆ÷ÄØ?²»Òª¹âÏëµ½´æ´¢¿Õ¼ä£¬Êµ¼ÊÔËÐеÄÊý¾Ý¿â»¹ÓÐÓ²Å̵ĶÁд¡¢ÍøÂçµÄIO¡¢CPUºÍÄÚ´æµÄÆ¿¾±¡£ÔÚmongodb¼¯ÈºÖ»ÒªÉèÖúÃÁË·ÖÆ¬¹æÔò£¬Í¨¹ýmongos²Ù×÷Êý¾Ý¿â¾ÍÄÜ×Ô¶¯°Ñ¶ÔÓ¦µÄÊý¾Ý²Ù×÷ÇëÇóת·¢µ½¶ÔÓ¦µÄ·ÖƬ»úÆ÷ÉÏ¡£ÔÚÉú²ú»·¾³ÖÐ·ÖÆ¬µÄƬ¼ü¿ÉÒªºÃºÃÉèÖã¬Õâ¸öÓ°Ïìµ½ÁËÔõô°ÑÊý¾Ý¾ùÔÈ·Öµ½¶à¸ö·ÖƬ»úÆ÷ÉÏ£¬²»Òª³öÏÖÆäÖÐһ̨»úÆ÷·ÖÁË1T£¬ÆäËû»úÆ÷ûÓзֵ½µÄÇé¿ö£¬ÕâÑù»¹²»Èç²»·ÖƬ!
replica set£¬ÉÏÁ½½ÚÒѾÏêϸ½²¹ýÁËÕâ¸ö¶«¶«£¬ÔõôÕâÀïÓÖÀ´´ÕÈÈÄÖ!ÆäʵÉÏͼ4¸ö·ÖƬÈç¹ûûÓÐ
replica set ÊǸö²»ÍêÕû¼Ü¹¹£¬¼ÙÉèÆäÖеÄÒ»¸ö·ÖƬ¹ÒµôÄÇËÄ·ÖÖ®Ò»µÄÊý¾Ý¾Í¶ªÊ§ÁË£¬ËùÒÔÔڸ߿ÉÓÃÐ﵀ᅮ¬¼Ü¹¹»¹ÐèÒª¶ÔÓÚÿһ¸ö·ÖƬ¹¹½¨
replica set ¸±±¾¼¯±£Ö¤·ÖƬµÄ¿É¿¿ÐÔ¡£Éú²ú»·¾³Í¨³£ÊÇ 2¸ö¸±±¾ + 1¸öÖٲá£
˵ÁËÕâô¶à£¬»¹ÊÇÀ´ÊµÕ½Ò»ÏÂÈçºÎ´î½¨¸ß¿ÉÓõÄmongodb¼¯Èº£º
Ê×ÏÈÈ·¶¨¸÷¸ö×é¼þµÄÊýÁ¿£¬mongos 3¸ö£¬ config server
3¸ö£¬Êý¾Ý·Ö3Ƭ shard server 3¸ö£¬Ã¿¸öshard ÓÐÒ»¸ö¸±±¾Ò»¸öÖÙ²ÃÒ²¾ÍÊÇ 3 * 2
= 6 ¸ö£¬×ܹ²ÐèÒª²¿Êð15¸öʵÀý¡£ÕâЩʵÀý¿ÉÒÔ²¿ÊðÔÚ¶ÀÁ¢»úÆ÷Ò²¿ÉÒÔ²¿ÊðÔÚһ̨»úÆ÷£¬ÎÒÃÇÕâÀï²âÊÔ×ÊÔ´ÓÐÏÞ£¬Ö»×¼±¸ÁË
3̨»úÆ÷£¬ÔÚͬһ̨»úÆ÷Ö»Òª¶Ë¿Ú²»Í¬¾Í¿ÉÒÔ£¬¿´Ò»ÏÂÎïÀí²¿Êðͼ£º

¼Ü¹¹´îºÃÁË£¬°²×°Èí¼þ!
1. ×¼±¸»úÆ÷£¬IP·Ö±ðÉèÖÃΪ£º 192.168.0.136¡¢192.168.0.137¡¢192.168.0.138¡£
2. ·Ö±ðÔÚÿ̨»úÆ÷ÉϽ¨Á¢mongodb·ÖƬ¶ÔÓ¦²âÊÔÎļþ¼Ð¡£
#´æ·ÅmongodbÊý¾ÝÎļþ
¡¡¡¡mkdir -p /data/mongodbtest
¡¡¡¡#½øÈëmongodbÎļþ¼Ð
¡¡¡¡cd /data/mongodbtest |
3. ÏÂÔØmongodbµÄ°²×°³ÌÐò°ü
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz
¡¡¡¡#½âѹÏÂÔØµÄѹËõ°ü
¡¡¡¡tar xvzf mongodb-linux-x86_64-2.4.8.tgz |
4. ·Ö±ðÔÚÿ̨»úÆ÷½¨Á¢mongos ¡¢config ¡¢ shard1 ¡¢shard2¡¢shard3
Îå¸öĿ¼¡£
ÒòΪmongos²»´æ´¢Êý¾Ý£¬Ö»ÐèÒª½¨Á¢ÈÕÖ¾ÎļþĿ¼¼´¿É¡£
#½¨Á¢mongosĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/mongos/log
¡¡¡¡#½¨Á¢config server Êý¾ÝÎļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/config/data
¡¡¡¡#½¨Á¢config server ÈÕÖ¾Îļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/config/log
¡¡¡¡#½¨Á¢config server ÈÕÖ¾Îļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/mongos/log
¡¡¡¡#½¨Á¢shard1 Êý¾ÝÎļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard1/data
¡¡¡¡#½¨Á¢shard1 ÈÕÖ¾Îļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard1/log
¡¡¡¡#½¨Á¢shard2 Êý¾ÝÎļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard2/data
¡¡¡¡#½¨Á¢shard2 ÈÕÖ¾Îļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard2/log
¡¡¡¡#½¨Á¢shard3 Êý¾ÝÎļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard3/data
¡¡¡¡#½¨Á¢shard3 ÈÕÖ¾Îļþ´æ·ÅĿ¼
¡¡¡¡mkdir -p /data/mongodbtest/shard3/log |
5. ¹æ»®5¸ö×é¼þ¶ÔÓ¦µÄ¶Ë¿ÚºÅ£¬ÓÉÓÚÒ»¸ö»úÆ÷ÐèҪͬʱ²¿Êð mongos¡¢config server ¡¢shard1¡¢shard2¡¢shard3£¬ËùÒÔÐèÒªÓö˿ڽøÐÐÇø·Ö¡£
Õâ¸ö¶Ë¿Ú¿ÉÒÔ×ÔÓɶ¨Ò壬ÔÚ±¾ÎÄ mongosΪ 20000£¬ config server Ϊ 21000£¬
shard1Ϊ 22001 £¬ shard2Ϊ22002£¬ shard3Ϊ22003.
6. ÔÚÿһ̨·þÎñÆ÷·Ö±ðÆô¶¯ÅäÖ÷þÎñÆ÷¡£
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod
--configsvr --dbpath /data/mongodbtest/config/data --port 21000
--logpath /data/mongodbtest/config/log/config.log --fork |
7. ÔÚÿһ̨·þÎñÆ÷·Ö±ðÆô¶¯mongos·þÎñÆ÷¡£
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongos --configdb
192.168.0.136:21000,192.168.0.137:21000,192.168.0.138:21000 --port
20000 --logpath /data/mongodbtest/mongos/log/mongos.log --fork |
8. ÅäÖø÷¸ö·ÖƬµÄ¸±±¾¼¯¡£
#ÔÚÿ¸ö»úÆ÷Àï·Ö±ðÉèÖÃ·ÖÆ¬1·þÎñÆ÷¼°¸±±¾¼¯shard1
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod
--shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodbtest/shard1/data
--logpath /data/mongodbtest/shard1/log/shard1.log --fork --nojournal --oplogSize 10 |
ΪÁË¿ìËÙÆô¶¯²¢½ÚÔ¼²âÊÔ»·¾³´æ´¢¿Õ¼ä£¬ÕâÀï¼ÓÉÏ nojournal ÊÇΪÁ˹رÕÈÕÖ¾ÐÅÏ¢£¬ÔÚÎÒÃǵIJâÊÔ»·¾³²»ÐèÒª³õʼ»¯Õâô´óµÄredoÈÕÖ¾¡£Í¬ÑùÉèÖÃ
oplogsizeÊÇΪÁ˽µµÍ local ÎļþµÄ´óС£¬oplogÊÇÒ»¸ö¹Ì¶¨³¤¶ÈµÄ capped collection,Ëü´æÔÚÓÚ¡±local¡±Êý¾Ý¿âÖÐ,ÓÃÓڼǼReplica
Sets²Ù×÷ÈÕÖ¾¡£×¢Ò⣬ÕâÀïµÄÉèÖÃÊÇΪÁ˲âÊÔ!
#ÔÚÿ¸ö»úÆ÷Àï·Ö±ðÉèÖÃ·ÖÆ¬2·þÎñÆ÷¼°¸±±¾¼¯shard2
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod
--shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodbtest/shard2/data
--logpath /data/mongodbtest/shard2/log/shard2.log --fork --nojournal --oplogSize 10
#ÔÚÿ¸ö»úÆ÷Àï·Ö±ðÉèÖÃ·ÖÆ¬3·þÎñÆ÷¼°¸±±¾¼¯shard3
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr
--replSet shard3 --port 22003 --dbpath /data/mongodbtest/shard3/data
--logpath /data/mongodbtest/shard3/log/shard3.log --fork --nojournal --oplogSize 10 |
·Ö±ð¶Ôÿ¸ö·ÖƬÅäÖø±±¾¼¯£¬ÉîÈëÁ˽⸱±¾¼¯²Î¿¼±¾ÏµÁÐǰ¼¸ÆªÎÄÕ¡£
ÈÎÒâµÇ½һ¸ö»úÆ÷£¬±ÈÈçµÇ½192.168.0.136£¬Á¬½ÓMongoDB
#ÉèÖõÚÒ»¸ö·ÖƬ¸±±¾¼¯
¡¡¡¡/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:22001
¡¡¡¡#ʹÓÃadminÊý¾Ý¿â
¡¡¡¡use admin
¡¡¡¡#¶¨Ò帱±¾¼¯ÅäÖÃ
¡¡¡¡config = { _id:"shard1", members:[
¡¡¡¡{_id:0,host:"192.168.0.136:22001"},
¡¡¡¡{_id:1,host:"192.168.0.137:22001"},
¡¡¡¡{_id:2,host:"192.168.0.138:22001",arbiterOnly:true}
¡¡¡¡]
¡¡¡¡}
¡¡¡¡#³õʼ»¯¸±±¾¼¯ÅäÖÃ
¡¡¡¡rs.initiate(config);
¡¡¡¡#ÉèÖõڶþ¸ö·ÖƬ¸±±¾¼¯
¡¡¡¡/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:22002
¡¡¡¡#ʹÓÃadminÊý¾Ý¿â
¡¡¡¡use admin
¡¡¡¡#¶¨Ò帱±¾¼¯ÅäÖÃ
¡¡¡¡config = { _id:"shard2", members:[
¡¡¡¡{_id:0,host:"192.168.0.136:22002"},
¡¡¡¡{_id:1,host:"192.168.0.137:22002"},
¡¡¡¡{_id:2,host:"192.168.0.138:22002",arbiterOnly:true}
¡¡¡¡]
¡¡¡¡}
¡¡¡¡#³õʼ»¯¸±±¾¼¯ÅäÖÃ
¡¡¡¡rs.initiate(config);
¡¡¡¡#ÉèÖõÚÈý¸ö·ÖƬ¸±±¾¼¯
¡¡¡¡/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:22003
¡¡¡¡#ʹÓÃadminÊý¾Ý¿â
¡¡¡¡use admin
¡¡¡¡#¶¨Ò帱±¾¼¯ÅäÖÃ
¡¡¡¡config = { _id:"shard3", members:[
¡¡¡¡{_id:0,host:"192.168.0.136:22003"},
¡¡¡¡{_id:1,host:"192.168.0.137:22003"},
¡¡¡¡{_id:2,host:"192.168.0.138:22003",arbiterOnly:true}
¡¡¡¡]
¡¡¡¡}
¡¡¡¡#³õʼ»¯¸±±¾¼¯ÅäÖÃ
¡¡¡¡rs.initiate(config); |
9. Ŀǰ´î½¨ÁËmongodbÅäÖ÷þÎñÆ÷¡¢Â·ÓÉ·þÎñÆ÷£¬¸÷¸ö·ÖƬ·þÎñÆ÷£¬²»¹ýÓ¦ÓóÌÐòÁ¬½Óµ½
mongos ·ÓÉ·þÎñÆ÷²¢²»ÄÜʹÓÃ·ÖÆ¬»úÖÆ£¬»¹ÐèÒªÔÚ³ÌÐòÀïÉèÖÃ·ÖÆ¬ÅäÖã¬ÈÃ·ÖÆ¬ÉúЧ¡£
#Á¬½Óµ½mongos /data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:20000
¡¡¡¡#ʹÓÃadminÊý¾Ý¿â user admin
¡¡¡¡#´®ÁªÂ·ÓÉ·þÎñÆ÷Óë·ÖÅ丱±¾¼¯1
¡¡¡¡db.runCommand( { addshard : "shard1/192.168.0.136:22001,192.168.0.137:22001,192.168.0.138:22001"}); |
ÈçÀïshardÊǵ¥Ì¨·þÎñÆ÷£¬Óà db.runCommand( { addshard : ¡° [: ]¡±
} )ÕâÑùµÄÃüÁî¼ÓÈ룬Èç¹ûshardÊǸ±±¾¼¯£¬ÓÃdb.runCommand( { addshard :
¡°replicaSetName/ [:port][,serverhostname2[:port],¡]¡±
});ÕâÑùµÄ¸ñʽ±íʾ ¡£
#´®ÁªÂ·ÓÉ·þÎñÆ÷Óë·ÖÅ丱±¾¼¯2
¡¡¡¡db.runCommand( { addshard : "shard2/192.168.0.136:22002,192.168.0.137:22002,192.168.0.138:22002"});
¡¡¡¡#´®ÁªÂ·ÓÉ·þÎñÆ÷Óë·ÖÅ丱±¾¼¯3
¡¡¡¡db.runCommand( { addshard : "shard3/192.168.0.136:22003,192.168.0.137:22003,192.168.0.138:22003"});
¡¡¡¡#²é¿´·ÖƬ·þÎñÆ÷µÄÅäÖÃ
¡¡¡¡db.runCommand( { listshards : 1 } );
¡¡¡¡#ÄÚÈÝÊä³ö
¡¡¡¡[plain] view plaincopy{
¡¡¡¡"shards" : [
¡¡¡¡{
¡¡¡¡"_id" : "shard1",
¡¡¡¡"host" : "shard1/192.168.0.136:22001,192.168.0.137:22001"
¡¡¡¡},
¡¡¡¡{
¡¡¡¡"_id" : "shard2",
¡¡¡¡"host" : "shard2/192.168.0.136:22002,192.168.0.137:22002"
¡¡¡¡},
¡¡¡¡{
¡¡¡¡"_id" : "shard3",
¡¡¡¡"host" : "shard3/192.168.0.136:22003,192.168.0.137:22003"
¡¡¡¡}
¡¡¡¡],
¡¡¡¡"ok" : 1
¡¡¡¡} |
ÒòΪ192.168.0.138ÊÇÿ¸ö·ÖƬ¸±±¾¼¯µÄÖٲýڵ㣬ËùÒÔÔÚÉÏÃæ½á¹ûûÓÐÁгöÀ´¡£
10. ĿǰÅäÖ÷þÎñ¡¢Â·ÓÉ·þÎñ¡¢·ÖƬ·þÎñ¡¢¸±±¾¼¯·þÎñ¶¼ÒѾ´®ÁªÆðÀ´ÁË£¬µ«ÎÒÃǵÄÄ¿µÄÊÇÏ£Íû²åÈëÊý¾Ý£¬Êý¾ÝÄܹ»×Ô¶¯·ÖƬ£¬¾Í²îÄÇôһµãµã£¬Ò»µãµã¡£¡£¡£
Á¬½ÓÔÚmongosÉÏ£¬×¼±¸ÈÃÖ¸¶¨µÄÊý¾Ý¿â¡¢Ö¸¶¨µÄ¼¯ºÏ·ÖƬÉúЧ¡£
#Ö¸¶¨testdb·ÖƬÉúЧ
¡¡¡¡db.runCommand( { enablesharding :"testdb"});
¡¡¡¡#Ö¸¶¨Êý¾Ý¿âÀïÐèÒª·ÖƬµÄ¼¯ºÏºÍƬ¼ü
¡¡¡¡db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } ) |
ÎÒÃÇÉèÖÃtestdbµÄ table1 ±íÐèÒª·ÖƬ£¬¸ù¾Ý id ×Ô¶¯·ÖƬµ½ shard1 £¬shard2£¬shard3
ÉÏÃæÈ¥¡£ÒªÕâÑùÉèÖÃÊÇÒòΪ²»ÊÇËùÓÐmongodb µÄÊý¾Ý¿âºÍ±í ¶¼ÐèÒª·ÖƬ!
11. ²âÊÔ·ÖÆ¬ÅäÖýá¹û¡£
#Á¬½Ómongos·þÎñÆ÷
¡¡¡¡/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:20000
¡¡¡¡#ʹÓÃtestdb use testdb;
¡¡¡¡#²åÈë²âÊÔÊý¾Ý
¡¡¡¡for (var i = 1; i <= 100000; i++)
¡¡¡¡db.table1.save({id:i,"test1":"testval1"});
¡¡¡¡#²é¿´·ÖƬÇé¿öÈçÏ£¬²¿·ÖÎÞ¹ØÐÅϢʡµôÁË
¡¡¡¡db.table1.stats();
¡¡¡¡[java] view plaincopy{
¡¡¡¡"sharded" : true,
¡¡¡¡"ns" : "testdb.table1",
¡¡¡¡"count" : 100000,
¡¡¡¡"numExtents" : 13,
¡¡¡¡"size" : 5600000,
¡¡¡¡"storageSize" : 22372352,
¡¡¡¡"totalIndexSize" : 6213760,
¡¡¡¡"indexSizes" : {
¡¡¡¡"_id_" : 3335808,
¡¡¡¡"id_1" : 2877952
¡¡¡¡},
¡¡¡¡"avgObjSize" : 56,
¡¡¡¡"nindexes" : 2,
¡¡¡¡"nchunks" : 3,
¡¡¡¡"shards" : {
¡¡¡¡"shard1" : {
¡¡¡¡"ns" : "testdb.table1",
¡¡¡¡"count" : 42183,
¡¡¡¡"size" : 0,
¡¡¡¡...
¡¡¡¡"ok" : 1
¡¡¡¡},
¡¡¡¡"shard2" : {
¡¡¡¡"ns" : "testdb.table1",
¡¡¡¡"count" : 38937,
¡¡¡¡"size" : 2180472,
¡¡¡¡...
¡¡¡¡"ok" : 1
¡¡¡¡},
¡¡¡¡"shard3" : {
¡¡¡¡"ns" : "testdb.table1",
¡¡¡¡"count" :18880,
¡¡¡¡"size" : 3419528,
¡¡¡¡...
¡¡¡¡"ok" : 1
¡¡¡¡}
¡¡¡¡},
¡¡¡¡"ok" : 1
¡¡¡¡} |
¿ÉÒÔ¿´µ½Êý¾Ý·Öµ½3¸ö·ÖƬ£¬¸÷×Ô·ÖÆ¬ÊýÁ¿Îª£º shard1 ¡°count¡± : 42183£¬shard2
¡°count¡±£º 38937£¬shard3 ¡°count¡± : 18880¡£ÒѾ³É¹¦ÁË!²»¹ý·ÖµÄºÃÏñ²»ÊǺܾùÔÈ£¬ËùÒÔÕâ¸ö·ÖƬ»¹ÊǺÜÓн²¾¿µÄ£¬ºóÐøÔÙÉîÈëÌÖÂÛ¡£
12. Java³ÌÐòµ÷ÓÃ·ÖÆ¬¼¯Èº£¬ÒòΪÎÒÃÇÅäÖÃÁËÈý¸ömongos×÷ΪÈë¿Ú£¬¾ÍËãÆäÖÐÄĸöÈë¿Ú¹ÒµôÁ˶¼Ã»¹ØÏµ£¬Ê¹Óü¯Èº¿Í»§¶Ë³ÌÐòÈçÏ£º
[java] view plaincopypublic class TestMongoDBShards { public static void main(String[] args)
¡¡¡¡{ try { List addresses = new ArrayList();
¡¡¡¡ServerAddress address1 = new ServerAddress("192.168.0.136" , 20000); ServerAddress
¡¡¡¡address2 = new ServerAddress("192.168.0.137" , 20000); ServerAddress address3
¡¡¡¡= new ServerAddress("192.168.0.138" , 20000); addresses.add(address1);
¡¡¡¡addresses.add(address2); addresses.add(address3); MongoClient client =
¡¡¡¡new MongoClient(addresses); DB db = client.getDB( "testdb" ); DBCollection
¡¡¡¡coll = db.getCollection( "table1" ); BasicDBObject object = new BasicDBObject();
¡¡¡¡object.append( "id" , 1); DBObject dbObject = coll.findOne(object); System.
¡¡¡¡out .println(dbObject); } catch (Exception e) { e.printStackTrace(); }
¡¡¡¡} } |
Õû¸ö·ÖƬ¼¯Èº´î½¨ÍêÁË£¬Ë¼¿¼Ò»ÏÂÎÒÃÇÕâ¸ö¼Ü¹¹ÊDz»ÊÇ×ã¹»ºÃÄØ?Æäʵ»¹ÓÐºÜ¶àµØ·½ÐèÒªÓÅ»¯£¬±ÈÈçÎÒÃǰÑËùÓеÄÖٲýڵã·ÅÔÚһ̨»úÆ÷£¬ÆäÓàÁ½Ì¨»úÆ÷³Ðµ£ÁËÈ«²¿¶Áд²Ù×÷£¬µ«ÊÇ×÷ΪÖٲõÄ192.168.0.138Ï൱¿ÕÏС£ÈûúÆ÷3
192.168.0.138¶à·Öµ£µãÔðÈΰÉ!¼Ü¹¹¿ÉÒÔÕâÑùµ÷Õû£¬°Ñ»úÆ÷µÄ¸ºÔطֵĸü¼Ó¾ùºâÒ»µã£¬Ã¿¸ö»úÆ÷¼È¿ÉÒÔ×÷ΪÖ÷½Úµã¡¢¸±±¾½Úµã¡¢Öٲýڵ㣬ÕâÑùѹÁ¦¾Í»á¾ùºâºÜ¶àÁË£¬Èçͼ£º

µ±È»Éú²ú»·¾³µÄÊý¾ÝÔ¶Ô¶´óÓÚµ±Ç°µÄ²âÊÔÊý¾Ý£¬´ó¹æÄ£Êý¾ÝÓ¦ÓÃÇé¿öÏÂÎÒÃDz»¿ÉÄܰÑÈ«²¿µÄ½ÚµãÏñÕâÑù²¿Êð£¬Ó²¼þÆ¿¾±ÊÇÓ²ÉË£¬Ö»ÄÜÀ©Õ¹»úÆ÷¡£ÒªÓúÃmongodb»¹Óкܶà»úÖÆÐèÒªµ÷Õû£¬²»¹ýͨ¹ýÕâ¸ö¶«¶«ÎÒÃÇ¿ÉÒÔ¿ìËÙʵÏָ߿ÉÓÃÐÔ¡¢¸ßÀ©Õ¹ÐÔ£¬ËùÒÔËü»¹ÊÇÒ»¸ö·Ç³£²»´íµÄNosql×é¼þ¡£
ÔÙ¿´¿´ÎÒÃÇʹÓõÄmongodb java Çý¶¯¿Í»§¶Ë MongoClient(addresses)£¬Õâ¸ö¿ÉÒÔ´«Èë¶à¸ömongos
µÄµØÖ·×÷Ϊmongodb¼¯ÈºµÄÈë¿Ú£¬²¢ÇÒ¿ÉÒÔʵÏÖ×Ô¶¯¹ÊÕÏ×ªÒÆ£¬µ«ÊǸºÔؾùºâ×öµÄºÃ²»ºÃÄØ?´ò¿ªÔ´´úÂë²é¿´£º

ËüµÄ»úÖÆÊÇÑ¡ÔñÒ»¸öping ×î¿ìµÄ»úÆ÷À´×÷ΪËùÓÐÇëÇóµÄÈë¿Ú£¬Èç¹ûÕą̂»úÆ÷¹Òµô»áʹÓÃÏÂһ̨»úÆ÷¡£ÄÇÕâÑù¡£¡£¡£¡£¿Ï¶¨ÊDz»ÐеÄ!ÍòÒ»³öÏÖ˫ʮһÕâÑùµÄÇé¿öËùÓÐÇëÇó¼¯Öз¢Ë͵½Õâһ̨»úÆ÷£¬Õą̂»úÆ÷ºÜÓпÉÄܹҵô¡£Ò»µ«¹ÒµôÁË£¬°´ÕÕËüµÄ»úÖÆ»á×ªÒÆÇëÇóµ½ÏĄ̂»úÆ÷£¬µ«ÊÇÕâ¸öѹÁ¦×ÜÁ¿»¹ÊÇûÓмõÉÙ°¡!ÏÂһ̨»¹ÊÇ¿ÉÄܱÀÀ££¬ËùÒÔÕâ¸ö¼Ü¹¹»¹ÓЩ¶´!ÏÞÓÚÎÄÕÂÆª·ù£¬Çë´ýºóÐø½â¾ö¡£
|