Linux下MySQL的備份和恢復

MySQL備份的原因


 1. 災難恢復
 2. 審計 
 3. 測試

MySQL的備份類型


 1. 根據服務器的在線狀態:
    熱備:服務器處於運行狀態
    冷備:服務器出去停止狀態
    溫備:服務器處於半離線狀態,只能讀,但是不能寫
 2. 根據備份的數據集:
    完全備份:備份整個數據庫
    部分備份:備份某個表
 3. 根據備份時的接口:
    物理備份:直接將數據庫文件從磁盤上複製出來
    邏輯備份:把數據從數據庫中提取出來備份成文本文件
 4. 根據數據量進行備份:
    完全備份:備份從創建數據庫到目前爲止的數據
    增量備份:備份從上次進行完全備份結束到目前爲止的數據
    差異備份:

MySQL備份對象

數據+配置文件+代碼(存儲過程等)+os相關的配置文件(如crontab配置計劃及腳本)

使用mysqldump工具進行數據備份和恢復


 1. mysqldump命令格式
    a.備份多個或者一個數據庫
    mysqldump [option] --database db_name1 db_name2...
    b.備份某個數據庫中的某張表
    mysqldump [option] db_anme table1 tables2 ...
    c.備份全部數據庫
    mysqldump [option] --alldatabases
 2. option
    -u user:指定以哪個用戶的身份進行備份
    -p password:指定用戶的密碼
    -h host:指定備份的數據庫

    --local-all-tables:請求鎖住所有備份的表
    --local-tables:備份那張表鎖住那張表
    --single-transaction:能夠對InnoDB存儲引擎實現熱備。(不常用)

    --events:備份事件調度器
    --routines:備份存儲過程和存儲函數
    --triggers:備份觸發器

    --flush-log:備份前,請求到鎖之後滾動日誌

 3. 常用備份格式
    mysqldump -uroot -p -h --database|db_name|--all-databases db_name|table --local-tables --flush-log

 4. 恢復備份
    a.關閉當前session的sql_log_bin
    b.mysql<source /path/*.sql
    c.開啓二進制文件日誌

mysqldump備份測試

備份數據庫wordpress
庫中表的列表
mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

  1. 備份整個數據庫
    這裏寫圖片描述
    這裏寫圖片描述
  2. 還原剛纔備份的數據庫
    這裏寫圖片描述
    這裏寫圖片描述

使用xtrabackup工具進行備份


 1. 下載安裝xtrabackup
     [root@www ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm
     [root@www ~]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64//libev-4.03-3.el6.x86_64.rpm
     [root@www ~]# yum install libev-4.03-3.el6.x86_64.rpm 
     [root@www ~]# yum install --skip-broken percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm 

 2. 備份後生成的文件
    xtrabackup_checkpoints:記錄備份類型,備份狀態,lsn(日誌序列號)等信息。
    xtrabackup——binary:備份中用到的xtrabackup的可執行文件
    xtrabackup_binlog_info:當前服務器正在使用的二進制日誌文件及備份道這一刻的時間位置
    xtrabackup_binlog_pos_innodb:二進制文件的但前position
    backup_my.cnf:備份命令用到的配置選項信息。

1. 完全備份和恢復

格式:>innobackupex --user=  --password= --apply-log /path/to/back_dir/
結果:completes ok!

測試完整備份數據庫
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

測試恢復

格式:
    >innobackupex --user= --password= --copy-back /path/to/back_dir/

這裏寫圖片描述

創建新文件講原有數據庫全部移到目錄下
這裏寫圖片描述
恢復
這裏寫圖片描述
這裏寫圖片描述

增量備份

格式:
    #innobackupex --incremental /path/to/back_dir --incremental-basedir=以那個備份文件僞基礎
還原:將增量備份整合道完全備份上去
    先準備完全備份:
        #innobackupex --apply-log --redo-only   完全備份路僅(base-dir)
    在準備第一次增量備份:
        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=one_base_dir
    在準備第二次增量備份:
        #innobackupex --apply-log --redo-only  base-dir --incremental-dir=two_base_dir
        ..
        ..      。

恢復:
    >innobackupex --copy-back base-dir

a.第一次完整備份
這裏寫圖片描述

操作數據庫增加數據
這裏寫圖片描述

第一次增量備份
這裏寫圖片描述
這裏寫圖片描述

準備完全備份
這裏寫圖片描述

準備第一次增量備份文件
這裏寫圖片描述

恢復
這裏寫圖片描述

結果
這裏寫圖片描述
這裏寫圖片描述

xtrabackup進行表的導入和導出

在進行表的導出時,需要啓用服務器的innodb_file_per_table這個選項。
在進行表的導入時,需有啓用服務器的innodb_file_per_table和innodb_expand_import選項
導出表
    innobackupex --apply-log --export /path/base_dir
    此命令會爲每個innodb表空間創建一個.exp結尾的文件,這個文件可以導入其他服務器
導入表:
    1,在服務器上創建一個與此結構相同的表。
    2,然後刪除此表的表空間:
        alter table 表 discard tablespace;
    3,將.exp文件複製到數據庫服務器的數據目錄中,然後進行一下命令:
        alter table 表 import tablespace;
發佈了45 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章