[DB][MySQL] DB新舊轉移的注意事項

[DB][MySQL] DB新舊轉移的注意事項

Old New
OS Version Ubuntu 12.04.1 LTS Ubuntu 16.04.5 LTS
DB Version MySQL 5.5.28 MySQL 5.7.23

本次進行新舊DB轉移的過程中發生了一些意想不到的情況,已下紀錄相關問題及排除過程

  • 問題1

    不要被設定檔的預設值給騙了!

    這個真的是個超級大黑坑,新舊版的設定檔名稱預設都一樣,所以如果沒注意到以為其實新舊版的參數名稱都一樣的話那就大錯特錯了= =

  • 問題2

    新主機的Loading很容易會飆高,但是新主機的硬體規格比舊主機還要好,為什麼會這樣呢?

    後來查到MySQL預設的連線數量是有設定的,例如每個帳號的連線數量就是無限制,DB連線數量最大是214,檔案開啟數量則是1024等,也由於預設值的關係造成當DB連線數會很容易達到最大上限值,造成主機的負荷量提高,有趣的是當我們在/etc/mysql/mysql.conf.d/mysqld.cnf的設定檔中設定了max_connections=700,max_user_connections=600的時候,卻發現MySQL的最大連線數還是在214,這邊紀錄問題排除過程





  • 問題3

    連線數過高除了上述提高DB的連線量之外,還有一種方式就是限制每個DB帳號的連線數量,MySQL預設是開無限制,所以需要透過指令或GUI介面來修改,這邊紀錄指令的方式

  • 問題4

    上述的部分調整都需要重啟或重載DB的設定檔才能成功,但目前因為Sleep的Process數量太多,DB處理不過來後只好繼續開新的Process,短時間內想要改善Server的話可以使用製作程式的方式來砍掉全部正在Sleep的Process

Reference

開啟 slow query log, 儲存執行慢的 MySQL 語句

mysql 5.7 unknown variable ‘log_slow_queries=/var/log/mysql/mysql-slow.log’

MySQL的最大連線數一直被設成214

Set Limit for open files for MySQL on Ubuntu 16.04 with systemd

Raising the Maximum Number of File Descriptors (Open Files) on Ubuntu 14.04 Trusty

修改UBUNTU ULIMIT限制

How to permanently raise ulimit ‘open files’ and MySQL ‘open_files_limit’

Cannot set limit of MySQL open-files-limit from 1024 to 65535

MySQL values open_files_limit and max_connections are not applied

Ubuntu 16.04 Server MySql open_file_limit won’t go higher than 65536

Understanding /etc/security/limits.conf file

查詢與設定 Linux 使用者可開啟的行程數量上限值,限制開啟程式的數目

提高 MySQL 的 open files limit

How to set ulimit values

How to Increase Number of Open Files Limit in Linux

How to get rid of “maximum user connections” error ?

Shell Script to auto kill mysql sleep processes

Add a Comment