高性能MySQL-筆記7-備份與恢復
簡單介紹了一下MySQL的一下備份和複製的情況。
備份
- 物理備份
- 直接複製MySQL下的表文件【實際複製的話,要備份其相關文件】
- 邏輯備份
- 使用
mysqldump
進行邏輯備份 - 其他工具:
mydumper
select into outfile....
語句邏輯備份- 有一些注意項:需要標準字符集,不要覆蓋文件導出
- 使用
- 文件系統快照??
- 使用LVM進行快照的操作。
- 由於快照是操作時對原始數據塊進行復制的,所以是會影響系統讀寫的。
- 注意:快照並不是數據的完整備份,只包含快照之後差異數據塊的備份。
恢復
-
物理備份恢復
- 呀的,就沒說怎麼具體操作的 (ノ`Д)ノ
-
邏輯備份恢復
-
(這個還是有一些的操作提供參考了,不知道是不是真的可以使用 ╮(╯_╰)╭ 就先記一下好了 )
-
-- 處理SQL導出的本文件的恢復,直接執行就可以了 -- 暫時停止對bin-log日誌的寫入 以提高加載數據速度 -- =============== 操作 ===================== set SQL_LOG_BIN = 0 ; SOURCE ***_table_backup.sql; set SQL_LOG_BIN = 1 ; -- ============================================== -- 本以爲這樣就可以掛機等待 sql 文件如期導入了,但是事與願違,當過一段時間在打開時發現命令行提示鏈接超時,等待重新鏈接。 -- 這時候需要再執行以下 sql: -- set global max_allowed_packet=100000000; -- set global net_buffer_length=100000; -- set global interactive_timeout=28800000; -- set global wait_timeout=28800000; -- 以上語句的解釋: -- max_allowed_packet=XXX 客戶端/服務器之間通信的緩存區的最大大小 -- net_buffer_length=XXX TCP/IP 和套接字通信緩衝區大小,創建長度達 net_buffer_length 的行 -- interactive_timeout 對後續起的交互鏈接有效時間 -- wait_timeout 對當前交互鏈接有效時間。
-
-- 處理select into outfile 導出的文件 -- 使用語句 LOAD DATA INFILE -- 對壓縮的數據是用linux管道進行操作,據說會很快 mkfifo /tmp/payment.fifo chmod 666 /tmp/payment.fifo gunzup -c /tmp/payment.txt.gz > /tmp/payment.fifo set SQL_LOG_BIN = 0 ; LOAD DATA INFILE '/tmp/payment.fifo' INTO TABLE ***.payment; set SQL_LOG_BIN = 1 ; -- 書上是有這麼個操作的,反正我是沒用過的 ╮(╯_╰)╭
-
一些的工具
- Percona XtraBacku 的備份工具
- mydumper 多線程備份恢復的工具,用於代替mysqldump
- mysqldump 是最常用通用的工具!!!【630,有簡單栗子】
對,就這麼點東西,其他的內容,很多都是推薦工具,不建議使用。需要的情況請去搜索最新工具使用。