MySQL數據庫邏輯和物理備份
邏輯備份
法1: 生成特定格式的純文本
www.2cto.com
SELECT * INTO OUTFILE 'F:\data.txt' FIELDS TERMINATED BY ',' FROM g_user
LOAD DATA INFILE 'F:\data.txt' INTO TABLE g_user FIELDS TERMINATED BY ','
IGNORE number LINES
如果你沒有指定一個 FIELDS 子句,缺省的相同於如果你這樣寫:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
如果你沒有指定一個 LINES 子句,缺省的相同於如果你這樣寫:
LINES TERMINATED BY '\n'
發2:生成Insert語句備份
利用工具mysqldump
物理備份
MyISAM 存儲引擎
MyISAM 存儲引擎的所有數據都存放在MySQL 配置中所設定的“datadir”目錄下。實際上不管我們使用的是MyISAM 存儲引擎還是其他任何存儲引擎,每一個數據庫都會在“datadir”目錄下有一個文件夾(包括系統信息的數據庫mysql 也是一樣)。在各個數據庫中每一個MyISAM 存儲引擎表都會有三個文件存在,分別為記錄表結構元數據的“.frm”文件,存儲表數據的“.MYD”文件,以及存儲索引數據的“.MYI”文件。由於MyISAM 屬於非事務性存儲引擎,所以他沒有自己的日志文件。所以MyISAM 存儲引擎的物理備份,除了備份MySQL 系統的共有物理文件之外,就只需要備份上面的三種文件即可。
www.2cto.com
Innodb 存儲引擎
Innodb 存儲引擎屬於事務性存儲引擎,而且存放數據的位置也可能與MyISAM 存儲引擎有所不同,這主要取決於我們對Innodb 的“”相關配置所決定。決定Innodb 存放數據位置的配置為“ innodb_data_home_dir ” 、“innodb_data_file_path ” 和“innodb_log_group_home_dir”這三個目錄位置指定參數,以及另外一個決定Innodb 的表空間存儲方式的參數“innodb_file_per_table”。前面三個參數指定了數據和日志文件的存放位置,最後一個參數決定Innodb 是以共享表空間存放數據還是以獨享表空間方式存儲數據。這幾個參數的相關使用說明我們已經在第一篇的“MySQL 存儲引擎介紹”中做了相應的解釋,在MySQL 的官方手冊中也有較為詳細的說明,所以這裡就不再累述了。
如果我們使用了共享表空間的存儲方式, 那麼Innodb 需要備份備份“innodb_data_home_dir”和“innodb_data_file_path”參數所設定的所有數據文件,“datadir”中相應數據庫目錄下的所有Innodb 存儲引擎的“.frm”文件;
而如果我們使用了獨享表空間,那麼我們除了備份上面共享表空間方式所需要備份的所有文件之外,我們還需要備份“datadir”中相應數據庫目錄下的所有“.idb”文件,該文件中存放的才是獨享表空間方式下Innodb 存儲引擎表的數據。 www.2cto.com
此外,除了上面所說的數據文件之外,Innodb 還有自己存放redo 信息和相關事務信息的日志文件在“innodb_log_group_home_dir”參數所設定的位置。所以要想Innodb 物理備份能夠有效使用,我們還比需要備份“innodb_log_group_home_dir”參數所設定的位置的所有日志文件。
FLUSH TABLES WITH READ LOCK;
物理備份,你懂得
UNLOCK TABLES;
備份策略
重要的內容物理備份
然後其他邏輯備份
作者 bengda