ºìÁªLinuxÃÅ»§
Linux°ïÖú

mysqlÊý¾Ý¿â¶þ½øÖÆÈÕÖ¾»Ö¸´

·¢²¼Ê±¼ä:2007-09-19 00:02:07À´Ô´:ºìÁª×÷Õß:gistjoe
¡¡¡¡Èç¹ûMySQL·þÎñÆ÷ÆôÓÃÁ˶þ½øÖÆÈÕÖ¾£¬Äã¿ÉÒÔʹÓÃmysqlbinlog¹¤¾ßÀ´»Ö¸´´ÓÖ¸¶¨µÄʱ¼äµã¿ªÊ¼ (ÀýÈ磬´ÓÄã×îºóÒ»´Î±¸·Ý)Ö±µ½ÏÖÔÚ»òÁíÒ»¸öÖ¸¶¨µÄʱ¼äµãµÄÊý¾Ý¡£¡°mysqlbinlog£ºÓÃÓÚ´¦Àí¶þ½øÖÆÈÕÖ¾ÎļþµÄʵÓù¤¾ß¡±¡£

¡¡¡¡ÒªÏë´Ó¶þ½øÖÆÈÕÖ¾»Ö¸´Êý¾Ý£¬ÄãÐèÒªÖªµÀµ±Ç°¶þ½øÖÆÈÕÖ¾ÎļþµÄ·¾¶ºÍÎļþÃû¡£Ò»°ã¿ÉÒÔ´ÓÑ¡ÏîÎļþ(¼´my.cnf or my.ini£¬È¡¾öÓÚÄãµÄϵͳ)ÖÐÕÒµ½Â·¾¶¡£Èç¹ûδ°üº¬ÔÚÑ¡ÏîÎļþÖУ¬µ±·þÎñÆ÷Æô¶¯Ê±£¬¿ÉÒÔÔÚÃüÁîÐÐÖÐÒÔÑ¡ÏîµÄÐÎʽ¸ø³ö¡£ÆôÓöþ½øÖÆÈÕÖ¾µÄÑ¡ÏîΪ-- log-bin¡£ÒªÏëÈ·¶¨µ±Ç°µÄ¶þ½øÖÆÈÕÖ¾ÎļþµÄÎļþÃû£¬ÊäÈëÏÂÃæµÄMySQLÓï¾ä£º

¡¡¡¡SHOW BINLOG EVENTS \G

¡¡¡¡Ä㻹¿ÉÒÔ´ÓÃüÁîÐÐÊäÈëÏÂÃæµÄÄÚÈÝ£º
¡¡¡¡mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS \G'

¡¡¡¡½«ÃÜÂëmy_pwdÌ滻Ϊ·þÎñÆ÷µÄrootÃÜÂë¡£

¡¡¡¡1. Ö¸¶¨»Ö¸´Ê±¼ä
¡¡¡¡¶ÔÓÚMySQL 4.1.4£¬¿ÉÒÔÔÚmysqlbinlogÓï¾äÖÐͨ¹ý--start-dateºÍ--stop-dateÑ¡ÏîÖ¸¶¨DATETIME¸ñʽµÄÆðֹʱ¼ä¡£¾ÙÀý˵Ã÷£¬¼ÙÉèÔÚ½ñÌìÉÏÎç10:00(½ñÌìÊÇ2006Äê4ÔÂ20ÈÕ)£¬Ö´ÐÐSQLÓï¾äÀ´É¾³ýÒ»¸ö´ó±í¡£ÒªÏë»Ö¸´±íºÍÊý¾Ý£¬Äã¿ÉÒÔ»Ö¸´Ç°ÍíÉϵı¸·Ý£¬²¢ÊäÈ룺

¡¡¡¡mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 \
¡¡¡¡| mysql -u root -pmypwd

¡¡¡¡¸ÃÃüÁ»Ö¸´½ØÖ¹µ½ÔÚ--stop-dateÑ¡ÏîÖÐÒÔDATETIME¸ñʽ¸ø³öµÄÈÕÆÚºÍʱ¼äµÄËùÓÐÊý¾Ý¡£Èç¹ûÄãûÓмì²âµ½¼¸¸öСʱºóÊäÈëµÄ´íÎóµÄSQLÓï¾ä£¬¿ÉÄÜÄãÏëÒª»Ö¸´ºóÃæ·¢ÉúµÄ»î¶¯¡£¸ù¾ÝÕâЩ£¬Äã¿ÉÒÔÓÃÆðʹÈÕÆÚºÍʱ¼äÔÙ´ÎÔËÐÐmysqlbinlog£º

