MySQL ¼¯ÈºÖªÊ¶µãÕûÀí

Ëæ×ÅÏîÄ¿¼Ü¹¹µÄ²»¶ÏÀ©´ó£¬µ¥Ì¨ MySQL ÒѾ­²»ÄÜÂú×ãÐèÒªÁË£¬365betÌåÓýÔÚÏßÐèÒª´î½¨¼¯Èº½«Ç°À´µÄÇëÇó½øÐзÖÁ÷´¦Àí¡£²©¿ÍÖ÷Òª¸ù¾Ý¶¡ÆæÀÏʦµÄרÀ¸<<MySQLʵս45½²>>ѧϰµÄ×ܽᡣ

¼Ü¹¹

MySQLµÄ¼¯ÈººÍ Redis ¼¯ÈºÀàËÆ£¬¶¼ÊÇĬÈÏΪmaster ¿â£¬¿ÉÒÔÉèÖÃΪ´Ó¿â£¬Ö÷¿â¸ºÔð´¦ÀíдÇëÇ󣬴ӿ⴦Àí¶ÁÇëÇó¡£Ò»°ã½«´Ó¿âÉèÖÃΪ read-only£¬Ò²¾ÍÊǽ«Õâ¸ö²ÎÊýÉèΪ true¡£ÕâÑù¼È±ÜÃâÁËÔÚÖ÷´ÓÇл»¡¢²âÊÔʱ´Ó¿âµÄÎó²Ù×÷µ¼ÖÂÖ÷´Ó²»Ò»Ö£¬Í¬Ê±Ò²¿ÉÒÔͨ¹ýÕâ¸öÊôÐÔÀ´Åжϵ±Ç°¿âÊÇʲô½ÇÉ«¡£

ÖÖÀà

1¡¢°´ master ÊýÁ¿À´¿´£¬¼Ü¹¹¿ÉÒÔ·ÖΪÁ½ÖÖ¡£

µÚ365ÌåÓýͶעÊÇÃ÷È·µÄÖ÷±¸¹ØÏµ£¬ÕâÖÖʹÓõIJ»¶à£¬ÒòΪÔÚÖ÷±¸Çл»Ê±»á±È½ÏºÄʱ¡£

µÚ¶þÖÖÊÇÓжà¸ömaster£¬master Ö®¼ä»¥ÎªÖ÷±¸¹ØÏµ£¬Ö»²»¹ý±£ÁôÒ»¸ö´¦Àíд²Ù×÷£¬ÆäËûµÄÉèÖà readonly=true£¬Ö»´¦Àí¶ÁÇëÇó¡£ÕâÖּܹ¹ÔÚÇл»Ê±±È½Ï·½±ã¡¢¿ì½Ý¡£

 

2¡¢°´ÊÇ·ñ´úÀíµÄ½Ç¶ÈÀ´¿´£¬Ò²¿ÉÒÔ·ÖΪÁ½ÖÖ¡£

µÚ365ÌåÓýͶעÊDz»Ê¹ÓôúÀí¡£ÕâÖÖ·½Ê½µÄºÃ´¦ÊǼܹ¹¼òµ¥¡¢Ö´Ðп졢ÅÅ´í¿ì¡£È±µãÊÇÔÚÖ÷±¸Çл»¡¢¿âÇ¨ÒÆÊ±ÐèÒª¸Ä±äºǫ́Êý¾Ý¿âÁ¬½ÓÐÅÏ¢¡£

 µÚ¶þÖÖÊÇʹÓôúÀí¡£ÕâÑù×öµÄºÃ´¦ÊǺó¶Ë²»ÐèÒª¹Ø×¢Êý¾Ý¿â²Ù×÷µÄϸ½Ú£¬Á¬½Óά»¤¡¢ºǫ́ÐÅϢά»¤¶¼ÊÇÓÉ proxy Íê³ÉµÄ¡£µ«È±µãÒ²ºÜÃ÷ÏÔ£¬ÕâÑùµÄ¼Ü¹¹±È½Ï¸´ÔÓ£¬ÅäÖá¢Î¬»¤ÆðÀ´±È½Ï³ÔÁ¦£¬ÇÒ proxy ±ØÐëÊǸ߿ÉÓõġ£

 

´î½¨

1¡¢ÅäÖÃmaster£º

¡¡¡¡1£©´ò¿ªÅäÖÃÎļþ£¨Ä¬ÈÏÔÚ/usr/my.cnf£©£¬Ö÷ÒªÅäÖõIJÎÊý£º

¡¡¡¡¡¡¡¡server-id£ºµ±Ç°¿âµÄ id

¡¡¡¡¡¡¡¡log-bin£ºbinlog ´æ´¢Î»ÖÃ

¡¡¡¡¡¡¡¡read-only£ºÊÇ·ñÖ»¶Á¡£1´ú±íÖ»¶Á£¬0´ú±í¶Áд¡£

¡¡¡¡¡¡¡¡binlog-ignore-db£º²»±£´æ²Ù×÷µ½binlog µÄÊý¾Ý¿â£¬¿ÉÒÔÉèΪ mysql

¡¡¡¡È»ºóÖØÆô£ºservice  mysql  restart ;

¡¡¡¡2£©´´½¨Í¬²½Êý¾ÝµÄÕË»§£¬²¢ÊÚȨ£º

¡¡¡¡¡¡¡¡grant  replication  slave  on  *.*  to  'Óû§Ãû'@''ipµØÖ·'  identified by  'ÃÜÂë' ; 

¡¡¡¡¡¡¡¡flush  privilages;

¡¡¡¡3£©²é¿´ master ×´Ì¬£ºshow  master  status¡£µÃµ½ Position Öµ£¨ÈÕÖ¾×îÐÂдÈëµã£©¡£

2¡¢ÅäÖà slave£º

¡¡¡¡1£©´ò¿ªÅäÖÃÎļþmy.cnf£¬ÅäÖòÎÊý server-id ¡¢log-bin¡¢read-only¡£È»ºóÖØÆô¡£

¡¡¡¡2£©ÅäÖôӿâÓëÖ÷¿âµÄ¹ØÁª£º

CHANGE MASTER TO 
MASTER_HOST=$host_name 
MASTER_PORT=$port 
MASTER_USER=$user_name 
MASTER_PASSWORD=$password 
MASTER_LOG_FILE=$master_log_name 
MASTER_LOG_POS=$master_log_pos 

MASTER_HOST¡¢MASTER_PORT¡¢MASTER_USER ºÍ MASTER_PASSWORD Ëĸö²ÎÊý£¬·Ö±ð´ú±íÁËÖ÷¿â A¡¯µÄ IP¡¢¶Ë¿Ú¡¢Óû§ÃûºÍÃÜÂë¡£×îºóÁ½¸ö²ÎÊý MASTER_LOG_FILE ºÍ MASTER_LOG_POS 365ÌåÓýͶע£¬Òª´ÓÖ÷¿âµÄ master_log_name ÎļþµÄ master_log_pos Õâ¸öλÖõÄÈÕÖ¾¼ÌÐøÍ¬²½¡£¶øÕâ¸öÖµ¾ÍÊÇÇ°Ãæ¶ÁÈ¡µÄ Position Öµ¡£

ÉÏÃæÕâÖÖÊÇ5.6֮ǰͨ¹ýλµãÀ´ÊµÏÖͬ²½µÄ£¬Æä´æÔںܶ಻×㣬±ÈÈçÕâ¸öλµãÔÚÖ÷¿âÇл»Ê±ÐèÒªÖØÐÂÈ¥»ñÈ¡£¬²¢ÇÒÔÚеÄÖ÷¿âÆô¶¯ºó´Ó¿â¿ÉÄܻᵼÖ²Ù×÷ÖØ¸´Ö´Ðе¼ÖÂÅ׳öÒì³££¬365betÌåÓýÔÚÏßÔÚ5.6ÒýÈëÁË GTIDÀ´Ì滻λµã£¬½â¾öÁËÕâ¸öÎÊÌâ¡£¾ßÌåÔÚÏÂÎÄ»á½âÊÍ¡£ÕâÀïÏÈ˵һÏÂʹÓà GTID À´Íê³ÉÖ÷±¸Á¬½Ó¡£

¡¡¡¡1£©Ê×ÏÈÒªÔÚÖ÷´Ó¿âÉ϶¼ÉèÖòÎÊý£ºSET GLOBAL ENFORCE_GTID_CONSISTENCY = 'ON';¡¡¡¡SET GLOBAL GTID_MODE = 'ON';¡¡¡¡Èç¹ûÒªÓÀ¾ÃÓÐЧ£¬ÔÚÅäÖÃÎļþ my.cnf ÖÐÅäÖàgtid-mode=ON¡¡¡¡enforce-gtid-consistency=1 ¡£

¡¡¡¡2£©ÅäÖôӿâÓëÖ÷¿âµÄ¹ØÁª£º

CHANGE MASTER TO 
MASTER_HOST=$host_name 
MASTER_PORT=$port 
MASTER_USER=$user_name 
MASTER_PASSWORD=$password 
master_auto_position=1 ¡£

×îºó¿ªÆôͬ²½£ºstart  slave;

 

Ô­Àí

ÄÚ²¿Ö´ÐÐͼ£º

