從MySQL冷備說起 MySQL 冷備、也叫離線備份 是最簡單: ● 備份簡單:只要拷貝相關文件即可 ● 恢復簡單:只需把拷貝的文件放在同一個目錄即可 也是最安全: ● 獲取數據一致性副本的方法中最優的一種 那麼、該備份哪些文件呢?下面以InnoDB 為例: ① frm 文件 表結構定義文件、不過、視圖的定義也在裡面 ② 共享表空間文件 缺省是、ibdata1、如果之後調整、記得把之前ibdata1刪掉、否則會報錯 受制於 2 個參數: ● innodb_data_home_dir ● innodb_data_file_path [plain] mysql> show variables like '%data%'; +----------------------------+------------------------------------+ | Variable_name | Value | +----------------------------+------------------------------------+ | character_set_database | latin1 | | collation_database | latin1_swedish_ci | | datadir | /home/mysql/mysql/data/ | | innodb_data_file_path | ibdata1:50M;ibdata2:50M:autoextend | | innodb_data_home_dir | /home/mysql/mysql/ibdata | ③ 獨立表空間文件(*.ibd) 受制於 2個參數 ● innodb_file_per_table ● datadir <==這是個全局參數、好像很多文件都和他有染 ④ 重做日志文件 缺省會有 2 個:ib_logfile0 和 ib_logfile1 被 4 個參數影響: ● innodb_log_file_size:日志成員的大小 ● innodb_log_files_in_group:日志成員的數量 ● innodb_mirrored_log_groups:日志組的數量 ● innodb_log_group_home_dir:日志組的路徑 ⑤ 配置文件 my.cnf或my.ini 友情提醒: ① 如果設立了獨立表空間、共享表空間仍然需要備份!因為、 獨立表空間僅存儲數據、索引等信息、其余的依然放在共享表空間 ② 如果以上參數都是默認、僅僅只是設置了 datadir 、那麼只要備份這個目錄下的文件即可 在備份中、我們需要注意哪些呢? ① 不要遺漏任何上面提到的物理文件 ② 注意磁盤空間的大小 ③ 將本地的備份鏡像一份到遠程 有個小技巧、 如果覺得 關閉服務器來做冷備 代價太大、而且、預熱也慢、那麼可以、 kill -19 :發送一個 STOP 信號給 MySQL 、 然後、做備份 然後、再 kill -18發送一個 CONT 信號喚醒 MySQL