高性能MySQL-筆記7-備份與恢復

高性能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,有簡單栗子】

對,就這麼點東西,其他的內容,很多都是推薦工具,不建議使用。需要的情況請去搜索最新工具使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章