使用lvm-snapshot備份mysql資料庫

來源:互聯網
上載者:User

標籤:使用lvm-snapshot備份mysql資料庫

前提要求:

交易記錄跟資料檔案必須在同一個卷上;

建立快照卷之前,要請求MySQL的全域鎖;在快照建立完成之後手動釋放鎖;

請求全域鎖完成之後,做一次日誌滾動;做二進位記錄檔及位置標記(手動進行);


1、為資料施加讀鎖,滾動二進位記錄檔並記錄當前二進位檔案起始時間段:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/53/C4/wKioL1RvSi_D4vfuAAFtKk5G1DY490.jpg" title="1.jpg" alt="wKioL1RvSi_D4vfuAAFtKk5G1DY490.jpg" />

2、做快照;

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/C6/wKiom1RvSoDiv_mdAABmlT0HCyc181.jpg" title="1.jpg" alt="wKiom1RvSoDiv_mdAABmlT0HCyc181.jpg" />

3、釋放讀鎖:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/C4/wKioL1RvSx7D11F2AAAutnKi6FY453.jpg" title="1.jpg" alt="wKioL1RvSx7D11F2AAAutnKi6FY453.jpg" />

4、掛載快照,將快照裡面的資料複製出來,並刪除快照:

[[email protected] mydata]# mount /dev/VG/mysql  /mnt/ -o ro

[[email protected] mydata]# mkdir /mysqlback

[[email protected] mydata]# cp -a /mnt/ /mysqlback/20141121

[[email protected] mydata]# umount /mnt/

[[email protected] mydata]# lvremove  /dev/VG/mysql

Do you really want to remove active logical volume mysql? [y/n]: y

  Logical volume "mysql" successfully removed


5、向一個表插入資料是資料發生改變,要在最後使用二進位日誌恢複此資訊。

mysql> INSERT INTo  newtb values(‘jack‘);

Query OK, 1 row affected (0.01 sec)

mysql> select * from newtb;

+------+

| Name |

+------+

| tom  |

| jack |

+------+

2 rows in set (0.00 sec)

6、結合之前記錄的二進位日誌開始時間匯出成一個檔案

[[email protected] mydata]# mysqlbinlog  --start-position=107  mysql-bin.000011  > /tmp/20141121.sql

7、將資料庫停止,刪除資料,嘗試恢複資料

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/C6/wKiom1RvTj2gy3E0AAJsJ4-Pw4g601.jpg" title="1.jpg" alt="wKiom1RvTj2gy3E0AAJsJ4-Pw4g601.jpg" />

8、啟動mysql服務並查看資料是否恢複:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/C6/wKiom1RvTrjR7p6fAAM4fDuE2lU178.jpg" title="1.jpg" alt="wKiom1RvTrjR7p6fAAM4fDuE2lU178.jpg" />

9、使用二進位日誌恢複後來建立的使用者:

mysql> source /tmp/20141121.sql;

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/53/C4/wKioL1RvUK7zh8yUAAA5lIuAUOw949.jpg" title="1.jpg" alt="wKioL1RvUK7zh8yUAAA5lIuAUOw949.jpg" />


總結:

備份過程:

1、對MySQL資料庫了施加讀鎖,防止在備份過程中有使用者插入資料而導致備份後的資料不一致

2、復原日誌,使目前狀態的資料做一個完整的備份,之後的資料用二進位日誌恢複

3、使用SHOW MASTER STATUS命令記錄日誌的開始時間

4、使用lvcreate命令對lv做快照

5、去除讀鎖


恢複過程:

6、將建立好的lv快照掛載到目錄,並將裡面的資料複製出來

7、卸載快照、再刪除快照

8、將從快照式複寫出來的資料複製到/data/mydata

9、使用mysqlbinlog結合之前記錄的開始時間點匯出需要的位元據為一個xx.sql檔案

10、將sql檔案匯入資料庫即完成整改恢複過程

本文出自 “Linux” 部落格,請務必保留此出處http://zhangshijie.blog.51cto.com/806066/1581096

使用lvm-snapshot備份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.