1. 程式人生 > 其它 >Confulence 提示InnoDB日誌檔案大小太小的警告,修改 innodb_log_file_size

Confulence 提示InnoDB日誌檔案大小太小的警告,修改 innodb_log_file_size

Linux: Centos7.9

1.systemctl stop mariadb

2.轉移logfile,(先轉移到別的目錄下備份,等後面重啟mysql會自己重新生成)

cd /var/lib/mysql

mv ib_logfile* /mnt/backup_mysql

mv aria_log*/mnt/backup_mysql

3.vim /etc/my.cnf增加 innodb_log_file_size=512M

4.systemctl restart mariadb

5.登入web檢查

參考資料

1.瞭解innodb_log_file_size引數(本段引自博文:https://blog.csdn.net/kai404/article/details/80242262)

  MySQL的InnoDB 儲存引擎使用一個指定大小的Redo log空間(一個環形的資料結構),Redo log的空間通過innodb_log_file_size和innodb_log_files_in_group(預設為2)引數來調節。將這倆引數相乘即可得到總的可用Redo log 空間。儘管技術上並不關心你是通過innodb_log_file_size還是innodb_log_files_in_group來調整Redo log空間,不過多數情況下還是通過innodb_log_file_size 來調節。

  為InnoDB引擎設定合適的Redo log空間對於寫敏感的工作負載來說是非常重要的,然而,這項工作是要做出權衡的。配置的Redo空間越大,InnoDB就能更好的優化寫操作;然而,增大Redo空間也意味著更長的恢復時間當出現崩潰或掉電等意外時。

  關於恢復時間,並不好預測對於一個指定的 innodb_log_file_size 值出現崩潰是需要多長的恢復時間–他取決於硬體能力、MySQL版本以及工作負載等因素。然而,一般情況下我們可以按照每1GB的Redo log的恢復時間大約在5分鐘左右來估算。如果恢復時間對於你的使用環境來說很重要,我建議你做一些模擬測試,在正常工作負載下(預熱完畢後)模擬系統崩潰,來評估更準確的恢復時間。

  雖然恢復時間可以作為一個限制innodb_log_file_size的參考因素,也還有一些別的方式可以觀察該引數設定是否“合理”。

2.修改innodb_log_file_size引數

  MySQL變數分為全域性系統變數和會話系統變數(全域性系統變數影響伺服器的全域性操作,會話變數隻影響具體客戶端連線相關操作),innodb_log_file_size是全域性系統變數,SET GLOBAL var_name語句可以動態更改部分全域性變數的值,動態修改的引數在MySQL服務重啟後會失效,只有寫入配置檔案才能夠重啟後仍有效。對於一些無法動態修改的引數,只能通過修改配置檔案,然後重啟來使之生效,比如innodb_log_file_size。

  這裡為了跟專案對應的uat和生產環境innodb_log_file_size引數值一致,這裡設定為1500M。

--修改前
mysql:[(none)] 15:56:32> show variables like 'innodb_log_file_size';
+----------------------+----------+
| Variable_name | Value |
+----------------------+----------+
| innodb_log_file_size | 50331648 |
+----------------------+----------+
1 row in set (0.00 sec)

mysql:[(none)] 15:56:32> select 50331648/1024/1024;
+--------------------+
| 50331648/1024/1024 |
+--------------------+
| 48.00000000 |
+--------------------+
1 row in set (0.00 sec)

--開始修改
[root@chengyu ~]# /etc/init.d/mysql stop
[root@chengyu ~]# mv /home/mysql/data/ib_logfile* /home/
[root@chengyu ~]# vim /etc/my.cnf
innodb_log_file_size=1500M
[root@chengyu ~]# /etc/init.d/mysql start

--修改後
mysql:[(none)] 15:56:32> show variables like 'innodb_log_file_size';
+----------------------+------------+
| Variable_name | Value |
+----------------------+------------+
| innodb_log_file_size | 1572864000 |
+----------------------+------------+
1 row in set (0.00 sec)

mysql:[(none)] 15:56:32> select 1572864000/1024/1024;
+----------------------+
| 1572864000/1024/1024 |
+----------------------+
| 1500.00000000 |
+----------------------+
1 row in set (0.00 sec)

測試環境innodb_log_file_size引數值修改完畢

本文來自希曼部落格-www.ximan.tech,作者:希曼部落格,轉載請註明原文連結:https://www.cnblogs.com/lihuaichen/p/15244245.html