1¡¢ÔÚ±¸¿â B ÉÏͨ¹ý change master ÃüÁÉèÖÃÖ÷¿â A µÄ IP¡¢¶Ë¿Ú¡¢Óû§Ãû¡¢ÃÜÂ룬ÒÔ¼°Òª´ÓÄĸöλÖÿªÊ¼ÇëÇó binlog£¬Õâ¸öλÖðüº¬ÎļþÃûºÍÈÕÖ¾Æ«ÒÆÁ¿¡£
2¡¢ÔÚ±¸¿â B ÉÏÖ´ÐÐ start slave ÃüÁÕâʱºò±¸¿â»áÆô¶¯Á½¸öỊ̈߳¬¾ÍÊÇͼÖÐµÄ io_thread ºÍ sql_thread¡£ÆäÖÐ io_thread ¸ºÔðÓëÖ÷¿â½¨Á¢Á¬½Ó¡£
3¡¢Ö÷¿â A УÑéÍêÓû§Ãû¡¢ÃÜÂëºó£¬¿ªÊ¼°´ÕÕ±¸¿â B ´«¹ýÀ´µÄλÖ㬴ӱ¾µØ¶ÁÈ¡ binlog£¨ÏÈ´Ópage cacheÖжÁÈ¡£¬Ã»ÓÐÔÙ¶ÁÈ¡´ÅÅÌ£©£¬·¢¸ø B¡£
4¡¢±¸¿â B Äõ½ binlog ºó£¬Ð´µ½±¾µØÎļþ£¬³ÆÎªÖÐתÈÕÖ¾£¨relay log£©¡£
5¡¢sql_thread ¶ÁÈ¡ÖÐתÈÕÖ¾£¬½âÎö³öÈÕÖ¾ÀïµÄÃüÁ²¢Ö´ÐС£

 

Ñ­»·¸´ÖÆ

ÕâÀï´Ó¿â¿ÉÒÔ½«´ÓÖ÷¿â´«À´µÄ¸üеÄÊý¾ÝÒ²½øÐг־û¯¼Ç¼ÔÚ±¾µØµÄ binlog ÖУ¬Í¨¹ý½«²ÎÊý log_slave_updates ÉèΪ on À´¿ªÆôÕâ¸ö¹¦ÄÜ¡£µ«ÊÇÕâÑù¿ÉÄܻᷢÉúÑ­»·¸´ÖÆ¡£

¸üвÙ×÷µÄ binlog µÄÖ´ÐлúÖÆ£ºÄ³¸ö¿â´¦ÀíÁËд²Ù×÷£¬ÄÇôËü¾Í»á½«Õâ¸öд²Ù×÷Ïà¹ØµÄ binlog ·¢Ë͸øÆäËûÓëÆä¹ØÁªµÄ¿â£¬Õâ¸ö binlog ÉÏ»á¼Ç¼µ±Ç°¿âµÄ server-id£¬ÆäËû¿âÊÕµ½ binlog ºó»áÅÐ¶Ï server-id ÊÇ·ñÊǵ±Ç°¿âµÄ server-id£¬Èç¹û²»ÊǾÍÓ¦Óõ½¿âÖв¢¼Ç¼µ½ binlog£¨ÕâÀï¼Ç¼²»»á¸Ä±äÔ­ÓеĽÓÊÕµ½µÄÊý¾Ý£¬Ò²¾Í²»ÊÇÐÞ¸Ä server-id£©£¬È»ºóÔÙÖØ¸´½«Ð´²Ù×÷µÄ binlog ·¢Ë͸øÆäËû¿â¡£ 

·¢ÉúÑ­»·¸´ÖƵij¡¾°£º

1¡¢Ö÷¿âÖ´ÐÐд²Ù×÷ºó£¬ÐÞ¸ÄÁ˵±Ç°¿âµÄ server-id¡£ÒòΪÐÞ¸ÄÁËserver-id£¬365betÌåÓýÔÚÏßÖ÷¿âÔÚÊܵ½´Ó¿â·¢ËÍ»ØÀ´µÄÈÕÖ¾ºó»¹»á¼ÌÐøÖ´ÐУ¬Ö´ÐÐÍêºó»¹»áÖØ¸´·¢¸ø´Ó¿â£¬Ôì³ÉÑ­»·¡£

½â¾ö£ºÕâÖÖÖ»ÄÜÌáǰ¹æ¶¨¿âµÄ server-id ÔÚÔËÐÐʱ²»ÄÜÐ޸ġ£

2¡¢Èý½ÚµãÖÐij¸ö½ÚµãÖ´ÐÐд²Ù×÷ºó½«Ð´²Ù×÷´«¸øÆäËûÁ½¸ö½ÚµãºóÁíÍâÁ½¸ö½Úµã·¢ÉúÁËÑ­»·¸´ÖÆ¡£

½â¾ö£ºÏÈÍ£Ö¹ÈÕÖ¾µÄ·¢ËÍ£¬Ò»¶Îʱ¼äºóÔٸĻØÀ´¡£

stop slave£»
CHANGE MASTER TO IGNORE_SERVER_IDS=(server_id_of_B);
start slave; 

 

Ö÷´ÓÇл»

Ö÷´ÓÇл»Ö¸µÄ¾ÍÊÇÖ÷¿âÓ뱸¿âÉí·ÝµÄÇл»¡£

Çл»²ßÂÔ

¿É¿¿ÐÔÓÅÏȲßÂÔ£¨ÓÅÏÈ£©

¿É¿¿ÐÔÓÅÏȲßÂÔÊǽ«Êý¾ÝµÄ¿É¿¿ÐÔÉèΪÓÅÏȽøÐÐÇл»µÄ²ßÂÔ¡£ÆäºËÐľÍÊÇÏȹرÕÖ÷¿âA¶ÔдÇëÇóµÄ´¦Àí£¬È»ºóµÈ´ý±¸¿âµÄÊý¾ÝÑÓ³Ù±äΪ0£¬Ò²¾ÍÊDZ¸¿âB¶ÁÈ¡Íê´ÓÖ÷¿âA´«À´µÄËùÓвÙ×÷ÈÕÖ¾ÇÒÈ«²¿ÂäÅÌ¡£ÕâʱÔÙ½«±¸¿âBÉèΪеÄÖ÷¿âB¡£

1¡¢Åжϱ¸¿â B ÏÖÔÚµÄ seconds_behind_master£¨Í¨¹ý show slave status ²é¿´£©£¬Èç¹ûСÓÚij¸öÖµ£¨±ÈÈç 5 Ã룩¼ÌÐøÏÂÒ»²½£¬·ñÔò³ÖÐøÖØÊÔÕâÒ»²½£»
2¡¢°ÑÖ÷¿â A ¸Ä³ÉÖ»¶Á״̬£¬¼´°Ñ readonly ÉèÖÃΪ true£»
3¡¢Åжϱ¸¿â B µÄ seconds_behind_master µÄÖµ£¬Ö±µ½Õâ¸öÖµ±ä³É 0 Ϊֹ£»£¨×îºÄʱ£©
4¡¢°Ñ±¸¿â B ¸Ä³É¿É¶Áд״̬£¬Ò²¾ÍÊÇ°Ñ readonly ÉèÖÃΪ false£»
5¡¢°ÑÒµÎñÇëÇóÇе½±¸¿â B¡£

 

ÒòΪÊǿɿ¿ÐÔÓÅÏÈ£¬365betÌåÓýÔÚÏßÓÃÕâÖÖ·½Ê½Çл»ºó¶ÁÈ¡µÄÊý¾ÝÊÇ¿ÉÒÔ±£Ö¤×¼È·ÐԵġ£È±µãÊÇÒòΪÔÚ¿ªÊ¼ÐèÒªµÈ´ý±¸¿âBÓëÖ÷¿âAµÄÑÓ³Ù±äΪ0ºó B¿â²Å¿ÉÒÔÉèΪÖ÷¿â£¬¶øÔÚÕâµÈ´ýµÄ¹ý³ÌÖÐǰÀ´µÄдÇëÇóÊÇÎÞ·¨±»´¦ÀíµÄ£¬È«²¿»á±»×èÈû£¬Èç¹û²¢·¢µÄд²Ù×÷ºÜ¶à£¬ÄÇô¾Í»áºÜÓ°ÏìϵͳµÄÏìÓ¦ÐÔÄÜ¡£

 

¿ÉÓÃÐÔÓÅÏȲßÂÔ

¿ÉÓÃÐÔÓÅÏȲßÂÔÊǽ«ÉÏÃæ¿É¿¿ÐÔÓÅÏȲßÂÔ²½ÖèÀïµÄ4,5Ìáǰµ½×ʼִÐУ¬ÕâÑù¾Í²»»á³öÏÖд²Ù×÷±»×èÈûµÄÇé¿öÁË£¬±£Ö¤ÁË¿ÉÓÃÐÔ¡£µ«ÊÇÕâÑù´øÀ´µÄȱµãÊǺÜÑÏÖØµÄ¡£¿ÉÓÃÐÔÓÅÏȲßÂÔÖ´Ðйý³Ì»á¸ù¾Ý binlog ¸ñʽµÄ²»Í¬ÓÐËù²»Í¬¡£

1¡¢mixed ¸ñʽ

Ö÷¼üÊÇ×ÔÔöµÄ¡£Ö´Ðйý³Ì£º

1¡¢²½Öè 2 ÖУ¬Ö÷¿â A Ö´ÐÐÍê insert Óï¾ä£¬²åÈëÁËÒ»ÐÐÊý¾Ý£¨4,4£©£¬Ö®ºó¿ªÊ¼½øÐÐÖ÷±¸Çл»¡£
2¡¢²½Öè 3 ÖУ¬ÓÉÓÚÖ÷±¸Ö®¼äÓÐ 5 ÃëµÄÑÓ³Ù£¬365betÌåÓýÔÚÏß±¸¿â B »¹Ã»À´µÃ¼°Ó¦Óá°²åÈë c=4¡±Õâ¸öÖÐתÈÕÖ¾£¬¾Í¿ªÊ¼½ÓÊÕ¿Í»§¶Ë¡°²åÈë c=5¡±µÄÃüÁî¡£
3¡¢²½Öè 4 ÖУ¬±¸¿â B ²åÈëÁËÒ»ÐÐÊý¾Ý£¨4,5£©£¬²¢ÇÒ°ÑÕâ¸ö binlog ·¢¸øÖ÷¿â A¡£
4¡¢²½Öè 5 ÖУ¬±¸¿â B Ö´ÐС°²åÈë c=4¡±Õâ¸öÖÐתÈÕÖ¾£¬²åÈëÁËÒ»ÐÐÊý¾Ý£¨5,4£©¡£¶øÖ±½ÓÔÚ±¸¿â B Ö´Ðеġ°²åÈë c=5¡±Õâ¸öÓï¾ä£¬´«µ½Ö÷¿â A£¬¾Í²åÈëÁËÒ»ÐÐÐÂÊý¾Ý£¨5,5£©¡£

