mysqldump的備份與恢復

MySQL(05)

備份策略:
    完全+差異+binlog(時間點還原)
    完全+增量+binlog

    備份,多久一次?
        數據變化量;
        可用的備份存儲空間;


    mysqldump:
        邏輯備份、完全備份、部分備份;
        二次封裝工具:
            mydumper
            phpMyAdmin

                    Usage: 
            mysqldump [OPTIONS] database [tables]
            OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
            OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

        MyISAM存儲引擎:支持溫備,備份時要鎖定表;
            -x, --lock-all-tables:鎖定所有庫的所有表,讀鎖;
            -l, --lock-tables:鎖定指定庫所有表;

        InnoDB存儲引擎:支持溫備和熱備;
            --single-transaction:創建一個事務,基于此快照執行備份;

        其它選項:
            -R, --routines:存儲過程和存儲函數;
            --triggers 
            -E, --events      

             --master-data[=#]
                1:記錄為CHANGE MASTER TO語句,此語句不被注釋;
                2:記錄為CHANGE MASTER TO語句,此語句被注釋;

            --flush-logs:鎖定表完成后,即進行日志刷新操作;

    作業:備份腳本

mysqldump備份恢復示例

從lftp上mget一個數據庫腳本hellodb.sql,導入到數據庫中,刪除導入數據庫的腳本,如何自己備份。

mysqldump的備份與恢復

目前沒有create databases語句,因為我們備份時直接指明了hellodb,這表式的意思是備份hellodb的所有表,而不是備份hellodb數據庫的。

如果要備份數據庫,要使用下面這條語句

mysqldump的備份與恢復

less hellodb.sql.2 查看一下

mysqldump的備份與恢復

這里就有create databases語句,說明整個數據庫被備份下來了 –databses可以備份多個庫,這里只指明了hellodb一個庫

如果想備份所有庫,則使用下面這條語句

mysqldump的備份與恢復

注意:數據太大的不適用mysqldump來備份 如果我們只備份一個庫,這個庫里面的所有表都是InnoDB存儲引擎的話,可以使用熱備,–single-transaction。MyISAM存儲引擎的話,只能支持溫備了。

備份時,備份策略:完全+增量+binlog,假如現在做一次完全備份,下次還沒增量數據庫就掛了,所有只能用完全+binlog來恢復,完全備份那一個,數據恢復回來了,binlog從哪一刻開始放,binlog是各種寫語句,應該從備份那一刻之后的內容,把備份開始之后所發生的所有修改語句從放一遍。 如何知道什么時候開始備份:自動備份那一刻必須要記錄下來,binlog正在處在哪個文件哪個privi,

例如

mysqldump的備份與恢復

這時候會報錯,因為服務器上沒啟用bin-log,這時需要修改my.cnf配置文件,啟動二進制方式

mysqldump的備份與恢復

mysqldump的備份與恢復

這時候就能成功備份了。

注意:將來備份不要去覆蓋上一次備份,備份文件例如helldb。sql-20140101

這時候備份文件就多了一條語句

mysqldump的備份與恢復

意思是二進制文件處在master-log.0000001,位置是245,所以下次重放時就基于這個位置進行重放。

如何記錄備份那一刻,二進制文件記錄位置

備份文件要異地另存,可以寫腳本進行自動化進行。備份文件要保留時間戳。

先連入mysql服務器,做一些修改操作

mysqldump的備份與恢復

mysqldump的備份與恢復

這種修改結果通過剛才的備份恢復不行,假如數據庫刪除,通過備份恢復不過來。這時候需要借助二進制文件進行。

mysqldump的備份與恢復

現在恢復

第一準備好備份,第二準備好二進制日志。

二進制文件都在/var/log/mysql下

mysqldump的備份與恢復

這里上次備份就只有一個二進制文件,從第一個位置開始的

使用mysqlbinlog命令

mysqldump的備份與恢復

這里會有一個問題,最后一個drop database hellodb,剛放上來,又刪除掉了,不要讀這個語句。

mysqldump的備份與恢復

從這里開始定義

mysqldump的備份與恢復

這時,drop database hellodb這臺語句就不會出現了。

把截取后的二進制文件內容保存在一個腳本中

[root@ zhoushuang2  ~]# mysqlbinlog –stop-position=785  /var/lib/mysql/master-log.000001 > /tmp/mylog.sql

注意:這些都是腳本,通過讀進行裝載

第二個:hellodb.sql.2這個文件,先放到tmp下

[root@ zhoushuang2  ~]# cp hellodb.sql.2 /tmp/hellodb.sql

基于lvm2的備份:

    前提:數據目錄位于邏輯卷,包含了數據文件和事務日志;

    (1) 請求鎖定所有表;
        mysql> FLUSH TABLES WITH READ LOCK;

    (2) 記錄二進制文件事件位置;
        mysql> FLUSH LOGS;
        mysql> SHOW MASTER STATUS;

        mysql  -e  'SHOW MASTER STATUS;' >> /PATH/TO/SOME_POS_FILE

    (3) 創建快照卷
        lvcreate  -L # -s -p r - SNAM-NAME /dev/VG-NAME/LV-NAME 

    (4) 釋放鎖
        mysql> UNLOCK TABLES

    (5) 掛載快照卷,并執行備份,備份完成后刪除快照卷;

    (6) 周期性備份二進制日志;

接下來連接到mysql上開始恢復

1、先把二進制功能給關掉

mysqldump的備份與恢復

2、進行恢復

mysqldump的備份與恢復

這時恢復的是初始數據,后面改的沒有

mysqldump的備份與恢復

再次執行操作

mysqldump的備份與恢復

再次執行發現數據都恢復了

mysqldump的備份與恢復

再把二進制功能開啟

mysqldump的備份與恢復

這就是完整的備份和恢復過程

每次備份完,給自己發一封郵件

原創文章,作者:15152188070,如若轉載,請注明出處:http://www.www58058.com/60155

(0)
1515218807015152188070
上一篇 2016-11-20 17:05
下一篇 2016-11-20 17:55

相關推薦

  • CentOS系統啟動流程、selinux、Systemd剖析

    交互式登錄配置文件讀取順序: /etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc 非交互式登錄配置文件讀取順序: ~/.bashrc –> /etc/bas…

    Linux干貨 2018-03-04
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;        (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [ro…

    2017-04-05
  • Memcache存儲大數據的問題

    Memcache存儲大數據的問題   huangguisu       Memcached存儲單個item最大數據是在1MB內,如果數據超過1M,存取set和get是都是返回false,而且引起性能的問題。 我們之前對排行榜的數據進行緩存,由于排行榜在我們所有sql select…

    Linux干貨 2015-05-05
  • awk 的相關知識

    awk 介紹,基本用法,變量,格式化,操作符,條件判斷,循環,數組,函數等

    2018-01-01
  • Linux運維實戰之5:磁盤分區、格式化

    在網絡系統中,磁盤和文件系統管理是兩個非?;?、同時也是非常重要的管理任務,特別是文件系統管理,因為它與用戶權限和整個網絡系統的安全息息相關。本次博文的主題是關于Linux系統中磁盤分區、格式化及掛載,下次博文我們再詳細討論文件系統管理。 在操作系統中,磁盤管理屬于設備管理的范疇。一塊硬盤安裝到主機之后稱為裸設備,若要能夠在Linux系統中使用必須對其進行如…

    Linux干貨 2016-11-26
  • linux入門基礎知識及簡單命令介紹

    1、計算機硬件組成介紹 計算機主要由cpu(運算器、控制器),內存,I/O,外部存儲等構成。     cpu主要是用來對二進制數據進行運算操作,它從內存中取出數據,然后進行相應的運算操作。不能從硬盤中直接取數據。     內存從外部存儲中取出數據供cpu運存。內存的最小單位是字節…

    Linux干貨 2017-08-28
欧美性久久久久