MySQLÖ÷´Ó·þÎñÆ÷£¨Replication£©µÄÉèÖÃ
(2007-05-21 16:03)
·ÖÀࣺ ¼¼Êõ--Oracle&MySQL Àà
MySQLÖ÷´Ó·þÎñÆ÷£¨Replication£©µÄÉèÖÃ
×÷ÕߣºÀÏÍõ
×÷ÕߣºÀÏÍõ
Ò»°ãʹÓÃMySQLµÄʱºò£¬Èç¹ûÊý¾ÝÁ¿²»´ó£¬ÎÒÃǶ¼Ê¹ÓÃһ̨MySQL·þÎñÆ÷£¬±¸·ÝµÄʱºòʹÓÃmysqldump¹¤¾ß¾Í¿ÉÒÔÁË£¬µ«ÊÇËæ×ÅÒµÎñ²»¶Ï·¢Õ¹£¬ÎÊÌâ³öÏÖÁË£º
Ê×ÏÈ£ºÊý¾ÝÁ¿ÍùÍùÖ±ÏßÉÏÉý£¬µ¥¶Àһ̨Êý¾Ý¿â·þÎñÆ÷¿ªÊ¼³öÏÖÐÔÄܵį¿¾±£¬Êý¾Ý·ÃÎÊÔ½À´Ô½Âý¡£
Æä´Î£º±¸·ÝÒ²±äµÃÀ§ÄÑÁË£¬ÒòΪmysqldumpÊǵ¼³öÒ»·ÝÎı¾Îļþ£¬¶øÊý¾ÝÁ¿Ìرð´óµÄʱºò£¬ÕâÑùµÄ±¸·ÝÍùÍùÐè ÒªºÜ³¤Ê±¼ä£¬¿ÉÄÜÓÐÈË»á˵£¬ÎÒÃÇ¿ÉÒÔÖ±½Óͨ¹ý¿½±´Êý¾ÝÎļþÀ´±¸·ÝÊý¾Ý¿â£¬ÕâÑùºÜ·½±ã£¬¿ì½Ý£¬²»´í£¬ÕâÑùÊDZÈmysqldump·½±ã¿ì½Ý£¬µ«ÊÇ£¬Ö±½Ó¿½±´Êý ¾ÝÎļþ±¸·ÝµÄ·½Ê½ÒªÇóÎÒÃDZØÐëÏȹرÕmysql·þÎñ£¬È»ºóÔÙ¿½±´Êý¾ÝÎļþ£¬·ñÔò£¬Ä㿽±´µÄÎļþºÜ¿ÉÄÜÊÇ»µµÄ¡£¶øÊµ¼ÊÔËÐеÄmysql·þÎñÍùÍùÒªÇóÔÚÈκÎʱ ºò¶¼²»¿ÉÒÔÍ£Ö¹·þÎñ£¬ËùÒÔÕâÑùµÄ±¸·Ý·½Ê½ÔÚ´ËÇé¿öϲ»¿ÉÐС£
Èç¹ûÄãÓöµ½ÁËÀàËÆÉÏÃæµÄÎÊÌ⣬Äã¾Í¿ÉÒÔʹÓý¨Á¢MySQLÖ÷´Ó·þÎñÆ÷µÄ·½Ê½À´½â¾ö£¬ÏÂÃæÏÈÀ´¿´¿´Ö÷´Ó·þÎñÆ÷µÄÉèÖãº
ǰÌ᣺MySQLÖ÷´Ó·þÎñÆ÷×îºÃʹÓÃÏàͬµÄÈí¼þ°æ±¾£¬ÒÔ±ÜÃâ²»²»¿ÉÔ¤ÆÚµÄ¹ÊÕÏ¡£
Ê×ÏÈÉèÖÃMySQLÖ÷·þÎñÆ÷£º
ÔÚÖ÷·þÎñÆ÷ÉÏΪ´Ó·þÎñÆ÷½¨Á¢Ò»¸öÓû§£º
grant replication slave on *.* to 'Óû§Ãû'@'Ö÷»ú' identified by 'ÃÜÂë';
±à¼Ö÷·þÎñÆ÷µÄÅäÖÃÎļþ£º/etc/my.cnf
server-id = 1
log-bin
binlog-do-db=ÐèÒª±¸·ÝµÄÊý¾Ý¿âÃû£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
binlog-ignore-db=²»ÐèÒª±¸·ÝµÄÊý¾Ý¿â¿àÃü£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
log-bin
binlog-do-db=ÐèÒª±¸·ÝµÄÊý¾Ý¿âÃû£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
binlog-ignore-db=²»ÐèÒª±¸·ÝµÄÊý¾Ý¿â¿àÃü£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
±à¼´Ó·þÎñÆ÷µÄÅäÖÃÎļþ£º/etc/my.cnf
server-id=2
master-host=Ö÷»ú
master-user=Óû§Ãû
master-password=ÃÜÂë
master-port=¶Ë¿Ú
replicate-do-db=ÐèÒª±¸·ÝµÄÊý¾Ý¿âÃû£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
master-host=Ö÷»ú
master-user=Óû§Ãû
master-password=ÃÜÂë
master-port=¶Ë¿Ú
replicate-do-db=ÐèÒª±¸·ÝµÄÊý¾Ý¿âÃû£¬Èç¹û±¸·Ý¶à¸öÊý¾Ý¿â£¬Öظ´ÉèÖÃÕâ¸öÑ¡Ïî¼´¿É
¼ÇµÃÏÈÊÖ¶¯Í¬²½Ò»ÏÂÖ÷´Ó·þÎñÆ÷ÖÐÒª±¸·ÝµÄÊý¾Ý¿â£¬È»ºóÖØÆôÖ÷£¬´Ó·þÎñÆ÷¡£
ÒªÑéÖ¤Ö÷´ÓÉèÖÃÊÇ·ñÒѾ³É¹¦£¬¿ÉÒԵǼ´Ó·þÎñÆ÷ÊäÈëÈçÏÂÃüÁ
mysql> show slave status\G
»áµÃµ½ÀàËÆÏÂÃæµÄÁÐ±í£º
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running: Yes
Èç¹ûÕâÁ½¸öÑ¡ÏȫÊÇYes£¬ÄǾÍ˵Ã÷ÄãÇ°ÃæÄ³¸ö²½ÖèÅäÖôíÁË¡£
Èç¹ûÄãµÄÉèÖÃÊÇÕýÈ·µÄ£¬³¢ÊÔÔÚÖ÷·þÎñÆ÷ÉϲåÈëÈô¸ÉÌõ¼Ç¼£¬È»ºóÄãÔÙתµ½´Ó·þÎñÆ÷£¬»á·¢ÏÖÏàÓ¦µÄмǼÒѾ×Ô¶¯Í¬²½¹ýÀ´ÁË¡£
Èç¹ûÄãµÄÖ÷´Ó·þÎñÆ÷ÒѾÅäÖúÃÁË£¬ÄÇôÄãÔÚÓ¦ÓóÌÐòÖУ¬Ö»Òª±£Ö¤ËùÓеÄinsert/delete/update²Ù×÷ÊÇÔÚÖ÷·þÎñÆ÷ÉϽøÐеģ¬ÄÇôÏàÓ¦µÄÊý¾Ý±ä»¯»á×Ô¶¯Í¬²½µ½´Ó·þÎñÆ÷ÉÏ£¬ÕâÑù£¬ÎÒÃǾͿÉÒÔ°Ñselect²Ù×÷·Öµ£µ½¶ą̀´ÓÊý¾Ý¿âÉÏ£¬´Ó¶ø½µµÍ·þÎñÆ÷µÄÔØºÉ¡£
Èç¹ûÄãÏëʹÓø´ÖÆÊý¾ÝÎļþµÄ·½Ê½À´±¸·ÝÊý¾Ý¿â£¬Ö»ÒªÔÚ´Ó·þÎñÆ÷ÉϵÄmysqlÃüÁîÐÐÏȼüÈëslave stop;È»ºó¸´ÖÆÊý¾Ý¿âÎļþ£¬¸´ÖƺÃÁË£¬ÔÙ ÔÚmysqlÃüÁîÐмüÈëslave start;Æô¶¯´Ó·þÎñÆ÷£¬ÕâÑù¾Í¼´±¸·ÝÁËÊý¾ÝÓб£Ö¤ÁËÊý¾ÝÍêÕûÐÔ£¬¶øÇÒÕû¸ö¹ý³ÌÖÐÖ÷·þÎñÆ÷µÄmysqlÎÞÐèÍ£Ö¹¡£
-----------------------------------------------------------------------------------
Ìáʾ£ºÈç¹ûÐÞ¸ÄÁËÖ÷·þÎñÆ÷µÄÅäÖ㬼ǵÃɾ³ý´Ó·þÎñÆ÷ÉϵÄmaster.infoÎļþ¡£·ñÔò´Ó·þÎñÆ÷ʹÓõϹÊÇÀÏÅäÖ㬿ÉÄܻᵼÖ´íÎó¡£
-----------------------------------------------------------------------------------
×¢Ò⣺¹ØÓÚÒª¸´Öƶà¸öÊý¾Ý¿âʱ£¬binlog-do-dbºÍreplicate-do-dbÑ¡ÏîµÄÉèÖã¬ÍøÉϺܶàÈË˵ÊÇÓðë½Ç¶ººÅ·Ö¸ô£¬¾¹ý²âÊÔ£¬ÕâÑùµÄ˵·¨ÊÇ´íÎóµÄ£¬MySQL¹Ù·½ÎĵµÒ²Ã÷È·Ö¸³ö£¬Èç¹ûÒª±¸·Ý¶à¸öÊý¾Ý¿â£¬Ö»ÒªÖظ´ÉèÖÃÏàӦѡÏî¾Í¿ÉÒÔÁË¡£
±ÈÈ磺
binlog-do-db=a
binlog-do-db=b
binlog-do-db=b
replicate-do-db=a
replicate-do-db=b
replicate-do-db=b
-----------------------------------------------------------------------------------
²¹³ä£º´Ó·þÎñÆ÷ÉÏmy.cnfÖеÄmaster-*µÄÉèÖýöÔÚµÚÒ»´ÎÉúЧ£¬ºó±£´æÔÚmaster.infoÎļþÀï¡£
-----------------------------------------------------------------------------------
ÔÚ´Ó·þÎñÆ÷ÉÏʹÓÃshow slave status
Slave_IO_Running,ΪNo,Ôò˵Ã÷IO_THREADûÓÐÆô¶¯£¬ÇëÖ´ÐÐslave start [IO_THREAD]
Slave_SQL_RunningΪNoÔò¸´ÖƳö´í,²é¿´Last_error×Ö¶ÎÅųý´íÎóºóÖ´ÐÐslave start [SQL_THREAD]
Slave_IO_Running,ΪNo,Ôò˵Ã÷IO_THREADûÓÐÆô¶¯£¬ÇëÖ´ÐÐslave start [IO_THREAD]
Slave_SQL_RunningΪNoÔò¸´ÖƳö´í,²é¿´Last_error×Ö¶ÎÅųý´íÎóºóÖ´ÐÐslave start [SQL_THREAD]
²é¿´Slave_IO_State×Ö¶Î
¿Õ //¸´ÖÆÃ»ÓÐÆô¶¯
Connecting to master//ûÓÐÁ¬½ÓÉÏmaster
Waiting for master to send event//ÒѾÁ¬ÉÏ
¿Õ //¸´ÖÆÃ»ÓÐÆô¶¯
Connecting to master//ûÓÐÁ¬½ÓÉÏmaster
Waiting for master to send event//ÒѾÁ¬ÉÏ
-----------------------------------------------------------------------------------
¿ÉÒÔʹÓÃLOAD DATA FROM MASTERÓï¾äÀ´½¨Á¢slave¡£µ«ÓÐÔ¼ÊøÌõ¼þ£º
Êý¾Ý±íҪȫ²¿ÊÇMyISAM±í£¬±ØÐëÓÐSUPERȨÏÞ£¬masterµÄ¸´ÖÆÓû§±ØÐë¾ß±¸RELOADºÍSUPERȨÏÞ¡£
ÔÚmaster¶ËÖ´ÐÐRESET MASTERÇå³ýÒÑÓеÄÈÕÖ¾±ä¸ü£¬
´Ëʱslave¶Ë»áÒòΪÕÒ²»µ½masterÈÕÖ¾ÎÞ·¨Æô¶¯IO_THREAD£¬ÇëÇå¿ÕdataĿ¼ÏÂ
relay-log.info,hosname-relay-bin*µÈÎļþÖØÐÂÆô¶¯mysql
ÖмÌÈÕÖ¾ÎļþĬÈϵÄÎļþΪhostname-relay-bin.nnnºÍhostname-relay-bin.index¡£¿ÉÓôӷþÎñÆ÷µÄ--
relay-logºÍ--relay-log-indexÑ¡ÏîÐ޸ġ£ÔÚ´Ó·þÎñÆ÷Öл¹ÓÐÒ»¸örelay-log.infoÖмÌÐÅÏ¢Îļþ£¬¿ÉÓÃ
--relay-log-info-fileÆô¶¯Ñ¡ÏîÐÞ¸ÄÎļþÃû¡£
Ë«»ú»¥±¸ÔòÊÇÁ½¸ömysqlͬʱÅäÖÃΪmaster¼°slave
Êý¾Ý±íҪȫ²¿ÊÇMyISAM±í£¬±ØÐëÓÐSUPERȨÏÞ£¬masterµÄ¸´ÖÆÓû§±ØÐë¾ß±¸RELOADºÍSUPERȨÏÞ¡£
ÔÚmaster¶ËÖ´ÐÐRESET MASTERÇå³ýÒÑÓеÄÈÕÖ¾±ä¸ü£¬
´Ëʱslave¶Ë»áÒòΪÕÒ²»µ½masterÈÕÖ¾ÎÞ·¨Æô¶¯IO_THREAD£¬ÇëÇå¿ÕdataĿ¼ÏÂ
relay-log.info,hosname-relay-bin*µÈÎļþÖØÐÂÆô¶¯mysql
ÖмÌÈÕÖ¾ÎļþĬÈϵÄÎļþΪhostname-relay-bin.nnnºÍhostname-relay-bin.index¡£¿ÉÓôӷþÎñÆ÷µÄ--
relay-logºÍ--relay-log-indexÑ¡ÏîÐ޸ġ£ÔÚ´Ó·þÎñÆ÷Öл¹ÓÐÒ»¸örelay-log.infoÖмÌÐÅÏ¢Îļþ£¬¿ÉÓÃ
--relay-log-info-fileÆô¶¯Ñ¡ÏîÐÞ¸ÄÎļþÃû¡£
Ë«»ú»¥±¸ÔòÊÇÁ½¸ömysqlͬʱÅäÖÃΪmaster¼°slave
-----------------------------------------------------------------------------------
Ö÷·þÎñÆ÷ÉϵÄÏà¹ØÃüÁ
show master status
show slave hosts
show {master|binary} logs
show binlog events
purge {master|binary} logs to 'log_name'
purge {master|binary} logs before 'date'
reset master(Àϰ汾flush master)
set sql_log_bin={0|1}
show master status
show slave hosts
show {master|binary} logs
show binlog events
purge {master|binary} logs to 'log_name'
purge {master|binary} logs before 'date'
reset master(Àϰ汾flush master)
set sql_log_bin={0|1}
-----------------------------------------------------------------------------------
´Ó·þÎñÆ÷ÉϵÄÏà¹ØÃüÁî:
slave start
slave stop
SLAVE STOP IO_THREAD //´ËḬ̈߳Ñmaster¶ÎµÄÈÕ־дµ½±¾µØ
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //´ËḬ̈߳Ñдµ½±¾µØµÄÈÕÖ¾Ó¦ÓÃÓÚÊý¾Ý¿â
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //¶¯Ì¬¸Ä±ämasterÐÅÏ¢
PURGE MASTER [before 'date'] ɾ³ýmaster¶ËÒÑͬ²½¹ýµÄÈÕÖ¾
slave start
slave stop
SLAVE STOP IO_THREAD //´ËḬ̈߳Ñmaster¶ÎµÄÈÕ־дµ½±¾µØ
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //´ËḬ̈߳Ñдµ½±¾µØµÄÈÕÖ¾Ó¦ÓÃÓÚÊý¾Ý¿â
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //¶¯Ì¬¸Ä±ämasterÐÅÏ¢
PURGE MASTER [before 'date'] ɾ³ýmaster¶ËÒÑͬ²½¹ýµÄÈÕÖ¾
-----------------------------------------------------------------------------------
--read-only
¸ÃÑ¡ÏîÈôӷþÎñÆ÷Ö»ÔÊÐíÀ´×Ô´Ó·þÎñÆ÷Ï̻߳ò¾ßÓÐSUPERȨÏÞµÄÓû§µÄ¸üС£¿ÉÒÔÈ·±£´Ó·þÎñÆ÷²»½ÓÊÜÀ´×Ô¿Í»§µÄ¸üС£