×îÖÕµ¼ÖÂÖ÷´ÓÊý¾Ý²»Ò»Ö£¬Í¬Ê±ÔÚ²éѯÏàÓ¦Êý¾Ýʱ»á·µ»Ø´íÎóµÄÊý¾Ý£¬²¢ÇÒ»¹ÎÞ·¨±»·¢ÏÖ£¬ÕâÊǷdz£ÖÂÃüµÄ¡£

2¡¢Row ¸ñʽ

 

ÔÚʹÓà row ¸ñʽµÄ binlog ½øÐÐÈÕÖ¾¼Ç¼£¬ÄÇô¼Ç¼µÄÊÇÍêÕûµÄ²Ù×÷Êý¾Ý£¬365betÌåÓýÔÚÏß²»»á³öÏÖÉÏÃæ³öÏÖµÄÇé¿ö£¬²¢ÇÒÔÚ·¢ÉúÕâÖÖÒ쳣ʱ»áÅ׳öÒì³£Ìáʾ¡£

×ܽá

ÒòΪ¿ÉÓÃÐÔÓÅÏȲßÂÔºÜÈÝÒ×Ôì³ÉÊý¾Ý²»Ò»Ö£¬365betÌåÓýÔÚÏß Ò»°ãʹÓõͼÊǿɿ¿ÐÔÓÅÏȲßÂÔ£¬µ«ÊÇÒòΪ¿É¿¿ÐÔ²ßÂÔÔڵȴý±¸¿â¸ÏÉÏÖ÷¿âʱд²Ù×÷»á±»×èÈû£¬365betÌåÓýÔÚÏßÖ÷´ÓÑӳپ;ö¶¨ÁË MySQL µÄ¿ÉÓÃÐÔ¡£Ö÷´ÓÑÓ³ÙÔ½µÍ£¬Ö÷¿âÔÚÒ쳣崻úºó£¬´Ó»ú¾ÍÔ½¿ì¸ÏÉÏÖ÷¿âµÄÊý¾Ý£¬¸ü¿ì»Ö¸´¡£

 

Ö÷´Óͬ²½·½Ê½

ÕâÀïÒÔÒ»Ö÷¶à´ÓµÄ¼Ü¹¹ÎªÀý˵Ã÷¡£

¼ÙÉèÔ­±¾ A ÊÇÖ÷»ú£¬A' ºÍ A »¥ÎªÖ÷±¸¹ØÏµ£¬Ö»²»¹ý A' read-only ÉèΪ true£¬B¡¢C¡¢D¶¼ÊÇAµÄ´Ó¿â¡£ÕâʱAͻȻ崻ú£¬ÄÇôÏëÒª½« A' ÉèΪеÄÖ÷»ú£¬²¢ÇÒ½« B¡¢C¡¢D µÄ´ÓÊô¹ØÏµ±äΪ A'¡£

ͨ¹ýÈÕÖ¾µÄͬ²½Î»µã£¨´«Í³·½Ê½£©

ÔÚÉÏÃæ´î½¨Ê±ÔÚÅäÖôӿâÓëÖ÷¿âµÄ¹ØÁªÊ±Ëµµ½ÓÐÁ½ÖÖ·½Ê½£¬µÚ365ÌåÓýͶע¾ÍÊÇͨ¹ýÈÕ־λµãÀ´È·¶¨´Ó¿â¿ªÊ¼½ÓÊÕÈÕÖ¾µÄÆðʼµã£¬ÕâÖÖ·½Ê½ÔÚ³õʼÅäÖÃʱ¿ÉÒÔÖ±½Ó²é¿´²¢¸³Öµ£¬µ«ÊÇÈç¹ûÖмäÖ÷»úå´»ú»òÕßÖ÷¶¯Çл»Ê±¾Í±È½ÏÂé·³ÁË¡£365betÌåÓýÔÚÏß´ËʱÐèÒª×öµÄÊÇ£º

1¡¢µÈ´ýÐÂÖ÷¿â A¡¯°ÑÖÐתÈÕÖ¾£¨relay log£©È«²¿Í¬²½Íê³É£»

2¡¢ÔÚ A¡¯ÉÏÖ´ÐÐ show master status ÃüÁµÃµ½µ±Ç° A¡¯ÉÏ×îÐ嵀 File ºÍ Position£»

3¡¢È¡Ô­Ö÷¿â A ¹ÊÕϵÄʱ¿Ì T£»

4¡¢Óà mysqlbinlog ¹¤¾ß½âÎö A¡¯µÄ File£¬µÃµ½ T ʱ¿ÌµÄλµã¡£mysqlbinlog File --stop-datetime=T --start-datetime=T

µÃµ½ 123£¬½«Õâ¸öÖµ×÷ΪλµãÀ´ÉèÖÃB¡¢C¡¢D µÄ´ÓÊô¹ØÏµ¡£

λµã²»×¼È·£ºÍ¨¹ýÉÏÃæ·½·¨µÃµ½µÄÖµ²¢Ò»¶¨ÊÇ׼ȷµÄ£¬Èç¹ûÖ÷¿â A ÔÚå´»úǰ¸ÕÖ´ÐÐÁËÒ»ÌõinsertÊÂÎñ£¬²¢ÇÒ½«´ËÊÂÎñ·¢¸øÁË A¡®¡¢B£¬´«ÍêºóÁ¢¿Ìå´»ú£¬ÄÇô A'¡¢B ¶¼ÒѾ­Í¬²½ÁËÕâÒ»ÐÐ insert ÊÂÎñ£¬Õâʱ½« A' ×÷ΪÖ÷»úÆô¶¯£¬È»ºóÔÚ½« B µÄ´ÓÊô¹ØÏµ¸Ä³É A' ʱ°Ñ Position »¹Ð´³É¶ÁÈ¡µ½µÄ insert ÊÂÎñÄÇÒ»ÐУ¬ÄÇô¾Í»áÖØ¸´Ö´ÐУ¬Èç¹û¸ñʽÊÇ row µÄ»°¾Í»áÅ׳öÒì³££¨statement ¾Í»áÔì³ÉÖ÷´Ó²»Ò»Ö£©¡£

Èç¹ûÊÇÅ׳öÒì³££¬¾Í»á¶Ï¿ªÓëÖ÷¿âµÄÁ¬½Ó£¬365betÌåÓýÔÚÏßÐèÒª365betÌåÓýÔÚÏßÃÇÈ¥´¦Àí£¬»Ö¸´Á¬½Ó¡£

½â¾ö·½Ê½£º

1¡¢Å׳öÒì³£ºóÌø¹ý¡£

Ìø¹ý£ºset global sql_slave_skip_counter=1;

¿ªÆô´Ó¿â£ºstart slave;

2¡¢Ìø¹ýÖ¸¶¨µÄ´íÎ󣨲»ÍƼö£©¡£

ÉÏÃæÖØ¸´Ö´ÐÐÓöµ½µÄ´íÎóÖ÷ÒªÊÇÁ½ÖÖ£º1062£¬²åÈëÊý¾ÝʱΨһ¼ü²»Î¨Ò»£»1032£¬É¾³ýÊý¾ÝʱÕÒ²»µ½ÐС£

365betÌåÓýÔÚÏß¿ÉÒÔ½« slave_skip_errors ÉèΪ "1032¡¢1062"¡£

ͨ¹ýÕâÖÖ·½Ê½Èç¹ûºó¶Ë´«À´µÄÇëÇóÒ²»áÔì³ÉÕâÑùµÄ´íÎóÔòÒ²»á±»Ìø¹ý£¬365betÌåÓýÔÚÏß¿ÉÄÜ»áÒýÆðºó¶ËÎÞ·¨ÊÕµ½·´À¡¡£ÕâÖÖ·½Ê½Ö»ÊÊÓÃÓÚÎÞ·¨È·¶¨Í¬²½µãÇÒÈ·¶¨µ½´Ó¿â»Ö¸´Õâ¶Îʱ¼ä²»»áÓÐ 1032¡¢1062 µÄÊÂÎñ£¬²¢ÇÒÔÚÒ»¶Îʱ¼äºó»¹ÐèÒª½«Õâ¸ö²ÎÊýÐ޸ĻØÈ¥¡£

 

ͨ¹ýGTID£¨ÍƼö£©

ÊÇʲô£ºGTID ÊÇ MySQL5.6 ÒýÈëµÄ¸ÅÄ365ÌåÓýͶעµÄÊÇÈ«¾ÖÊÂÎñID£¬ÊÇÒ»¸öÊÂÎñµÄΨһ±êʶ£¬ÓÉÁ½²¿·Ö×é³É£¬¸ñʽÊÇ£º

¹Ù·½ÎĵµÊÇ£ºGTID=source_id:transaction_id
±ãÓÚÀí½â¿ÉÒÔ¿´×÷£ºGTID=server_uuid:gno
server_uuid ÊÇÒ»¸öʵÀýµÚÒ»´ÎÆô¶¯Ê±×Ô¶¯Éú³ÉµÄ£¬ÊÇÒ»¸öÈ«¾ÖΨһµÄÖµ£»
gno ÊÇÒ»¸öÕûÊý£¬³õʼֵÊÇ 1£¬Ã¿´ÎÌá½»ÊÂÎñµÄʱºò·ÖÅ䏸Õâ¸öÊÂÎñ£¬²¢¼Ó 1¡£
transaction_id ÊÇÊÂÎñid£¬µ«ÊÇÊÂÎñ»Ø¹öµÄ»°£¬Õâ¸öÖµÒ²»á×ÔÔö¡£

