MySQL+第三方軟體備份

來源:互聯網
上載者:User

標籤:節點   安裝軟體   libev   密碼   pac   一致性   查看   複數   記錄檔   

一、使用binlog日誌

        binlog日誌:   二進位日誌 MsSQL資料庫服務記錄檔的一種

1、配置好MsQAL伺服器,確保能使用密碼登入

2、調整/etc/my.cnf配置,並重啟服務

        [[email protected] ~]#vim /etc/my.cof

        log-bin-index=mysql-bin                              //啟用二進位日誌,並指定首碼

        server_id=1

        binlog_format=STATEMENT                      //在Mysql5.7中,binlog日誌格式預設為ROW

3、重啟服務

        [[email protected] ~]#systemctl restart mysqld

    

4、查看

        [[email protected] ~]# ls /var/lib/mysql/mysql-bin.*

        /var/lib/mysql/mysql-bin.000001  /var/lib/mysql/mysql-bin.index 

        查看binlog日誌內容

        [[email protected] mysql]# mysqlbinlog mysql-111-bin.000001

    

    重啟MySQL服務程式,會產生一份新的日誌:


 二、利用binlog日誌重做資料庫操作

 

1、執行資料庫表添加操作

    建立db1·庫tb1表,表結構自訂:

        mysql> CREATE DATABASE db1;

        mysql> USE db1;

        Database changed

        mysql> CREATE TABLE tb1(

            -> id int(4) NOT NULL,name varchar(24)

            -> );


2、插入3條表記錄:

        mysql> INSERT INTO tb1 VALUES

            -> (1,'Jack'),

            -> (2,'Kenthy'),

            -> (3,'Bob');

       

3、刪除前一步添加的3條表記錄

      執行刪除所有表記錄操作:

        mysql> DELETE FROM tb1;

 

4、通過binlog日誌恢複表記錄   

      查看mysql-bin.000001日誌內容

        [[email protected] ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000001

        

5、 執行指定Pos節點範圍內的sql命令恢複資料

       註:具體恢複需要看日誌資訊

        [[email protected] ~]# mysqlbinlog \

        --start-datetime="2018-1-20 20:06:55" \ 

        --stop-datetime="2018-1-20 20:07:23" \

        /var/lib/mysql/mysql-bin.000002 | mysql -u root -p       結合管道交給msyql命令執行匯入重做

         Enter password:                                                                 //驗證口令



 6、確認恢複結果 

        mysql> SELECT * FROM db1.tb1;

        +----+--------+    

        | id | name   |

        +----+--------+

        |  1 | Jack   |

        |  2 | Kenthy |

        |  3 | Bob    |

        +----+--------+

        3 rows in set (0.00 sec)


    三、第三方軟體做增量備份  XtraBackup

      1、安裝軟體包

         [[email protected] ~]# rpm -qpi percona-xtrabackup-24-2.4.6-2.el7.x86_64.rpm

         [[email protected] ~]#rpm –ivh libev-4.15-1.el6.rf.x86_64.rpm

      2、   安裝依賴包  

        [[email protected] ~]# yum -y install perl-DBD-MySQL perl-Digest-MD5


    註:如果未安裝這些依賴包,則直接安裝percona-xtrabackup時會報錯:      


       3、確認安裝的主要程式/指令碼

       

            [[email protected] ~]# rpm -ql percona-xtrabackup-24-2.4.6-2.el7.x86_64

            /usr/bin/innobackupex

            /usr/bin/xbcloud

            /usr/bin/xbcloud_osenv

            /usr/bin/xbcrypt

            /usr/bin/xbstream

            /usr/bin/xtrabackup

            ......

            ......


    二、使用XtraBackup執行Database Backup

  

【主要格式】         

--host                          主機名稱

--port                           連接埠

--user                          使用者名稱

--password                 密碼

--databases=            "庫名"

--databases=            "庫1 庫2"

--databases=            "庫.表"

--no-timestamp         不以時間戳記做檔案名稱


 1、做一個完整備份

    [[email protected] ~]# innobackupex --user=root --password=123456  /backup/   –no-timestamp        

    確認備份好的檔案資料:

    [[email protected] ~]#ls /backup/

  

  2、做一個增量備份(基於前一步的完整備份)

        隨意做一些新增或更改庫表的操作,比如在db1庫中建立一個mytb的表:

            mysql> USE db1;

            mysql> CREATE TABLE mytb(id int(4), name varchar(24));

            mysql> INSERT INTO tb1 VALUES

                -> (1,'bon'),

                -> (2,'bo'),

            mysql> SELECT * FROM tb1;

            +------+------+

            | id   | name |

            +------+------+

            |    1 | bob  |

            |    2 | bo   |

            +------+-----

         

    3、 以前一次儲存到/backup的完整備份為基礎,做一個增量備份,儲存到/incr01/   

      

            [[email protected] ~]# innobackupex  --user=root --password=123456  \

             --incremental /incr01 --incremental-basedir=/backup/  --no-timestamp

      查看備份資訊

           [[email protected] ~]# ls /incr01/

              

     4、對比完整備份、增量備份的大小:

            [[email protected] ~]# du -sh /backup/ /incr01/

            142M    /backup/                              //完整備份的大小

            3.5M    /incr01/                              //增量備份的大小

        

   三、準備用於恢複的資料庫目錄       

     1、準備恢複“完整備份”

            完成準備以後,最終/backup可用來重建MySQL伺服器。這種情況下,

            需要先做一個“--apply-log --redo-only ”的準備操作,以確保資料一致性:

       [[email protected] ~]#innobackupex  --user=root --password=123456  \

                             --apply-log  --redo-only /backup/

    2、準備恢複“增量備份”

      [[email protected] ~]#innobackupex  --user=root --password=123456   \

                                 --apply-log  --redo-only /backup/  --incremental-dir=/incr01

      

    3、關閉mysql服務,並將/var/lib/mysql/下的檔案刪除,假設資料被刪除

       [[email protected] ~]#systemctl  stop  mysqld

       [[email protected] ~]#rm -rf /var/lib/mysql

   

    4、恢複“完整備份+增量備份”

        完成準備以後,最終仍然是/backup用來重建MySQL伺服器,

         但這種情況下需提前合并相關增量備份的資料

        [[email protected] ~]# innobackupex --user=root --password=123456 --copy-back  /backup/

      

    5、  修改/var/lib/mysql/下檔案屬主與屬組         

        [[email protected] ~]#chown -R mysql:mysql /var/lib/mysql

        [[email protected] ~]#systemctl  start mysqld.service 

        [[email protected] ~]#mysql -uroot -p123456 -e "select * from db1.tb1"

            +------+------+

            | id   | name |

            +------+------+

            |    1 | bob  |

            |    2 | bo   |

            +------+------+

            

MySQL+第三方軟體備份

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.