我需要將 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
我注意到,只需存取資料庫就會導致這些資料庫被更新。
我的問題是:
如果我只移動客戶資料庫(到單獨的磁碟),並且系統磁碟丟失並且需要從頭開始重新創建,是否會丟失任何內容?
我是否最好將所有資料庫(包括(mysql、performance_schema 和 sys))移到單獨的磁碟?
我是否最好將整個資料目錄移至單獨的磁碟,透過 /etc/mysql/mysql.conf.d/mysqld.cnf 中的“datadir”變數指向它?
有何影響不是如果系統碟遺失,可以使用選項3嗎?
答案1
最好將 MySQL 的所有表移到另一個磁碟。任何分裂“客戶”的嘗試都會增加複雜性並使您的目標變得困難。 (如果這成為要求,我們可以進一步討論。)
本質上,這樣的移動留下的唯一檔案是設定檔。您提到過/etc/mysql/mysql.conf.d/mysqld.cnf
,但那裡可能還有其他設定檔。
其他地方是一個更大的目錄,其中包含一堆文件,以及與您創建的“資料庫”相對應的子目錄。我只需移動整棵樹即可。如果您使用的是基於 Linux 的作業系統,請使用從舊位置到新位置的符號連結。不需要顯式的配置變更。
然後,如果任一磁碟崩潰,您將無法存取資料。我的觀點是,使用文件和目錄並不一定會讓您更接近“安全”。
相反,重點關注備份。和/或“複製”。後者需要額外的伺服器並提供資料的完整副本。然後,如果任一伺服器崩潰,您也不會遺失任何內容。
LVM 是另一種備份技術;擁有資料庫磁碟的好處。但這增加了很多複雜性。
建議你多讀書,保持開放的心態。你會發現很多與你的想法直接相符的東西。