ʹÓãºÊý¾Ý¿âÔÚÆô¶¯Ê±¼ÓÉϲÎÊý gtid_mode=on ºÍ enforce_gtid_consistency=on À´¿ªÆô GTID£¬Èç¹ûÒªÓÀ¾ÃÓÐЧ£¬ÔÚÅäÖÃÎļþ my.cnf ÖÐÅäÖàgtid-mode=ON¡¡¡¡enforce-gtid-consistency=1 ¡£

ÔÚÖ÷»úA å´»úºó£¬¸Ä±ä´Ó¿â B¡¢C¡¢D µÄ slave ¹ØÏµÊ±Ê¹ÓÃ

CHANGE MASTER TO 
MASTER_HOST=$host_name 
MASTER_PORT=$port 
MASTER_USER=$user_name 
MASTER_PASSWORD=$password 
master_auto_position=1 

Çл»Ô­Àí£º

1¡¢½«ÊµÀýA'µÄ GTID ¼¯ºÏ¼ÇΪ set_a£¬ÊµÀýB µÄ GTID ¼¯ºÏ¼ÇΪ set_b¡£ÄÇôִÐÐÂß¼­ÈçÏ£º
2¡¢ÊµÀý B Ö¸¶¨Ö÷¿â A¡¯£¬»ùÓÚÖ÷±¸Ð­Ò齨Á¢Á¬½Ó¡£
3¡¢ÊµÀý B °Ñ set_b ·¢¸øÖ÷¿â A¡¯¡£
4¡¢ÊµÀý A¡¯Ëã³ö set_a Óë set_b µÄ²î¼¯£¬Ò²¾ÍÊÇËùÓдæÔÚÓÚ set_a£¬µ«ÊDz»´æÔÚÓÚ set_b µÄ GTID µÄ¼¯ºÏ£¬ÅÐ¶Ï A¡¯±¾µØÊÇ·ñ°üº¬ÁËÕâ¸ö²î¼¯ÐèÒªµÄËùÓÐ binlog ÊÂÎñ¡£
¡¡¡¡a. Èç¹û²»°üº¬£¬365ÌåÓýͶע A¡¯ÒѾ­°ÑʵÀý B ÐèÒªµÄ binlog ¸øÉ¾µôÁË£¬Ö±½Ó·µ»Ø´íÎó£»
¡¡¡¡b. Èç¹ûÈ·ÈÏÈ«²¿°üº¬£¬A¡¯´Ó×Ô¼ºµÄ binlog ÎļþÀïÃæ£¬ÕÒ³öµÚÒ»¸ö²»ÔÚ set_b µÄÊÂÎñ£¬·¢¸ø B£»
5¡¢Ö®ºó¾Í´ÓÕâ¸öÊÂÎñ¿ªÊ¼£¬Íùºó¶ÁÎļþ£¬°´Ë³ÐòÈ¡ binlog ·¢¸ø B È¥Ö´ÐС£

GTIDÉú³É·½Ê½£º

1¡¢gtid_next=automatic¡£

ʹÓÃĬÈÏÖµ£¬»áʹÓÃĬÈÏ·ÖÅäµÄ server_uuid:gno ·ÖÅ䏸Õâ¸öÊÂÎñ¡£
ÔڼǼ binlog ʱ»á×Ô¶¯ÏȼǼһÐÐ SET @@SESSION.GTID_NEXT=¡®server_uuid:gno¡¯;
À´365ÌåÓýͶע½«Õâ¸öÊÂÎñµÄ GTID¼ÓÈ뼯ºÏ£¬´Ó¿âÖ´ÐÐʱҲ»áÏȼì²é

2¡¢gtid_next ='Ö¸¶¨µÄÖµ'

ͨ¹ý set gtid_next = 'Ö¸¶¨µÄÖµ'£¬È»ºó¾Í»á¼ì²éGTID¼¯ºÏÊÇ·ñÒÑ´æÔÚÕâ¸öÖµ£¬Èç¹û´æÔÚÏÂÒ»¸öÊÂÎñ¾Í»áÌø¹ý¡£

Àý×Ó£º

¿âX

