innodb_force_recovery設定
mysql> show variables like '%innodb_force_recovery%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_force_recovery | 0 |
+-----------------------+-------+
該引數預設值為0,代表當發生需要恢復時,機型所有的恢復操作,當不能進行有效恢復時,如資料頁發生了corruption,MySQL資料庫可能法師當機(crash),並把錯誤寫入錯誤日誌中。
該引數還可以設定為6個非零的值:1-6。大的數字表示包含了前面所有小數字表示的影響
1 srv_force_ignore_corrupt: 忽律檢查到corrupt頁
2 srv_force_no_background: 阻止Master Thread執行緒的執行,如Master Thread執行緒需要進行full purge操作,而這會導致crash。
3 srv_force_no_trx_undo: 不進行事務的回滾操作
4 srv_force_no_ibuf_merge: 不進行插入緩衝的合併操作
5 srv_force_no_undo_log_scan: 不檢視撤銷日誌(undo log),InnoDB儲存引擎會將未提交的事務視為已提交
6 srv_force_no_log_redo 不進行前滾操作
注意:
當引數innodb_force_recovery設定大於0的值,使用者可以對錶進行select,create和drop操作,但insert\update\delete這類DML操作是不允許的。
模擬故障
Database changed
mysql> start transaction
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> update t4 set VERSION=1;
Query OK, 581632 rows affected (11.40 sec)
Rows matched: 581632 Changed: 581632 Warnings: 0
[root@mysql5-7 ~]# ps aux | grep mysql
root 3928 0.0 0.0 106244 1448 pts/1 S 14:55 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
root 4585 0.0 0.1 126688 3012 pts/1 S+ 14:55 0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock
mysql 4624 10.3 21.7 2269864 417796 pts/1 Sl 14:57 0:18 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --socket=/data/3306/soket/mysql.sock --port=3306
root 5884 0.0 0.0 100952 612 pts/2 S+ 15:00 0:00 tail -f /data/3306/logs/mysql_ray.err
root 5889 0.0 0.0 103260 832 pts/3 S+ 15:00 0:00 grep mysql
[root@mysql5-7 ~]# kill -9 3928
[root@mysql5-7 ~]# kill -9 4624
[root@mysql5-7 ~]# ps aux | grep mysql
root 4585 0.0 0.1 126688 3012 pts/1 S+ 14:55 0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock
root 5884 0.0 0.0 100952 612 pts/2 S+ 15:00 0:00 tail -f /data/3306/logs/mysql_ray.err
root 5895 0.0 0.0 103260 836 pts/3 S+ 15:00 0:00 grep mysql
2017-05-25T07:01:10.663268Z 0 [Note] InnoDB: Database was not shutdown normally!
2017-05-25T07:01:10.663287Z 0 [Note] InnoDB: Starting crash recovery.
2017-05-25T07:01:10.695649Z 0 [Note] InnoDB: 1 transaction(s) which must be rolled back or cleaned up in total 581632 row operations to undo
2017-05-25T07:01:10.695733Z 0 [Note] InnoDB: Trx id counter is 5888
2017-05-25T07:01:10.700667Z 0 [Note] InnoDB: Last MySQL binlog file position 0 62744449, file name ray-bin.000007
2017-05-25T07:01:10.806383Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2017-05-25T07:01:10.806472Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
|
這裡看到 581632 row operations to undo,因為回滾了資料,所以啟動時間會加長,如果回滾資料非常多,啟動時間就會很慢。
重新做一次實驗,innodb_force_recovery設定為3.
[root@mysql5-7 ~]# ps aux | grep mysql
root 4585 0.0 0.1 126640 3004 pts/1 S+ 14:55 0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock
root 5884 0.0 0.0 100952 612 pts/2 S+ 15:00 0:00 tail -f /data/3306/logs/mysql_ray.err
root 5916 0.0 0.0 106244 1456 pts/3 S 15:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
mysql 6546 7.3 21.7 2269272 417740 pts/3 Sl 15:01 0:19 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --socket=/data/3306/soket/mysql.sock --port=3306
root 6586 0.0 0.0 103260 836 pts/3 S+ 15:05 0:00 grep mysql
[root@mysql5-7 ~]# kill -9 5916
[root@mysql5-7 ~]# kill -9 6546
[root@mysql5-7 ~]# ps aux | grep mysql
root 4585 0.0 0.1 126640 3004 pts/1 S+ 14:55 0:00 mysql -uroot -px xxxx -S /data/3306/soket/mysql.sock
root 5884 0.0 0.0 100952 612 pts/2 S+ 15:00 0:00 tail -f /data/3306/logs/mysql_ray.err
root 5916 0.0 0.0 106244 1456 pts/3 S 15:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
mysql 6546 7.3 21.7 2269272 417740 pts/3 Sl 15:01 0:19 /usr/local/mysql/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/3306/logs/mysql_ray.err --open-files-limit=10240 --pid-file=/data/3306/logs/ray.pid --socket=/data/3306/soket/mysql.sock --port=3306
root 6586 0.0 0.0 103260 836 pts/3 S+ 15:05 0:00 grep mysql
[root@mysql5-7 ~]# kill -9 5916
[root@mysql5-7 ~]# kill -9 6546
2017-05-25T07:06:05.298605Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2017-05-25T07:06:05.299344Z 0 [Note] InnoDB: 5.7.10 started; log sequence number 805301564
2017-05-25T07:06:05.299424Z 0 [Note] InnoDB: !!! innodb_force_recovery is set to 3 !!!
2017-05-25T07:06:05.300353Z 0 [Note] Plugin 'FEDERATED' is disabled.
2017-05-25T07:06:05.302471Z 0 [Note] Recovering after a crash using /data/3306/logs/ray-bin
2017-05-25T07:06:05.302981Z 0 [Note] InnoDB: Loading buffer pool(s) from /data/3306/data/ib_buffer_pool
2017-05-25T07:06:05.303049Z 0 [Note] InnoDB: not started
2017-05-25T07:06:05.305844Z 0 [Note] Starting crash recovery...
2017-05-25T07:06:05.305926Z 0 [Note] Crash recovery finished.
|
因為沒有進行回滾,所以啟動很快就完成了。但是使用者應當小心當前資料庫的狀態,並自己確認是否不需要回滾事務的操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2139869/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL修復壞塊引數innodb_force_recovery的解釋MySql
- Laravel setting 設定 / 系統設定 / 網站設定Laravel網站
- win10電腦 tls安全設定怎麼設定為預設設定Win10TLS
- 如何設定 HomePod?HomePod設定教程分享
- Jenkins定時設定Jenkins
- scrapy預設設定
- 【案例】利用innodb_force_recovery解決MySQL伺服器crash無法重啟問題MySql伺服器
- 【案例】利用innodb_force_recovery 解決MySQL伺服器crash無法重啟問題MySql伺服器
- Pycharm 設定PyCharm
- 路由設定路由
- webstorm設定WebORM
- vim設定
- 設定NFSNFS
- MTU設定
- 設定 sar
- crontab 設定
- EVENTS設定
- 設定dhcpd
- 設定tftpFTP
- cfosspeed設定
- STS設定
- linux設定埠轉發(一鍵設定)Linux
- 設定鎖定預設瀏覽器為IE瀏覽器
- 程式碼設定RelativeLayout相對位置設定
- DISPLAY 尚未設定。請設定 DISPLAY 後重試。
- 4.2.10.2 設定和取消設定環境變數變數
- iphone設定iphone資料夾背景透明設定教程iPhone
- Oracle的NLS_DATE_FORMAT設定(日期格式設定)OracleORM
- SQL *Plus設定login.sql登入設定SQL
- Oracle CSS的引數設定 心跳時間設定OracleCSS
- java設定-JDK環境變數的設定(轉)JavaJDK變數
- 自定義滑鼠設定-中鍵設定為後退
- java定時框架:表示式設定Java框架
- 羅技滑鼠永久宏定義設定
- 如何設定vimrc?
- css字型設定CSS
- wsl設定ssh
- 深色模式設定模式