mysql,重新定位單一資料庫與整個資料目錄

mysql,重新定位單一資料庫與整個資料目錄

我需要將 mysql 客戶資料庫重新定位到另一個磁碟,目的是:

 1. Separation of user data from system files
 2. Ease of backing up system and user data separately
 3. Ease of upgrading the system

以下文章很有幫助:

  [how-to-move-mysql-datadir-to-another-drive][1]
  [move-a-mysql-database-to-another-location][2]

在 ubuntu-18 系統上運行,預設設定了 innodb_file_per_table 變數:

mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_%';
...
| innodb_file_per_table                    | ON 
...

(沒有 GLOBAL 的結果相同)

我找不到任何在任何設定檔中引用 innodb_file_per_table ;唯一包含很多內容的文件是

  /etc/mysql/mysql.conf.d/mysqld.cnf

我擔心文件中仍儲存什麼內容

  /var/lib/mysql/ibdata1
                /ib_logfileN

我注意到,只需存取資料庫就會導致這些資料庫被更新。

我的問題是:

  1. 如果我只移動客戶資料庫(到單獨的磁碟),並且系統磁碟丟失並且需要從頭開始重新創建,是否會丟失任何內容?

  2. 我是否最好將所有資料庫(包括(mysql、performance_schema 和 sys))移到單獨的磁碟?

  3. 我是否最好將整個資料目錄移至單獨的磁碟,透過 /etc/mysql/mysql.conf.d/mysqld.cnf 中的“datadir”變數指向它?

  4. 有何影響不是如果系統碟遺失,可以使用選項3嗎?

答案1

最好將 MySQL 的所有表移到另一個磁碟。任何分裂“客戶”的嘗試都會增加複雜性並使您的目標變得困難。 (如果這成為要求,我們可以進一步討論。)

本質上,這樣的移動留下的唯一檔案是設定檔。您提到過/etc/mysql/mysql.conf.d/mysqld.cnf,但那裡可能還有其他設定檔。

其他地方是一個更大的目錄,其中包含一堆文件,以及與您創建的“資料庫”相對應的子目錄。我只需移動整棵樹即可。如果您使用的是基於 Linux 的作業系統,請使用從舊位置到新位置的符號連結。不需要顯式的配置變更。

然後,如果任一磁碟崩潰,您將無法存取資料。我的觀點是,使用文件和目錄並不一定會讓您更接近“安全”。

相反,重點關注備份。和/或“複製”。後者需要額外的伺服器並提供資料的完整副本。然後,如果任一伺服器崩潰,您也不會遺失任何內容。

LVM 是另一種備份技術;擁有資料庫磁碟的好處。但這增加了很多複雜性。

建議你多讀書,保持開放的心態。你會發現很多與你的想法直接相符的東西。

相關內容