CREATE TABLE `t` (
`id` int(11) NOT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

insert into t values(1,1);

¼Ç¼²Ù×÷ÔÚbinlogÏà¹ØµÄ GTIDÈçÏ£º

¿ÉÒÔ¿´µ½ insert ²Ù×÷¶ÔÓ¦µÄ GTID ÊÇ '00000000-1111-0000-1111-000000000000:2'¡£´Ëʱ½«ÆäÉèΪYµÄ´Ó¿â£¬ÔÚÖ÷¿âYÉÏÖ´ÐÐ insert into t values(1,1)£¬ÕâÌõÓï¾äÔÚʵÀý Y É쵀 GTID ÊÇ ¡°aaaaaaaa-cccc-dddd-eeee-ffffffffffff:10¡±;ÄÇôÈçºÎ±ÜÃâ´Ó¿âX·¢ÉúÒì³££¿
´ð£º´Ó¿â£¨Ó¦¸Ã£©Ö´ÐÐÏÂÃæµÄ²Ù×÷

set gtid_next='aaaaaaaa-cccc-dddd-eeee-ffffffffffff:10';
begin;
commit;
set gtid_next=automatic;
start slave;

ÕâÀïÊÇÖ´ÐÐÒ»¸ö¿ÕÊÂÎñ£¬×÷ÓÃÊÇÏò´Ó¿âµÄ GTID¼¯ºÏÖÐÌí¼ÓÖ÷¿âÕâÌõ¼Ç¼µÄGTID£¬´Ó¿âÔÚºÍÖ÷¿â±È½Ïʱ¾Í»á×Ô¶¯Ìø¹ýÕâÌõ²Ù×÷µÄÊÂÎñ

Óŵ㣺½«Ô­±¾Í¨¹ýÈÕ־λµãÀ´Æ¥ÅäµÄ·½Ê½¼ò»¯ÁË£¬¶ÔʹÓÃÈËÔ±·Ç³£ÓѺá£

ÎÊÌ⣺Èç¹ûÒ»¸öеĴӿâ½ÓÉÏÖ÷¿â£¬µ«ÊÇÐèÒªµÄ binlog ÒѾ­Ã»ÁË£¬ÒªÔõô×ö£¿£¨¶ÔÓ¦ÉÏÃæÇл»Ô­Àí4.a µÄÇé¿ö£©

´ð£º1¡¢Èç¹ûÒµÎñÔÊÐíÖ÷´Ó²»Ò»ÖµÄÇé¿ö£¬ÄÇô¿ÉÒÔÔÚÖ÷¿âÉÏÏÈÖ´ÐÐ show global variables like ¡®gtid_purged¡¯£¬µÃµ½Ö÷¿âÒѾ­É¾³ýµÄ GTID ¼¯ºÏ£¬¼ÙÉèÊÇ gtid_purged1£»È»ºóÏÈÔÚ´Ó¿âÉÏÖ´ÐÐ reset master£¬ÔÙÖ´ÐÐ set global gtid_purged =¡®gtid_purged1¡¯£»×îºóÖ´ÐÐ start slave£¬¾Í»á´ÓÖ÷¿âÏÖ´æµÄ binlog ¿ªÊ¼Í¬²½¡£binlog ȱʧµÄÄÇÒ»²¿·Ö£¬Êý¾ÝÔÚ´Ó¿âÉϾͿÉÄÜ»áÓжªÊ§£¬Ôì³ÉÖ÷´Ó²»Ò»Ö¡£

2¡¢Èç¹ûÐèÒªÖ÷´ÓÊý¾ÝÒ»ÖµĻ°£¬×îºÃ»¹ÊÇͨ¹ýÖØÐ´´Ó¿âÀ´×ö¡£

3¡¢Èç¹ûÓÐÆäËûµÄ´Ó¿â±£ÁôÓÐÈ«Á¿µÄ binlog µÄ»°£¬¿ÉÒÔ°ÑеĴӿâÏȽӵ½Õâ¸ö±£ÁôÁËÈ«Á¿ binlog µÄ´Ó¿â£¬×·ÉÏÈÕÖ¾ÒÔºó£¬Èç¹ûÓÐÐèÒª£¬ÔÙ½Ó»ØÖ÷¿â¡£

4¡¢Èç¹û binlog Óб¸·ÝµÄÇé¿ö£¬¿ÉÒÔÏÈÔÚ´Ó¿âÉÏÓ¦ÓÃȱʧµÄ binlog£¬È»ºóÔÙÖ´ÐÐ start slave¡£

 

Ö÷±¸ÑÓ³Ù£¨MySQLµÄ¿ÉÓÃÐÔ£©

ÔÚÉÏÃæµÄ365betÌåÓýÔÚÏßÃÇ˵µ½Ò»°ãÏîĿʹÓõͼÊǿɿ¿ÐÔÓÅÏȲßÂÔ£¬365betÌåÓýÔÚÏß MySQL µÄ¿ÉÓÃÐԾ;ö¶¨ÓÚÖ÷´ÓÑÓ³Ù¡£

Ö÷±¸ÑÓ³ÙµÄÀ´Ô´

1¡¢±¸¿âËùÔڵĻúÆ÷ÐÔÄܱÈÖ÷¿âËùÔڵĻúÆ÷ÐÔÄܲҲ¾ÍÊÇ´Ó¿â binlog ÂäÅ̵ÄËٶȱÈÖ÷¿â binlog Ð´²Ù×÷Âý£¬Ö÷´ÓÑÓ³ÙÔ½À´Ô½¸ß¡£

2¡¢±¸¿âѹÁ¦´ó¡£½â¾ö£º1£©Ê¹ÓÃÒ»Ö÷¶à´Ó¼Ü¹¹ ¡¡¡¡2£©Í¨¹ý binlog Êä³öµ½Íⲿϵͳ£¬±ÈÈç Hadoop ÕâÀàϵͳ£¬ÈÃÍⲿϵͳÌṩͳ¼ÆÀà²éѯµÄÄÜÁ¦¡£

3¡¢´óÊÂÎñÔÚ´Ó¿âÖ´ÐеÄʱ¼ä±È½Ï³¤£¬µ¼ÖÂÊý¾Ý¸üеÄÑӳٱ䳤¡£ ½â¾ö£º1£©Èç¹û³¤ÊÂÎñµÄ²Ù×÷±È½Ï¶à£¬³¢ÊÔ½«ÊÂÎñ²ð·Ö³É¶à¸öÊÂÎñ¡¡¡¡2£©Èç¹ûÊÇ´ó±í DDL Óï¾ä£¬¿ÉÒÔʹÓÿªÔ´ÏîÄ¿ gh-ost ½øÐе÷½Ú¡£

4¡¢±¸¿âµÄ²¢Ðи´ÖÆÄÜÁ¦±È½Ï²î¡£MySQL µÄ²¢Ðи´ÖÆÄÜÁ¦ÊDZȽÏÖØÒªµÄ¡£

 

MySQLµÄ²¢Ðи´ÖÆ

»Ø¹ËһϲÙ×÷Ö´ÐÐÔÚÖ÷±¸¿âÖеÄÁ÷³Ìͼ£º

ºÚ¼ýÍ·´ú±íÖ÷±¸µÄ²¢Ðи´ÖÆÄÜÁ¦£¬Ö÷¿âÉÏ´¦ÀíµÄÊÇд²Ù×÷£¬ÒòΪ InnoDB Ö§³ÖÐÐËø£¬ÔÙ´îÅäÊý¾Ý¿âµÄ¶àỊ̈߳¬ÍÌÍÂÁ¿ºÜ¸ß¡£¶ø±¸¿âÖжÁÈ¡´«À´½âÎöÈÕÖ¾µÄ sql_thread Êǵ¥Ị̈߳¬¶øÔÚ±¸¿âÖÐÂäÅ̵Ĺý³ÌÒ²ÊǾ­ÀúÁË´Óµ¥Ï̵߳½¶àÏ̵߳Ĺý³Ì¡£ÔÚ5.6֮ǰ£¬±¸¿â½«Ö÷¿â´«À´µÄÈÕÖ¾ÂäÅ̶¼Êǵ¥Ị̈߳¬365betÌåÓýÔÚÏß¾ÍÊÇͼÖеÄϸºÚ¼ýÍ·¡£

ÔÚ5.6¿ªÊ¼£¬±¸¿âµÄÂäÅ̾ͱä³ÉÁ˶àỊ̈߳¬Ö´ÐÐͼ¾Í±ä³ÉÏÂÃæÕâÖÖ£º

coordinator ¾ÍÊÇÔ­À´µÄ sql_thread, ²»¹ýÏÖÔÚËü²»ÔÙÖ±½Ó¸üÐÂÊý¾ÝÁË£¬Ö»¸ºÔð¶ÁÈ¡ÖÐתÈÕÖ¾ºÍ·Ö·¢ÊÂÎñ¡£ÕæÕý¸üÐÂÈÕÖ¾µÄ£¬±ä³ÉÁË worker Ï̡߳£

work Ïß³ÌÊýÅäÖãºslave_parallel_workers¡£Õâ¸öÖµÉèÖÃΪ 8~16 Ö®¼ä×îºÃ£¨32 ºËÎïÀí»úµÄÇé¿ö£©£¬±Ï¾¹±¸¿â»¹ÓпÉÄÜÒªÌṩ¶Á²éѯ£¬²»ÄÜ°Ñ CPU ¶¼³Ô¹âÁË¡£

 

coordinator ·Ö·¢Âú×ãµÄ»ù±¾Ìõ¼þ£º

1¡¢¸üÐÂͬһÐеÄÊÂÎñ±ØÐë·Ö·¢¸øÍ¬Ò»¸öworkerÏß³Ì

2¡¢Í¬Ò»¸öÊÂÎñµÄËùÓвÙ×÷±ØÐë·Ö¸øÍ¬Ò»¸öworkerÏß³Ì

coordinator ·Ö·¢¹æÔò£º

1¡¢Èç¹û¸úËùÓРworker ¶¼²»³åÍ»£¬coordinator Ï߳̾ͻá°ÑÕâ¸öÊÂÎñ·ÖÅ䏸×î¿ÕÏÐµÄ woker;

2¡¢Èç¹û¸ú¶àÓÚÒ»¸ö worker ³åÍ»£¬coordinator Ï߳̾ͽøÈëµÈ´ý״̬£¬Ö±µ½ºÍÕâ¸öÊÂÎñ´æÔÚ³åÍ»¹ØÏµµÄ worker ֻʣÏ 1 ¸ö£»

3¡¢Èç¹ûÖ»¸úÒ»¸ö worker ³åÍ»£¬coordinator Ï߳̾ͻá°ÑÕâ¸öÊÂÎñ·ÖÅ䏸Õâ¸ö´æÔÚ³åÍ»¹ØÏµµÄ worker¡£

1¡¢5.6 °´¿â²¢Ðи´ÖÆ

˼·£º365ÌåÓýͶע worker Ïß³ÌÄÚ²¿Î¬»¤Ò»¸ö hash ±í£¬key ÊÇ "¿âÃû"£¬value 365ÌåÓýͶעÕâ¸öÏß³ÌÄÚÓжàÉÙÊÂÎñ¼´½«»òÕýÔÚÖ´ÐÐÕâ¸ö¿â¡£Ä³¸öÊÂÎñÔÚ±»·ÖÅäʱ£¬»á¸ù¾Ý coordinator ·Ö·¢¹æÔòÀ´½øÐС£

Àý×Ó£º¼ÙÉèÓÐÒ»¸öÊÂÎñT£¬»á²Ù×÷¿â db1¡¢db3£¬ÄÇô coordinator »áÏÈÅÐ¶Ï worker_1 Ị̈߳¬·¢ÏÖ´æÔÚ²Ù×÷ db1 µÄÊÂÎñ£¬365betÌåÓýÔÚÏß»»ÏÂÒ»¸ö£»
½ô½Ó×Å·¢ÏÖ worker_2 Ò²´æÔÚ²Ù×÷ db3 µÄÊÂÎñ£¬365betÌåÓýÔÚÏß¾Í»á½øÈë×èÈûµÈ´ý¡£Èç¹ûºóÃæ worker_2 ÖвÙ×÷ db3µÄÊÂÎñÖ´ÐÐÍê±Ï£¬value±äΪ0£¬ÄÇô coordinator ¾Í»áʶ±ðµ½£¬Ö»Ê£ worker_1 ÓëÊÂÎñ T ÓгåÍ»£¬ÄÇô¾Í½« T ·ÖÅ䏸 worker_1¡£

Óŵ㣺1£©ÔÚ·ÖÎö¹¹Ôì hash Ê±·Ç³£¿ì¡¡¡¡¡¡¡¡2£©¶Ô binlog µÄ¸ñʽûÓÐÒªÇ󣨲»»á·¢ÉúÖ÷´Ó²»Ò»Ö£©

ȱµã£º²¢·¢¶È²»¸ß£¬Èç¹û²Ù×÷¶¼¼¯ÖÐÔÚijһ¸ö¿â£¬ÄÇôִÐоͺÍʹÓõ¥Ïß³ÌÒ»Ñù¡£¡¡¡¡

 

2¡¢mariaDB ²¢Ðи´ÖƲßÂÔ

ËäÈ»²»ÊÇ MySQL µÄ²ßÂÔ£¬µ«ÊÇÒòΪËüµÄ˼Ïë¶Ô MySQL ºóÐø°æ±¾ÓÐÆôµÏ×÷Óã¬365betÌåÓýÔÚÏßÕâÀïҲ˵һÏ¡£
˼·£ºÒòΪÓÐ " ×éÌá½» " »úÖÆ£¨²»ÖªµÀ×éÌá½»¿ÉÒԲ鿴 ×éÌá½»£©£¬Î»ÓÚÒ»×éÌá½»µÄÊÂÎñÊÇ¿ÉÒÔ²¢Ðи´ÖƵġ£Ò»×éÌá½»µÄÊÂÎñÒ»¶¨²»»á´æÔÚ²Ù×÷ͬһÐмǼµÄ²Ù×÷£¬ÕâÊÇÒòΪÖ÷¿âÖ´ÐÐд²Ù×÷ʱ£¬Èç¹û´æÔÚ´¦ÀíͬһÐмǼµÄÁ½¸öÊÂÎñ£¬ÄÇôÆäÖÐÒ»¸öÒ»¶¨»á±»ÐÐËøËù×èÈû£¬" ±»×èÈû " µÄÊÂÎñÒ²¾ÍÎÞ·¨Óë " ×èÈû " ÊÂÎñһͬÌá½»ÁË¡£Ö´Ðйý³Ì¾ÍÈçÏ£º

1¡¢ÔÚÒ»×éÀïÃæÒ»ÆðÌá½»µÄÊÂÎñ£¬ÓÐÒ»¸öÏàͬµÄ commit_id£¬ÏÂÒ»×é¾ÍÊÇ commit_id+1£»
2¡¢commit_id Ö±½Óдµ½ binlog ÀïÃæ£»
3¡¢´«µ½±¸¿âÓ¦ÓõÄʱºò£¬Ïàͬ commit_id µÄÊÂÎñ·Ö·¢µ½¶à¸ö worker Ö´ÐУ»
4¡¢ÕâÒ»×éÈ«²¿Ö´ÐÐÍê³Éºó£¬coordinator ÔÙȥȡÏÂÒ»Åú¡£

ȱµã£º1£©ËäÈ»ÊÇËæ×ÅÖ÷¿âÖ´ÐÐ˳ÐòÀ´Ö´Ðе쬵«ÊÇЧÂʲ¢Ã»ÓÐÖ÷¿â¸ß¡£

Ö÷¿âÔÚǰһ×éÊÂÎñÌύдÅ̵ÄͬʱÏÂÒ»×éÊÂÎñÒѾ­ÔÚÖ´ÐÐÁË£¬¶ø±¸¿âÉÏÐèÒªÉÏÒ»×éÊÂÎñÍêÈ«ÂäÅ̺ó²Å¿ÉÒÔ¿ªÊ¼ÏÂÒ»×éÊÂÎñµÄÖ´ÐС£

Ö÷¿â£º

±¸¿â£º

2£©Èç¹ûÒ»×éÖеÄÒ»¸öÊÂÎñÊÇ´óÊÂÎñ£¬ÄÇôÆäËûÁ½¸öÊÂÎñÖ´ÐÐÍ껹ÐèÒªµÈ´ýÕâ¸öÊÂÎñÖ´ÐÐÍê²ÅÄÜ¿ªÊ¼ÏÂÒ»×éÊÂÎñµÄ¿ªÊ¼

 

4¡¢5.7 ½áºÏÁËmariaDB µÄ˼Ïë

MySQL ÔÚ5.7 °æ±¾ÈÚºÏÁË mariaDB µÄ˼Ïë²¢½øÐÐÁËһЩ¸Ä½ø¡£

˼Ï룺ģʽ·Ö³ÉÁ½ÖÖ£¬Í¨¹ý²ÎÊý slave-parallel-type ÉèÖá£

1£©ÅäÖÃΪ DATABASE¡£±£³Ö5.6 µÄ²ßÂÔ£¬°´¿âÖ´ÐÐ

2£©ÅäÖÃΪ LOGICAL_CLOCK¡£ºÍ mariaDB µÄ×éÌá½»À´Ö´ÐУ¬Ö»²»¹ý½øÐÐһЩ±ä»¯¡£ÔÚ mariaDB ÖÐÊÇÔÚÉÏÒ»×éÊÂÎñÍêÈ« commit ºó£¬Ò²¾ÍÊÇÔÚÈý²½Ìá½»ÖÐÕâÒ»×éÊÂÎñÈ«²¿µ½´ï redo log commit ½×¶Îºó²ÅÄܽøÐÐÏÂÒ»×éÊÂÎñµÄÖ´ÐУ»¶øÔÚÕâ¸ö°æ±¾ÖÐÔò½«ÏÂÒ»×éÊÂÎñÖ´ÐеÄʱ¼äÌáǰµ½ redo log prepare £¬Ö»ÒªÈ«²¿µ½´ï redo log prepare ½×¶Î¾Í¿ÉÒÔÖ´ÐÐÏÂÒ»×éÊÂÎñÁË¡£Õâ¸öÔ­ÒòÒ²ºÜ¼òµ¥£¬µ½´ï redo log prepare ½×¶Î˵Ã÷ÊÂÎñÒѾ­Ö´ÐÐÍê³É¡£

²ÎÊýÅäÖãºbinlog_group_commit_sync_delay¡¢ binlog_group_commit_sync_no_delay_count ¡£ÕâÁ½¸ö²ÎÊý×÷ÓõͼÊÇÔÚ binlog Íê³É write ºóµ½ fsync µÄ¹ý³Ì¡£·Ö±ð365ÌåÓýͶע binlog ÑÓ³Ù¶àÉÙ΢Ãëºó²Åµ÷ fsync¡¢binlog ÀÛ»ý¶àÉÙ´365betÌåÓýÔÚÏßÔºó²Åµ÷Óà fsync¡£Í¨¹ýÕâÁ½¸ö²ÎÊý¿ÉÒÔ½«¸ü¶àµÄÊÂÎñÌí¼Óµ½Ò»¸ö×éÖУ¬Ê¹±¸¿âµÄ²¢·¢¶È¸ü¸ß¡£

 

5¡¢5.7.22 Ìá³öÁ˰´Ðв¢Ðи´ÖÆ

ÔÚÕâ¸ö°æ±¾ÖÐÅׯúÁ˰´¿â²¢ÐеÄ˼Ïë¡£²¢ÇÒÒýÈëÁ˰´Ðв¢ÐС£

˼Ï룺·ÖΪÈýÖÖ¡£Í¨¹ý²ÎÊý binlog-transaction-dependency-tracking ÅäÖá£

1£©COMMIT_ORDER¡£»¹ÊÇÉϸö°æ±¾Öеİ´ÊÂÎñ×éÀ´Ö´ÐС£

2£©WRITESET£¨ÖØÒª£©¡£°´Ðв¢Ðи´ÖÆ¡£¶ÔÓÚÊÂÎñÉæ¼°¸üеÄÿһÐУ¬¼ÆËãÕâÒ»ÐеĠhash Öµ£¬×é³É¼¯ºÏ writeset¡£Èç¹ûÁ½¸öÊÂÎñûÓвÙ×÷ÏàͬµÄÐУ¬ÄÇôËûÃǾͿÉÒÔ²¢ÐÐÖ´ÐС£ hash ÖµµÄ¼ÆËãÊÇ" ¿âÃû+±íÃû+Ë÷ÒýÃû+Öµ "£¬ÕâÀïµÄË÷ÒýÖ¸µÄÊÇËùÓеÄΨһË÷Òý£¬Öµ365ÌåÓýͶעË÷Òý¶ÔÓ¦µÄÖµ¡£

ÓÅÊÆ£º

¡¡¡¡¢ñ¡¢writeset ÊÇÔÚÖ÷¿âÉú³ÉºóÖ±½ÓдÈëµ½ binlog ÀïÃæµÄ£¬ÕâÑùÔÚ±¸¿âÖ´ÐеÄʱºò£¬²»ÐèÒª½âÎö binlog ÄÚÈÝ£¨event ÀïµÄÐÐÊý¾Ý£©£¬½ÚÊ¡ÁËºÜ¶à¼ÆËãÁ¿£»

¡¡¡¡¢ò¡¢²»ÐèÒª°ÑÕû¸öÊÂÎñµÄ binlog ¶¼É¨Ò»±é²ÅÄܾö¶¨·Ö·¢µ½Äĸö worker£¬¸üÊ¡Äڴ棻

¡¡¡¡¢ó¡¢ÓÉÓÚ±¸¿âµÄ·Ö·¢²ßÂÔ²»ÒÀÀµÓÚ binlog ÄÚÈÝ£¬365betÌåÓýÔÚÏß binlog ÊÇ statement ¸ñʽҲÊÇ¿ÉÒԵġ£

²»×㣺¶ÔÓÚ¡°±íÉÏûÖ÷¼ü¡±ºÍ¡°Íâ¼üÔ¼Êø¡±µÄ³¡¾°£¬WRITESET ²ßÂÔÒ²ÊÇû·¨²¢Ðеģ¬Ò²»áÔÝʱÍË»¯Îªµ¥Ïß³ÌÄ£ÐÍ¡£

3£©WRITESET_SESSION¡£ÔÚ°´Ðв¢ÐеĻù´¡ÉÏ£¬¶ÔÖ÷¿âͬһ¸öÏß³ÌÏȺóÊÂÎñµÄÖ´ÐÐ˳Ðò£¬ÔÚ±¸¿âÖ´ÐÐʱҲÐèÒª±£Ö¤¡£

ÎÊÌ⣺µ¥Ïß³ÌÌí¼ÓºÜ¶à¼Ç¼£¬ÔÚ´Ó¿â×·Ö÷¿âµÄ¹ý³ÌÖУ¬binlog-transaction-dependency-tracking Ó¦¸ÃÑ¡ÓÃʲô²ÎÊý£¿

´ð£ºÓÉÓÚÖ÷¿âÊǵ¥Ïß³ÌѹÁ¦Ä£Ê½£¬365betÌåÓýÔÚÏß365ÌåÓýͶעÊÂÎñµÄ commit_id ¶¼²»Í¬£¬ÄÇôÉèÖÃΪ COMMIT_ORDER ģʽµÄ»°£¬´Ó¿âÒ²Ö»Äܵ¥Ïß³ÌÖ´ÐС£Í¬ÑùµØ£¬ÓÉÓÚ WRITESET_SESSION ģʽҪÇóÔÚ±¸¿âÓ¦ÓÃÈÕÖ¾µÄʱºò£¬Í¬Ò»¸öÏ̵߳ÄÈÕÖ¾±ØÐëÓëÖ÷¿âÉÏÖ´ÐеÄÏȺó˳ÐòÏàͬ£¬Ò²»áµ¼ÖÂÖ÷¿âµ¥Ïß³ÌѹÁ¦Ä£Ê½ÏÂÍË»¯³Éµ¥Ï̸߳´ÖÆ¡£365betÌåÓýÔÚÏߣ¬Ó¦¸Ã½« binlog-transaction-dependency-tracking ÉèÖÃΪ WRITESET¡£

 

Ö÷±¸ÑÓ³ÙÎÊÌâ

Ô­Òò£ºÒòΪ seconds_behind_master ÊDZ¸¿âÒÔµ±Ç°ÏµÍ³Ê±¼ä¼õÈ¥Ö´ÐÐÊÂÎñ¿ªÊ¼Ð´Èëʱ¼äµÃ³öµÄ¡£

1¡¢Ö÷¿âÖ´ÐÐÁË´óÊÂÎñ£¨´ó±íDDL¡¢Ò»¸öÊÂÎñ²Ù×÷ºÜ¶àÐУ©
2¡¢±¸¿âÆðÁËÒ»¸ö³¤ÊÂÎñ£¬Èç

begin; 
select * from t limit 1;

È»ºó¾Í²»¶¯ÁË£¬ÕâʱºòÖ÷¿âÖ´ÐÐÁËÒ»¸öDDL²Ù×÷£¬Ìí¼ÓÒ»¸ö×ֶΣ¬ÄÇô¾Í»á±»¶Âס¡£

 

½â¾ö¹ýÆÚ¶Á

" ¹ýÆÚ¶Á " Ö¸µÄÊÇÔÚÖ÷¿â²Ù×÷ijÐмǼºó£¬Á¢¿Ì½øÐвéѯ£¬ÄÇô²éѯ»á±»´Ó¿âËùÖ´ÐУ¬ÕâÑùÖ÷¿âÉ쵀 binlog »¹Î´¸üе½´Ó¿âÉÏ£¬365betÌåÓýÔÚÏß¶ÁÇëÇ󷵻صĽá¹û»¹ÊÇÐÞ¸ÄǰµÄ¼Ç¼¡£ÏÂÃæÊǼ¸ÖÖ½â¾ö " ¹ýÆÚ¶Á " µÄ·½Ê½¡£

1¡¢Ç¿ÖÆ×ßÖ÷¿â£¨Ê¹ÓÃ×î¶à£¬×¼È·£©

˼Ï룺¶ÔÓÚ±ØÐëÒªÄõ½×îÐÂÖµµÄÇëÇó£¬Ç¿ÖÆ·¢Ë͸øÖ÷¿âÖ´ÐУ»¶ÔÓÚ¿ÉÒÔ¶Áµ½¾ÉÊý¾ÝµÄÇëÇ󣬷¢Ë͸ø´Ó¿âÖ´ÐС£

×ܽ᣺ʵÏÖ¼òµ¥£¬¶ÔÓÚ±ØÐëÄÃ×îÐÂÖµµÄÇëÇóµÄÊýÁ¿²»¶àµÄ³¡¾°¿ÉÒÔʹÓᣵ«ÊÇÔÚÊýÁ¿¶àµÄ³¡¾°Ê¹ÓÃÕâÖÖ·½Ê½»áʹÖ÷¿âµÄѹÁ¦±ä´ó£¬Ñݱä³Éµ¥¿âģʽ¡£

 

2¡¢Sleep£¨²»×¼È·£©

˼Ï룺ÔÚ´Ó¿âÖ´ÐÐǰ£¬ÏÈ sleep Ò»Ï£¬ÀàËÆÖ´ÐÐÒ»Ìõ sleep(1) µÄÃüÁî¡£ÀàËÆµÄÒµÎñʵÏÖ±ÈÈçÔÚÌÔ±¦¹ºÂò³É¹¦ºó²¢²»ÊÇÖ±½ÓÌø×ªµ½¶©µ¥Ò³Ã棬¶øÊÇÌø×ªµ½ " ¹ºÂò³É¹¦ " µÄÌáÊ¾Ò³Ãæ£¬Èç¹ûÏë²é¿´Õâ¸ö¶©µ¥£¬ÐèÒªµã»÷²é¿´¶©µ¥£¬Õâ¾Í¸øÁË´Ó¿âÀ´Í¬²½Ö÷¿âµÄʱ¼ä¡£

²»×㣺1£©ÒòΪ×Ü»áÑÓ³Ù£¬Èç¹ûÖ÷´ÓÑÓ³ÙÖ»ÓÐ0.5ÃëÒ²ÐèÒª¾­¹ýÕâ¸öʱ¼ä²ÅÄܵõ½Êý¾Ý¡£¡¡¡¡2£©Èç¹ûÊÇ´óÊÂÎñ£¬Ó¦Óõ½´Ó¿âËùÒªµÄʱ¼ä±È½Ï³¤£¬ÄÇô»¹ÊǻᷢÉú " ¹ýÆÚ¶Á "¡£

 

3¡¢Ð´ÇëÇóÔÚÖ÷´ÓÎÞÑÓ³ÙºóÔÙ·µ»Ø£¨²»Ì«×¼È·£©

˼Ïë

ʵÏÖÖ÷±¸ÎÞÑÓ³ÙÖ÷ÒªÓÐËÄÖÖ·½°¸¡£

1£©²é¿´ seconds_behind_master ÊÇ·ñÒѾ­µÈÓÚ0¡£seconds_behind_master µ¥Î»ÊÇÃ룬¾«¶È²»¹»£¬365betÌåÓýÔÚÏßÓÃÓÚ¼ìÑé׼ȷÐÔ²»ÊǺܸߡ£

2£©¶Ô±Èλµã£¬±È½Ï binlog ÈÕÖ¾¶ÁÈ¡µÄλµã¡£Ïà±ÈÓÚµÚ365ÌåÓýͶע׼ȷһЩ¡£Í¨¹ý show slave status ²é¿´µ±Ç°´Ó¿âµÄÏà¹Ø²ÎÊý£»Í¨¹ý show master status ²é¿´Ö÷»úµÄÏà¹Ø²ÎÊý¡£

¡¡¡¡Master_Log_File ºÍ Read_Master_Log_Pos£¬365ÌåÓýͶעµÄÊǶÁµ½µÄÖ÷¿âµÄ×îÐÂλµã£»
¡¡¡¡Relay_Master_Log_File ºÍ Exec_Master_Log_Pos£¬365ÌåÓýͶעµÄÊDZ¸¿âÖ´ÐеÄ×îÐÂλµã¡£
¡¡¡¡Èç¹û Master_Log_File ºÍ Relay_Master_Log_File¡¢Read_Master_Log_Pos ºÍ Exec_Master_Log_Pos ÕâÁ½×éÖµÍêÈ«Ïàͬ£¬¾Í365ÌåÓýͶע½ÓÊÕµ½µÄÈÕÖ¾ÒѾ­Í¬²½Íê³É¡£

3£©¶Ô±Èµ±Ç°±¸¿âºÍËùÓб¸¿âÒѾ­Ö´ÐÐµÄ GTID ¼¯ºÏ¡£Ïà±ÈÓÚµÚ365ÌåÓýͶע׼ȷһЩ¡£

¡¡¡¡Auto_Position=1 £¬365ÌåÓýͶעÕâ¶ÔÖ÷±¸¹ØÏµÊ¹ÓÃÁË GTID ЭÒé¡£
¡¡¡¡Retrieved_Gtid_Set£¬ÊDZ¸¿âÊÕµ½µÄËùÓÐÈÕÖ¾µÄ GTID ¼¯ºÏ£»
¡¡¡¡Executed_Gtid_Set£¬ÊDZ¸¿âËùÓÐÒѾ­Ö´ÐÐÍê³ÉµÄ GTID ¼¯ºÏ¡£
¡¡¡¡Èç¹ûÕâÁ½¸ö¼¯ºÏÏàͬ£¬Ò²365ÌåÓýͶע±¸¿â½ÓÊÕµ½µÄÈÕÖ¾¶¼ÒѾ­Í¬²½Íê³É¡£

ÎÊÌ⣺2£©¡¢3£©ÎªÊ²Ã´»á²»×¼È·£¿

´ð£ºÒ»¸öÊÂÎñµÄÖ´ÐÐ˳ÐòÈçÏ£º¡¡¡¡

¡¡¡¡¢ñ¡¢Ö÷¿âÖ´ÐÐÍê³É£¬Ð´Èë binlog£¬²¢·´À¡¸ø¿Í»§¶Ë£»¡¡¡¡
¡¡¡¡¢ò¡¢binlog ±»´ÓÖ÷¿â·¢Ë͸ø±¸¿â£¬±¸¿âÊÕµ½£»
¡¡¡¡¢ó¡¢ÔÚ±¸¿âÖ´ÐÐ binlog Íê³É¡£

Èç¹ûÔÚ1¡¢2Ö®¼äÅжϾͻáÒÔΪÊÇ×îеģ¬Ã»ÓÐÎÊÌ⣬ֱ½Ó½øÐвÙ×÷£¬µ¼Ö " ¹ýÆÚ¶Á "¡£

4£©Ê¹Óàsemi-sync£¨´îÅä2¡¢3£©¡£semi-sync Êǰëͬ²½¸´ÖÆ£¨emi-sync replication£©£¬¶ø2¡¢3 ÊÇÒì²½¸´ÖÆ£¬Ò²¾ÍÊÇÔÚÖ÷¿âдÍê binlog ºó¾Í»á·¢ËÍÏûÏ¢¸ø¿Í»§¶Ë¡£¶øÖ´Ðйý³ÌÈçÏ£º

¡¡¡¡¢ñ¡¢ÊÂÎñÌá½»µÄʱºò£¬Ö÷¿â°Ñ binlog ·¢¸ø´Ó¿â£»
¡¡¡¡¢ò¡¢´Ó¿âÊÕµ½ binlog ÒԺ󣬷¢»Ø¸øÖ÷¿âÒ»¸ö ack£¬365ÌåÓýͶעÊÕµ½ÁË£»
¡¡¡¡¢ó¡¢Ö÷¿âÊÕµ½Õâ¸ö ack ÒԺ󣬲ÅÄܸø¿Í»§¶Ë·µ»Ø¡°ÊÂÎñÍê³É¡±µÄÈ·ÈÏ¡£

ͨ¹ý semi-sync ¿ÉÒÔ½â¾ö2¡¢3³öÏÖµÄÎÊÌ⣬ͬʱÔÚÖ÷¿âÒì³£¶ÏµçʱҲ¿ÉÒÔ±ÜÃâÖ÷¿âÔÚдÍê binlog »¹Î´½« binlog ·¢Ë͸ø´Ó¿â¾Íå´»ú£¬µ¼Ö´ӿâδÊÕµ½ binlog µ¼ÖÂÖ÷¿âÖØÆôºóÖ÷´Ó²»Ò»Ö¡£

ȱµã

1£©Ö»ÊÊÓÃÓÚÒ»Ö÷Ò»´Ó¡£ÒòΪÕâ¸öģʽµÄÖ´Ðйý³ÌÊÇÖ÷¿âÊÕµ½ ACK È·ÈϺóÁ¢¿Ì¾Í»á·´À¡¸øÇëÇó·¢ËÍ·½ÐÅÏ¢£¬Èç¹ûÊÇÒ»Ö÷¶à´Ó£¬ÄÇôÈκ365betÌåÓýÔÚÏ߻̨´Ó»ú·µ»ØµÄ ACK ¶¼»áʹÖ÷¿âÁ¢¿Ì·µ»Ø·´À¡ÐÅÏ¢¸øÇëÇó£¬ÕâÑùÈç¹ûÔٴη¢ËͶÁ¸ÃÊý¾ÝµÄÇëÇ󣬲¢ÇÒÇëÇó±»·ÖÅäµ½»¹Î´Í¬²½µÄ´Ó¿â£¬ÄÇôÓֻᷢÉú "¹ýÆÚ¶Á"¡£

2£©ÔÚ³ÖÐøÑÓ³ÙµÄÇé¿öÏ£¬¿ÉÄܳöÏÖ¹ý¶ÈµÈ´ýµÄÎÊÌâ¡£

 Èç¹û°´2,3Åжϣ¬Ö±µ½×´Ì¬4¶¼ÎÞ·¨Ö´ÐжÁ²Ù×÷£¬¶øÊµ¼ÊÉÏÔÚ״̬2¾Í¿ÉÒÔ¶ÁÁË¡£

 

4¡¢ÏÈÔÚÒ»¶Îʱ¼äÄÚ³¢ÊÔÔÚ´Ó¿âÉÏÖ´ÐУ¬Èç¹ûûÓÐͬ²½ÔÙÔÚÖ÷¿âÉÏÖ´ÐУ¨×¼È·£©

ÕâÖÖ·½Ê½ÓÐÁ½ÖÖʵÏÖ·½°¸¡£

1£©µÈÖ÷¿âλµã·½°¸

Ô­Àí£º

ʵÏÖÖ÷Ҫͨ¹ýÃüÁselect master_pos_wait(file, pos, timeout);  ÌØµãÈçÏ£º

¢ñ¡¢ËüÊÇÔÚ´Ó¿âÖ´Ðеģ»

¢ò¡¢²ÎÊý file ºÍ pos Ö¸µÄÊÇÖ÷¿âÉϵÄÎļþÃûºÍλÖã»

¢ó¡¢timeout ¿ÉÑ¡£¬ÉèÖÃΪÕýÕûÊý N 365ÌåÓýͶעÕâ¸öº¯Êý×î¶àµÈ´ý N Ãë¡£

¢ô£º·µ»ØÖµ£ºÒ»¡¢Õý³£·µ»ØµÄ½á¹ûÊÇÒ»¸öÕýÕûÊý M£¬365ÌåÓýͶע´ÓÃüÁʼִÐУ¬µ½Ó¦ÓÃÍê file ºÍ pos 365ÌåÓýͶעµÄ binlog λÖã¬Ö´ÐÐÁ˶àÉÙÊÂÎñ¡£

¡¡¡¡¡¡¡¡¡¡¡¡¶þ¡¢Èç¹ûÖ´ÐÐÆÚ¼ä£¬±¸¿âͬ²½Ï̷߳¢ÉúÒì³££¬Ôò·µ»Ø NULL£»
¡¡¡¡¡¡¡¡¡¡¡¡Èý¡¢Èç¹ûµÈ´ý³¬¹ý N Ã룬¾Í·µ»Ø -1£»
¡¡¡¡¡¡¡¡¡¡¡¡ËÄ¡¢Èç¹û¸Õ¿ªÊ¼Ö´ÐеÄʱºò£¬¾Í·¢ÏÖÒѾ­Ö´ÐйýÕâ¸öλÖÃÁË£¬Ôò·µ»Ø 0¡£

Ö´ÐÐÂß¼­:

¼ÙÉè¿Í»§¶Ë½ÓÊÕµÄÑÓ³ÙΪ1Ã룬ÄÇôִÐÐÂß¼­¾ÍÈçÏ£º

¢ñ¡¢trx1 ÊÂÎñ¸üÐÂÍê³Éºó£¬ÂíÉÏÖ´ÐÐ show master status µÃµ½µ±Ç°Ö÷¿âÖ´Ðе½µÄ File ºÍ Position£»
¢ò¡¢Ñ¡¶¨Ò»¸ö´Ó¿âÖ´ÐвéѯÓï¾ä£»
¢ó¡¢ÔÚ´Ó¿âÉÏÖ´ÐÐ select master_pos_wait(File, Position, 1)£»
¢ô¡¢Èç¹û·µ»ØÖµÊÇ >=0 µÄÕýÕûÊý£¬ÔòÔÚÕâ¸ö´Ó¿âÖ´ÐвéѯÓï¾ä£»
¢õ¡¢·ñÔò£¬µ½Ö÷¿âÖ´ÐвéѯÓï¾ä¡£

 

2£©GTID ·½°¸

Ô­Àí£º

Ö÷Ҫͨ¹ýÃüÁ select wait_for_executed_gtid_set(gtid_set, timeout); 

Óï¾ä×÷Ó㺵ȴý£¬Ö±µ½Õâ¸ö¿âÖ´ÐеÄÊÂÎñÖаüº¬´«ÈëµÄ gtid_set£¬·µ»Ø0£»³¬Ê±·µ»Ø1¡£

Ö´ÐÐÂß¼­:

»¹ÊǼÙÉè¿Í»§¶Ë½ÓÊÕµÄÑÓ³ÙΪ1Ã룬ִÐÐÂß¼­ÈçÏ£º

¢ñ¡¢trx1 ÊÂÎñ¸üÐÂÍê³Éºó£¬´Ó·µ»Ø°üÖ±½Ó»ñÈ¡Õâ¸öÊÂÎñµÄ GTID£¬¼ÇΪ gtid1£»
¢ò¡¢Ñ¡¶¨Ò»¸ö´Ó¿âÖ´ÐвéѯÓï¾ä£»
¢ó¡¢ÔÚ´Ó¿âÉÏÖ´ÐÐ select wait_for_executed_gtid_set(gtid1, 1)£»
¢ô¡¢Èç¹û·µ»ØÖµÊÇ 0£¬ÔòÔÚÕâ¸ö´Ó¿âÖ´ÐвéѯÓï¾ä£»
¢õ¡¢·ñÔò£¬µ½Ö÷¿âÖ´ÐвéѯÓï¾ä¡£

ÔÚÉÏÃæµÄµÚ¢ñ²½ÖУ¬trx1 ÊÂÎñ¸üÐÂÍê³Éºó£¬´Ó·µ»Ø°üÖ±½Ó»ñÈ¡Õâ¸öÊÂÎñµÄ GTID¡£365betÌåÓýÔÚÏßÃÇÖ»ÐèÒª½«²ÎÊý session_track_gtids ÉèÖÃΪ OWN_GTID£¬È»ºóͨ¹ý API ½Ó¿Ú mysql_session_track_get_first ´Ó·µ»Ø°ü½âÎö³ö GTID µÄÖµ¼´¿É¡£

ÎÊÌ⣺¼ÙÉèÄãµÄϵͳ²ÉÓÃÁË365betÌåÓýÔÚÏßÃÇÎÄÖнéÉܵÄ×îºóÒ»¸ö·½°¸£¬Ò²¾ÍÊÇµÈ GTID µÄ·½°¸£¬ÏÖÔÚÄãÒª¶ÔÖ÷¿âµÄÒ»ÕÅ´ó±í×ö DDL£¬¿ÉÄÜ»á³öÏÖʲôÇé¿öÄØ£¿ÎªÁ˱ÜÃâÕâÖÖÇé¿ö£¬Äã»áÔõô×öÄØ£¿

´ð£º¼ÙÉ裬ÕâÌõÓï¾äÔÚÖ÷¿âÉÏÒªÖ´ÐÐ 10 ·ÖÖÓ£¬Ìá½»ºó´«µ½±¸¿â¾ÍÒª 10 ·ÖÖÓ£¨µäÐ͵ĴóÊÂÎñ£©¡£ÄÇô£¬ÔÚÖ÷¿â DDL Ö®ºóÔÙÌá½»µÄÊÂÎñµÄ GTID£¬È¥±¸¿â²éµÄʱºò£¬¾Í»áµÈ 10 ·ÖÖӲųöÏÖ¡£ÕâÑù£¬Õâ¸ö¶Áд·ÖÀë»úÖÆÔÚÕâ 10 ·ÖÖÓÖ®ÄÚ¶¼»á³¬Ê±£¬È»ºó×ßÖ÷¿â¡£
ÕâÖÖÔ¤ÆÚÄڵIJÙ×÷£¬Ó¦¸ÃÔÚÒµÎñµÍ·åÆÚµÄʱºò£¬È·±£Ö÷¿âÄܹ»Ö§³ÖËùÓÐÒµÎñ²éѯ£¬È»ºó°Ñ¶ÁÇëÇó¶¼Çе½Ö÷¿â£¬ÔÙÔÚÖ÷¿âÉÏ×ö DDL¡£µÈ±¸¿âÑÓ³Ù×·ÉÏÒÔºó£¬ÔٰѶÁÇëÇóÇлر¸¿â¡£
Õâ¸ö˼¿¼ÌâÖ÷ÒªÊÇÏë¹Ø×¢´óÊÂÎñ¶ÔµÈλµã·½°¸µÄÓ°Ïì¡£µ±È»ÁË£¬Ê¹Óà gh-ost ·½°¸À´½â¾öÕâ¸öÎÊÌâÒ²ÊDz»´íµÄÑ¡Ôñ¡£

Óŵ㣺Ïà±ÈÓÚʹÓÃλµãµÄ·½°¸£¬¼õÉÙÁËÒ»´ÎÔÚÖ÷¿âÉϵIJéѯ²Ù×÷¡£

ȱµã£ºÊ¹ÓÃǰÌáÊÇ¿ªÆôÁË GTID£¬Ê¹Ó󡾰ûÓÐʹÓÃλµã¹ã·º¡£

 

posted on 2021-01-13 21:59  ÃÈÐÂJ  ÔĶÁ(173)  ÆÀÂÛ(0±à¼­  ÊÕ²Ø