¡¡¡¡mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 \
¡¡¡¡| mysql -u root -pmypwd \

¡¡¡¡ÔÚ¸ÃÐÐÖУ¬´ÓÉÏÎç10:01µÇ¼µÄSQLÓï¾ä½«ÔËÐС£×éºÏÖ´ÐÐÇ°Ò¹µÄת´¢ÎļþºÍmysqlbinlogµÄÁ½ÐпÉÒÔ½«ËùÓÐÊý¾Ý»Ö¸´µ½ÉÏÎç10:00Ç°Ò»ÃëÖÓ¡£ÄãÓ¦¼ì²éÈÕÖ¾ÒÔÈ·±£Ê±¼äÈ·ÇС£ÏÂÒ»½Ú½éÉÜÈçºÎʵÏÖ¡£

¡¡¡¡2. Ö¸¶¨»Ö¸´Î»ÖÃ
¡¡¡¡Ò²¿ÉÒÔ²»Ö¸¶¨ÈÕÆÚºÍʱ¼ä£¬¶øʹÓÃmysqlbinlogµÄÑ¡Ïî--start-positionºÍ--stop-positionÀ´Ö¸¶¨ÈÕ־λÖá£ËüÃǵÄ×÷ÓÃÓëÆðÖ¹ÈÕÑ¡ÏîÏàͬ£¬²»Í¬µÄÊǸø³öÁË´ÓÈÕÖ¾ÆðµÄλÖúš£Ê¹ÓÃÈÕ־λÖÃÊǸü׼ȷµÄ»Ö¸´·½·¨£¬ÌرðÊǵ±ÓÉÓÚÆÆ»µÐÔSQLÓï¾äͬʱ·¢ÉúÐí¶àÊÂÎñµÄʱºò¡£ÒªÏëÈ·¶¨Î»Öúţ¬¿ÉÒÔÔËÐÐmysqlbinlogÑ°ÕÒÖ´ÐÐÁ˲»ÆÚÍûµÄÊÂÎñµÄʱ¼ä·¶Î§£¬µ«Ó¦½«½á¹ûÖØÐÂÖ¸ÏòÎı¾ÎļþÒÔ±ã½øÐмì²é¡£²Ù×÷·½·¨Îª£º

¡¡¡¡mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" \
¡¡¡¡/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql

¡¡¡¡¸ÃÃüÁÔÚ/tmpĿ¼´´½¨Ð¡µÄÎı¾Îļþ£¬½«ÏÔʾִÐÐÁË´íÎóµÄSQLÓï¾äʱµÄSQLÓï¾ä¡£Äã¿ÉÒÔÓÃÎı¾±à¼­Æ÷´ò¿ª¸ÃÎļþ£¬Ñ°ÕÒÄã²»ÒªÏëÖظ´µÄÓï¾ä¡£Èç¹û¶þ½øÖÆÈÕÖ¾ÖеÄλÖúÅÓÃÓÚÍ£Ö¹ºÍ¼ÌÐø»Ö¸´²Ù×÷£¬Ó¦½øÐÐ×¢ÊÍ¡£ÓÃlog_pos¼ÓÒ»¸öÊý×ÖÀ´±ê¼ÇλÖá£Ê¹ÓÃλÖúŻָ´ÁËÒÔÇ°µÄ±¸·ÝÎļþºó£¬ÄãÓ¦´ÓÃüÁîÐÐÊäÈëÏÂÃæÄÚÈÝ£º

¡¡¡¡mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
¡¡¡¡| mysql -u root -pmypwd
¡¡¡¡mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
¡¡¡¡| mysql -u root -pmypwd \

¡¡¡¡ÉÏÃæµÄµÚ1Ðн«»Ö¸´µ½Í£Ö¹Î»ÖÃΪֹµÄËùÓÐÊÂÎñ¡£ÏÂÒ»Ðн«»Ö¸´´Ó¸ø¶¨µÄÆðʼλÖÃÖ±µ½¶þ½øÖÆÈÕÖ¾½áÊøµÄËùÓÐÊÂÎñ¡£ÒòΪmysqlbinlogµÄÊä³ö°üÀ¨Ã¿¸öSQLÓï¾ä¼Ç¼֮ǰµÄSET TIMESTAMPÓï¾ä£¬»Ö¸´µÄÊý¾ÝºÍÏà¹ØMySQLÈÕÖ¾½«·´Ó¦ÊÂÎñÖ´ÐеÄԭʱ¼ä¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