15.2.6.6. ʹÓÃPer-Table±í¿Õ¼ä
Äã¿ÉÒԴ洢ÿ¸öInnoDB±íºÍËüµÄË÷ÒýÔÚËü×Ô¼ºµÄÎļþÔÚÖУ¬Õâ¸öÌØÕ÷±»³ÆÎª¡°¶à±í¿Õ¼ä¡± £¬ÒòΪʵ¼ÊÉÏÿ¸ö±íÓÐËü×Ô¼ºµÄ±í¿Õ¼ä¡£
¶ÔÄÇЩÏë°ÑÌØ¶¨±í¸ñÒÆµ½·ÖÀëÎïÀí´ÅÅ̵ÄÓû§£¬»òÕßÄÇЩϣÍû¿ìËÙ»Ö¸´µ¥¸ö±íµÄ±¸·Ý¶øÎÞÐë´ò¶ÏÆäÓàInnoDB±íµÄʹÓõÄÓû§£¬Ê¹Óöà±í¿Õ¼ä»áÊÇÓÐÒæµÄ¡£
Äã¿ÉÒÔÍùmy.cnfµÄ[mysqld]½ÚÌí¼ÓÏÂÃæÐÐÀ´ÔÊÐí¶à±í¿Õ¼ä£º
[mysqld]
innodb_file_per_table
ÖØÆô·þÎñÆ÷Ö®ºó£¬InnoDB´æ´¢Ã¿¸öд´½¨µÄ±íµ½±í¸ñËùÊôÓÚµÄÊý¾Ý¿âĿ¼ÏÂËü×Ô¼ºµÄÎļþtbl_name.ibdÀï¡£ÕâÀàËÆÓÚMyISAM´æ´¢ÒýÇæËù×öµÄ£¬µ«MyISAM °Ñ±í·Ö³ÉÊý¾ÝÎļþtbl_name.MYDºÍË÷ÒýÎļþtbl_name.MYI¡£¶ÔÓÚInnoDB£¬Êý¾ÝºÍËùÒÔ±»Ò»Æð´æµ½.ibdÎļþ¡£tbl_name.frmÎļþÕÕ¾ÉÒÀÈ»±»´´½¨¡£
Èç¹ûÄã´Ómy.cnfÎļþɾ³ýinnodb_file_per_tableÐУ¬²¢ÖØÆô·þÎñÆ÷£¬InnoDBÔÚ¹²ÏíµÄ±í¿Õ¼äÎļþÀïÔٴδ´½¨±í¡£
innodb_file_per_tableÖ»Ó°Ïì±íµÄ´´½¨¡£Èç¹ûÄãÓÃÕâ¸öÑ¡ÏîÆô¶¯·þÎñÆ÷£¬ÐÂ±í±»ÓÃ.ibdÎļþÀ´´´½¨£¬µ«ÊÇÄãÈÔ¾ÉÄÜ·ÃÎÊÔÚ¹²Ïí±í¿Õ¼äÀïµÄ±í¡£Èç¹ûÄãɾµôÕâ¸öÑ¡ÏбíÔÚ¹²Ïí±í¿Õ¼äÄÚ´´½¨£¬µ«ÄãÈԾɿÉÒÔ·ÃÎÊÈκÎÓöà±í¿Õ¼ä´´½¨µÄ±í¡£
InnoDB×ÜÊÇÐèÒª¹²Ïí±ê¿Õ¼ä¡£.ibdÎļþ¶ÔInnoDB²»×ãÒÔÈ¥ÔËÐУ¬¹²Ïí±í¿Õ¼ä°üº¬ÊìϤµÄibdataÎļþ£¬InnoDB°ÑÄÚ²¿Êý¾Ý´ÊµäºÍδ×÷ÈÕÖ¾·ÅÔÚÕâ¸öÎļþÖС£
×¢ÊÍ£ºÄã²»ÄÜÏñ¶ÔMyISAMÒ»Ñù£¬ÔÚÊý¾ÝĿ¼֮¼äËæÒâµØÒÆ¶¯.ibdÎļþ¡£ÕâÊÇÒòΪ±í¶¨Òå±»´æÔÚInnoDB¹²Ïí±í¿Õ¼äÄÚ£¬¶øÇÒInnoDB±ØÐë±£³ÖÊÂÎñIDºÍÈÕ־˳ÐòºÅµÄÒ»ÖÂÐÔ¡£
ÔÚÒ»¸ö¸ø¶¨µÄMySQL°²×°ÀÄã¿ÉÒÔÓÃRENAME TABLEÓï¾ä°Ñ.ibdÎļþºÍ¹ØÁªµÄ±í´ÓÒ»¸öÊý¾Ý¿âÒÆµ½ÁíÒ»¸öÊý¾Ý¿â£º
RENAME TABLE old_db_name.tbl_name TO new_db_name.tbl_name;
Èç¹ûÄãÓÐ.ibdÎļþµÄÒ»¸ö¸É¾»µÄ±¸·Ý£¬Äã¿ÉÒÔ°´ÈçϲÙ×÷´Ó±»ÆðÔ´µÄµØ·½»Ö¸´Ëüµ½MySQL°²×°ÖУº
1. ·¢³öÕâ¸öALTER TABLEÓï¾ä£º
2. ALTER TABLE tbl_name DISCARD TABLESPACE;
¾¯¸æ£ºÕâ¸öÓï¾äɾ³ýµ±Ç°.ibdÎļþ¡£
3. °Ñ±¸·ÝµÄ.ibdÎļþ·Å»Øµ½Ç¡µ±µÄÊý¾Ý¿âĿ¼¡£
4. ·¢³öÕâ¸öALTER TABLEÓï¾ä:
5. ALTER TABLE tbl_name IMPORT TABLESPACE;
ÔÚÉÏÏÂÎÄÖУ¬Ò»¸ö.ibdÎļþ¸É¾»µÄ±¸·ÝÒâΪ£º
¡¤ .ibdÎļþÀïûÓÐÉÐδÌá½»µÄÊÂÎñ×öµÄÐ޸ġ£
¡¤ .ibdÎļþÀïÎÞδºÏ²¢µÄ²åÈë»ì³äÌõÄ¿¡£
¡¤ ¾»»¯ÒѾ´Ó.ibdÎļþÒÆ³ýËùÓÐÒѱêעɾ³ýµÄË÷Òý¼Ç¼¡£
¡¤ mysqldÒѾ°Ñ.ibdÎļþµÄËùÓÐÒÑÐÞ¸ÄÒ³Ãæ´Ó»º³å³ØË¢Ðµ½Îļþ¡£
Äã¿ÉÒÔÓÃÏÂÁз½·¨Éú³ÉÒ»¸ö.ibdÎļþµÄ¸É¾»±¸·Ý£º
1. Í£Ö¹ËùÓÐÀ´×Ômysqld·þÎñÆ÷µÄ»î¶¯£¬²¢Ìá½»ËùÓÐÊÂÎñ¡£
2. µÈ´ýÖ±ÖÁSHOW INNODB STATUSÏÔʾÔÚÊý¾Ý¿â±»ÒѾûÓ줻îµÄÊÂÎñ£¬²¢ÇÒInnoDBÖ÷Ï̵߳Ä״̬ÊÇWaiting for server activity¡£È»ºóÄã¾Í¿ÉÒÔ¸´ÖÆ.ibdÎļþÁË¡£
Éú³ÉÒ»¸ö.ibdÎļþµÄ¸É¾»¸´ÖƵÄÁíÒ»¸ö·½·¨ÊÇʹÓÃÉÌÒµµÄInnoDBÈȱ¸·Ý¹¤¾ß£º
1. ʹÓÃInnoDBÈȱ¸·Ý¹¤¾ß±¸·ÝInnoDB°²×°¡£
2. ÔÚ±¸·ÝÉÏÆô¶¯µÚ¶þ¸ömysqld·þÎñÆ÷£¬ÈÃËüÇå½à±¸·ÝÀïµÄ.ibdÎļþ¡£
15.2.7. Ìí¼ÓºÍɾ³ýInnoDBÊý¾ÝºÍÈÕÖ¾Îļþ
ÕâÒ»½ÚÃèÊöÔÚInnoDB±í¿Õ¼äºÄ¾¡¿Õ¼ä֮ʱ£¬»òÕßÄãÏëÒª¸Ä±äÈÕÖ¾Îļþ´óС֮ʱ£¬Äã¿ÉÒÔ×öµÄһЩÊÂÇé¡£
×î¼òµ¥µÄ£¬Ôö¼ÓInnoDB±í¿Õ¼ä´óСµÄ·½·¨ÊÇ´Ó¿ªÊ¼ÅäÖÃËüΪ×Ô¶¯À©Õ¹µÄ¡£Îª±í¿Õ¼ä¶¨ÒåÀïµÄ×îºóÒ»¸öÊý¾ÝÎļþÖ¸¶¨autoextendÊôÐÔ¡£È»ºóÔÚÎļþºÄ¾¡¿Õ¼ä֮ʱ£¬InnoDBÒÔ8MBΪÔöÁ¿×Ô¶¯Ôö¼Ó¸ÃÎļþµÄ´óС¡£Ôö¼ÓµÄ´óС¿ÉÒÔͨ¹ýÉèÖÃinnodb_autoextend_incrementÖµÀ´ÅäÖÃ,Õâ¸öÖµÒÔMBΪµ¥Î»£¬Ä¬ÈϵÄÊÇ8¡£
×÷ÎªÌæ´ú£¬Äã¿ÉÒÔͨ¹ýÌí¼ÓÁíÒ»¸öÊý¾ÝÎļþÀ´Ôö¼Ó±í¿Õ¼äµÄ³ß´ç¡£ÒªÕâô×öµÄ»°£¬Äã±ØÐëÍ£Ö¹MySQL·þÎñÆ÷£¬±à¼my.cnfÎļþ£¬Ìí¼ÓÒ»¸öÐÂÊý¾ÝÎļþµ½innodb_data_file_pathµÄĩβ£¬È»ºóÔÙ´ÎÆô¶¯·þÎñÆ÷¡£
Èç¹û×îºóÒ»¸öÊý¾ÝÎļþÊÇÓùؼü×Öautoextend¶¨ÒåµÄ£¬±à¼my.cnfÎļþµÄ²½Öè±ØÐ뿼ÂÇ×îºóÒ»¸öÊý¾ÝÎļþÒѾÔö³¤µ½¶à´ó¡£»ñÈ¡Êý¾ÝÎļþµÄ³ß´ç£¬°ÑËüËÄÉáÎåÈëµ½×î½Ó½ü³Ë»ý1024 ¡Á 1024bytes (= 1MB)£¬È»ºóÔÚinnodb_data_file_pathÖÐÃ÷È·Ö¸¶¨´óÖµijߴ硣ȻºóÄã¿ÉÒÔÌí¼ÓÁíÒ»¸öÊý¾ÝÎļþ¡£¼ÇµÃÖ»ÓÐinnodb_data_file_pathÀï×îºóÒ»¸öÊý¾Ý¿ÉÒÔ±»Ö¸¶¨Îª×Ô¶¯À©Õ¹¡£
×÷Ϊһ¸öÀý×Ó¡£¼ÙÉè±í¿Õ¼äÕýºÃÓÐÒ»¸ö×Ô¶¯À©Õ¹Îļþibdata1£º
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
¼ÙÉèÕâ¸öÊý¾ÝÎļþ¹ýÒ»¶Îʱ¼äÒѾ³¤µ½988MB¡£ÏÂÃæÊÇÌí¼ÓÁíÒ»¸ö×ÜÀ©Õ¹Êý¾ÝÎļþÖ®ºóµÄÅäÖÃÐУº
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
µ±ÄãÌí¼ÓÒ»¸öÐÂÎļþµ½±í¿Õ¼äµÄÖ®ºó£¬ÇëÈ·ÐÅËü²¢²»´æÔÚ¡£µ±ÄãÖØÆô·þÎñÆ÷֮ʱ£¬InnoDB´´½¨²¢³õʼ»¯Õâ¸öÎļþ¡£
µ±Ç°£¬Äã²»ÄÜ´Ó±í¿Õ¼äɾ³ýÒ»¸öÊý¾ÝÎļþ¡£ÒªÔö¼Ó±í¿Õ¼äµÄ´óС£¬Ê¹ÓÃÈçϲ½Ö裺
1. ʹÓÃmysqldumpת´¢ËùÓÐInnoDB±í¡£
2. Í£Ö¹·þÎñÆ÷¡£
3. ɾ³ýËùÓÐÒÑ´æÔڵıí¿Õ¼äÎļþ¡£
4. ÅäÖÃбí¿Õ¼ä¡£
5. ÖØÆô·þÎñÆ÷¡£
6. µ¼Èëת´¢Îļþ¡£
Èç¹ûÄãÏëÒª¸Ä±äÄãµÄInnoDBÈÕÖ¾ÎļþµÄÊýÁ¿ºÍ´óС£¬Äã±ØÐëҪֹͣMySQL·þÎñÆ÷£¬²¢È·ÐÅËü±»ÎÞ´íÎóµØ¹Ø±Õ¡£Ëæºó¸´ÖƾÉÈÕÖ¾Îļþµ½Ò»¸ö°²È«µÄµØ·½ÒÔ·ÀÍòһijÑù¶«Î÷ÔڹرÕʱ³ö´í¶øÄãÐèÒªÓÃËüÃÇÀ´»Ö¸´±í¿Õ¼ä¡£´ÓÈÕÖ¾ÎļþĿ¼ɾ³ýËùÓоÉÈÕÖ¾Îļþ£¬±à¼my.cnfÀ´¸Ä±äÈÕÖ¾ÎļþÅäÖ㬲¢ÔÙ´ÎÆô¶¯MySQL·þÎñÆ÷¡£mysqldÔÚÆô¶¯Ö®Ê±·¢ÏÖûÓÐÈÕÖ¾Îļþ£¬È»ºó¸æËßÄãËüÕýÔÚ´´½¨Ò»¸öеÄÈÕÖ¾Îļþ¡£
15.2.8. ±¸·ÝºÍ»Ö¸´InnoDBÊý¾Ý¿â
°²È«Êý¾Ý¿â¹ÜÀíµÄ¹Ø¼üÊǶ¨ÆÚ×ö±¸·Ý¡£
InnoDBÈȱ¸·Ý¹¤¾ßÊÇÒ»¸öÔÚÏß±¸·Ý¹¤¾ß£¬Äã¿ÉÒÔÓÃËüÀ´ÔÚInnoDBÊý¾Ý¿âÔËÐÐ֮ʱ±¸·ÝÄãµÄInnoDBÊý¾Ý¿â¡£InnoDBÈȱ¸·Ý¹¤¾ß²»ÒªÇóÄã¹Ø±ÕÊý¾Ý¿â£¬²¢ÇÒËü²»ÉèÖÃÈκÎËø¶¨»ò¸ÉÈÅÄãÕý³£µÄÊý¾Ý¿â´¦Àí¡£InnoDBÈȱ¸·Ý¹¤¾ßÊÇ·ÇÃâ·Ñ£¨ÉÌÒµµÄ£©¸½¼ÓÈí¼þ£¬ËüÿÄêµÄÖ¤Êé·ÑÓÃÊÇÿ̨MySQL·þÎñÆ÷ÔËÐеļÆËã»ú€390¡£Çë²ÎÔÄInnoDBÈȱ¸·ÝÖ÷Ò³ÒÔ»ñµÃ¸üÏêϸµÄÐÅÏ¢ÒÔ¼°ÆÁÄ»½ØÍ¼¡£
Èç¹ûÄã¿ÉÒԹرÕÄãµÄMySQL·þÎñÆ÷£¬Äã¿ÉÒÔÉú³ÉÒ»¸ö°üº¬InnoDBÓÃÀ´¹ÜÀíËüµÄ±íµÄËùÓÐÎļþµÄ¶þ½øÖƱ¸·Ý¡£Ê¹ÓÃÈçϲ½Ö裺
1. ¹Ø±ÕMySQL·þÎñÆ÷£¬È·ÐÅËüÊÇÎÞ´íÎ󹨱ա£
2. ¸´ÖÆÄãËùÓÐÊý¾ÝÎļþ£¨ibdataÎļþºÍ.ibdÎļþ£©µ½Ò»¸ö°²È«µÄµØ·½¡£
3. ¸´ÖÆÄãËùÓÐib_logfileÎļþµ½Ò»¸ö°²È«µÄµØ·½¡£
4. ¸´ÖÆmy.cnfÅäÖÃÎļþ»òÎļþµ½Ò»¸ö°²È«µÄµØ·½¡£
5. ΪÄãInnoDB±í¸´ÖÆ.frmÎļþµ½Ò»¸ö°²È«µÄµØ·½¡£
¸´ÖƶÔInnoDB±íÆð×÷Óã¬ËùÒÔÄã¿ÉÒÔʹÓÃMySQL¸´ÖÆÄÜÁ¦À´ÔÚÐèÒª¸ß¿ÉÓÃÐÔµÄÊý¾Ý¿âÕ¾µã±£ÓÐÒ»·ÝÊý¾Ý¿âµÄ¸´ÖÆ¡£
³ýÁ˸ղÅÃèÊöµÄ¶þ½øÖƱ¸·Ý£¬ÄãÒ²Ó¦¸ÃÖÜÆÚÐÔµØÓÃmysqldumpת´¢ÄãµÄÊý¾Ý¿â¡£Õâô×öµÄÔÒòÊÇ£¬¶þ½øÖÆÎļþ¿ÉÄܱ»ÆÆ»µ¶øÄãûÓÐ×¢Òâµ½¡£×ª´¢µÄÎļþ±»´æ´¢³ÉΪÈ˿ɶÁµÄÎı¾Îļþ£¬ËùÒÔ¶¨µã±íµÄËð»µÐÞ¸´±äµÃ¸üÈÝÒס£ÔÙÕߣ¬ÒòΪÐÎʽ¸ü¼òµ¥£¬ÑÏÖØÊý¾ÝË𻵵Ļú»á¾Í¸üС¡£mysqldump Ò²ÓÐÒ»¸ö--single-transactionÑ¡ÏÄã¿ÉÒÔÓÃËüÀ´×öÒ»¸öÒ»ÖµĿìÕÕ¶ø²»ÓÃ°ÑÆäËü¿Í»§¶ËÅųýÔÚÍâÃæ¡£
ÒªÄܹ»´ÓÉÏÊöµÄ¶þ½øÖƱ¸·Ý»Ö¸´InnoDBÊý¾Ý¿âµ½ÏÖÔÚ£¬Äã±ØÐëÈöþ½øÖÆÈÕÖ¾¹¦ÄÜ´ò¿ªÕýÔÚÔËÐеÄMySQL·þÎñÆ÷¡£È»ºóÄã¿ÉÒÔÓ¦Óöþ½øÖÆÈÕÖ¾µ½±¸·ÝÊý¾Ý¿âÒÔʵÏÖpoint-in-time»Ö¸´£º
mysqlbinlog yourhostname-bin.123 | mysql
Òª´ÓMySQL·þÎñÆ÷µÄ±ÀÀ£»Ö¸´£¬Î¨Ò»ÐèÒªµÄÊÇÖØÐÂÆô¶¯Ëü¡£InnoDB×Ô¶¯¼ì²éÈÕÖ¾²¢Ö´Ðе½ÏÖÔÚµÄÊý¾Ý¿âǰ¹ö¡£InnoDB×Ô¶¯»Ø¹öÔÚ±ÀÀ£Ê±³ÊÏÖµÄδÌá½»µÄÊÂÎñ¡£ÔÚ»Ö¸´¹ý³ÌÖУ¬mysqldÏÔʾÈçÏÂһЩÊä³ö£º
InnoDB: Database was not shut down normally.
InnoDB: Starting recovery from log files...
InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 13674004
InnoDB: Doing recovery: scanned up to log sequence number 0 13739520
InnoDB: Doing recovery: scanned up to log sequence number 0 13805056
InnoDB: Doing recovery: scanned up to log sequence number 0 13870592
InnoDB: Doing recovery: scanned up to log sequence number 0 13936128
...
InnoDB: Doing recovery: scanned up to log sequence number 0 20555264
InnoDB: Doing recovery: scanned up to log sequence number 0 20620800
InnoDB: Doing recovery: scanned up to log sequence number 0 20664692
InnoDB: 1 uncommitted transaction(s) which must be rolled back
InnoDB: Starting rollback of uncommitted transactions
InnoDB: Rolling back trx no 16745
InnoDB: Rolling back of trx no 16745 completed
InnoDB: Rollback of uncommitted transactions completed
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Apply batch completed
InnoDB: Started
mysqld: ready for connections
Èç¹ûÊý¾Ý¿â±»Ë𻵻ò´ÅÅ̳ö´í£¬Äã±ØÐë´Ó±¸·Ý×ö»Ö¸´¡£ÔÚË𻵵ÄÇé¿öÏ£¬ÄãÊ×ÏÈÓ¦¸ÃÕÒ³öÒ»¸öûÓб»Ë𻵵ı¸·Ý¡£»Ö¸´Êý¾Ý¿â±¸·ÝÖ®ºó£¬´Ó¶þ½øÖÆÈÕÖ¾Îļþ»Ö¸´¡£
ÔÚһЩÊý¾Ý¿âË𻵵ÄÇé¿öÏ£¬½ö½öת´¢£¬ÒƳý²¢Öؽ¨Ò»¸ö»òÊý¸ö±»ÆÆ»µµÄ±íÊÇ×ã¹»µÄ¡£Äã¿ÉÒÔÓÃCHECK TABLE SQLÓï¾äÀ´¼ì²é±íÊÇ·ñË𻵣¬ËäÈ»CHECK TABLEÕý³£µØ²»¼ì²éÿÖÖ¿ÉÄܵÄË𻵣¬Äã¿ÉÒÔʹÓÃinnodb_tablespace_monitorÀ´¼ì²é±í¿Õ¼äÎļþÄÚÎļþ¿Õ¼ä¹ÜÀíµÄÍêÕûÐÔ¡£
ÔÚһЩÇé¿öÏ£¬Ã÷ÏÔµØÊý¾Ý¿âËð»µÊÇÒòΪ²Ù×÷ϵͳËð»µËü×Ô¼ºµÄÎļþ»º´æ£¬´ÅÅÌÉϵÄÊý¾Ý¿ÉÄÜÍêºÃ£¬×îºÃÊÇÊ×ÏÈÖØÆô¼ÆËã»ú¡£Ëü¿ÉÒÔÏû³ýÄÇЩÏÔµÃÊÇÊý¾Ý¿âÒ³Ë𻵵ĴíÎó¡£
Èç¹ûÊý¾Ý¿âÒ³±»ÆÆ»µ£¬Äã¿ÉÄÜÏëÒªÓÃSELECT INTO OUTFILE´Ó´ÓÊý¾Ý¿âת´¢ÄãµÄ±í£¬Í¨³£ÒÔÕâÖÖ·½·¨»ñÈ¡µÄ´ó¶àÊýÊý¾ÝÊÇÍêºÃµÄ¡£¼´Ê¹ÕâÑù£¬Ë𻵿ÉÄܵ¼ÖÂSELECT * FROM tbl_name»òÕßInnoDBºǫ́²Ù×÷±ÀÀ£»ò¶ÏÑÔ£¬»òÕßÉõÖÁʹµÃInnoDBǰ¹ö»Ö¸´±ÀÀ£¡£ ¾¡¹ÜÈç´Ë£¬Äã¿ÉÒÔÓÃËüÀ´Ç¿ÖÆInnoDB´æ´¢ÒýÇæÆô¶¯Í¬Ê±×èÖ¹ºǫ́²Ù×÷ÔËÐУ¬ÒÔ±ãÄãÄÜת´¢ÄãµÄ±í¡£ÀýÈ磺Äã¿ÉÒÔÔÚÖØÆô·þÎñÆ÷֮ǰ£¬ÔÚÑ¡ÏîÎļþµÄ[mysqld]½ÚÌí¼ÓÈçϵÄÐУº
[mysqld]
innodb_force_recovery = 4
innodb_force_recovery±»ÔÊÐíµÄ·ÇÁãÖµÈçÏ¡£Ò»¸ö¸ü´óµÄÊý×Ö°üº¬ËùÓиüСÊý×ÖµÄÔ¤·À´ëÊ©¡£Èç¹ûÄãÄܹ»ÓÃÒ»¸ö¶àÊýÊÇ4µÄÑ¡ÏîÖµÀ´×ª´¢ÄãµÄ±í£¬ÄÇôÄãÊDZȽϰ²È«µÄ£¬Ö»ÓÐһЩÔÚË𻵵ĵ¥¶ÀÒ³ÃæÉϵÄÊý¾Ý»á¶ªÊ§¡£Ò»¸öΪ6µÄÖµ¸ü¿äÕÅ£¬ÒòΪÊý¾Ý¿âÒ³±»ÁôÔÚÒ»¸ö³Â¾ÉµÄ״̬£¬Õâ¸ö״̬·´¹ýÀ´¿ÉÒÔÒý·¢¶ÔBÊ÷ºÍÆäËüÊý¾Ý¿â½á¹¹µÄ¸ü¶àÆÆ»µ¡£
¡¤ 1 (SRV_FORCE_IGNORE_CORRUPT)
¼´Ê¹·þÎñÆ÷¼ì²âµ½Ò»¸öË𻵵ÄÒ³£¬Ò²È÷þÎñÆ÷ÔËÐÐ×Å£»ÊÔ×ÅÈÃSELECT * FROM tbl_name Ìø¹ýË𻵵ÄË÷Òý¼Ç¼ºÍÒ³£¬ÕâÑùÓÐÖúÓÚת´¢±í¡£
¡¤ 2 (SRV_FORCE_NO_BACKGROUND)
×èÖ¹Ö÷Ïß³ÌÔËÐУ¬Èç¹û±ÀÀ£¿ÉÄÜÔÚ¾»»¯²Ù×÷¹ý³ÌÖз¢Éú£¬Õ⽫×èÖ¹Ëü¡£
¡¤ 3 (SRV_FORCE_NO_TRX_UNDO)
»Ö¸´ºó²»ÔËÐÐÊÂÎñ»Ø¹ö¡£
¡¤ 4 (SRV_FORCE_NO_IBUF_MERGE)
Ò²×èÖ¹²åÈ뻺³åºÏ²¢²Ù×÷¡£Èç¹ûÄã¿ÉÄܻᵼÖÂÒ»¸ö±ÀÀ£¡£×îºÃ²»Òª×öÕâЩ²Ù×÷£¬²»Òª¼ÆËã±íͳ¼Æ±í¡£
¡¤ 5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
Æô¶¯Êý¾Ý¿â֮ʱ²»²é¿´Î´Íê³ÉÈÕÖ¾£ºInnoDB°ÑδÍê³ÉµÄÊÂÎñÊÓΪÒÑÌá½»µÄ¡£
¡¤ 6 (SRV_FORCE_NO_LOG_REDO)
²»ÒªÔÚ»Ö¸´Á¬½ÓÖÐ×öÈÕ־ǰ¹ö¡£
Êý¾Ý¿â²»ÄÜÁíÍâµØ´ø×ÅÕâЩѡÏîÖб»ÔÊÐíµÄÑ¡ÏîÀ´Ê¹Óá£×÷Ϊһ¸ö°²È«´ëÊ©£¬µ±innodb_force_recovery±»ÉèÖÃΪ´óÓÚ0µÄֵʱ£¬InnoDB×èÖ¹Óû§Ö´ÐÐINSERT, UPDATE»òDELETE²Ù×÷.
¼´Ê¹Ç¿Öƻָ´±»Ê¹Óã¬ÄãÒ²¿ÉÒÔDROP»òCREATE±í¡£Èç¹ûÄãÖªµÀÒ»¸ö¸ø¶¨µÄ±íÕýÔÚµ¼Ö»عö±ÀÀ££¬Äã¿ÉÒÔÒÆ³ýËü¡£ÄãÒ²¿ÉÒÔÓÃÕâ¸öÀ´Í£Ö¹ÓÉʧ°ÜµÄ´ó×Úµ¼Èë»òʧ°ÜµÄALTER TABLEµ¼ÖµÄʧ¿Ø»Ø¹ö¡£Äã¿ÉÒÔɱµômysqld½ø³Ì£¬È»ºóÉèÖÃinnodb_force_recoveryΪ3£¬Ê¹µÃÊý¾Ý¿â±»¹ÒÆð¶ø²»ÐèÒª»Ø¹ö£¬È»ºóÉáÆúµ¼ÖÂʧ¿Ø»Ø¹öµÄ±í¡£
InnoDBʵÏÖÒ»ÖÖ±»ÈÏʶΪ¡°Ä£ºý¡±¼ì²éµãÉèÖõļì²éµã»úÖÆ¡£InnoDBÒÔСÅúÁ¿´Ó»º³å³ØË¢ÐÂÒÑÐ޸ĵÄÊý¾Ý¿âÒ³¡£Ã»±ØÒªÒÔµ¥¸öÅú´Îˢлº³å³Ø£¬µ¥Åú´ÎË¢ÐÂʵ¼Ê²Ù×÷ÖпÉÄÜ»áÔÚ¼ì²éµãÉèÖýø³ÌÖÐÍ£Ö¹Óû§SQLÓï¾äµÄ´¦Àí¡£
ÔÚ±ÀÀ£»Ö¸´ÖУ¬InnoDBÕÒѰ±»Ð´½øÈÕÖ¾µÄ¼ì²éµã±êÇ©¡£ËüÖªµÀËùÓÐÔڸñêǩ֮ǰ¶ÔÊý¾Ý¿âµÄÐ޸ı»³ÊÏÖÔÚÊý¾Ý¿âµÄ´ÅÅÌÓ³ÏñÖС£È»ºóInnoDB´Ó¼ì²éµãÍùǰɨÃèÈÕÖ¾Îļþ£¬¶ÔÊý¾Ý¿âÓ¦ÓÃÒÑдÈëÈÕÖ¾µÄÐ޸ġ£
InnoDBÒÔÑ»··½Ê½Ð´ÈÕÖ¾Îļþ¡£ËùÓÐʹµÃ»º³å³ØÀïµÄÊý¾Ý¿âÒ³Óë´ÅÅÌÉϵÄÓ³Ïñ²»Í¬µÄÒÑÌá½»Ð޸ıØÐë³öÏÖÔÚÈÕÖ¾ÎļþÖУ¬ÒÔ±¸ÍòÒ»InnoDBÐèÒª×öÒ»¸ö»Ö¸´¡£ÕâÒâζ×Å£¬µ±InnoDB¿ªÊ¼ÖØÐÂʹÓÃÒ»¸öÈÕÖ¾Îļþ£¬ËüÐèҪȷÈÏÔÚ´ÅÅÌÉϵÄÊý¾Ý¿âÒ³Ó³Ïñ°üº¬ÒÑд½øInnoDB×¼±¸ÖØÐÂʹÓõÄÈÕÖ¾ÎļþÀïµÄÐ޸ġ£»»¾ä»°Ëµ£¬InnoDB±ØÐë´´½¨Ò»¸ö¼ì²éµã£¬Õâ¾³£Éæ¼°ÒÑÐÞ¸ÄÊý¾Ý¿âÒ³µ½´ÅÅ̵ÄˢС£
Ç°ÃæµÄÐðÊö½âÊÍÁËΪʲôʹÄãµÄÈÕÖ¾Îļþ·Ç³£´ó»áÔÚÉèÖüì²éµãÖнÚÔ¼´ÅÅÌI/O¡£ÉèÖÃÈÕÖ¾Îļþ×ܵĴóСºÍ»º³å³ØÒ»Ñù´ó»òÕßÉõÖÁ±È»º³å³Ø´óͨ³£ÊÇÓÐÒâÒåµÄ¡£´óÈÕÖ¾ÎļþµÄȱµãÊDZÀÀ£»Ö¸´Òª»¨¸ü³¤µÄʱ¼ä£¬ÒòΪÓиü¶àдÈëÈÕÖ¾µÄÐÅÏ¢ÒªÓ¦Óõ½Êý¾Ý¿âÉÏ¡£