使用lvm-snapshot備份mysql資料庫,lvm-snapshotmysql

來源:互聯網
上載者:User

使用lvm-snapshot備份mysql資料庫,lvm-snapshotmysql

前提要求:

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

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

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


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

2、做快照;

3、釋放讀鎖:

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

[root@localhost mydata]# mount /dev/VG/mysql  /mnt/ -o ro

[root@localhost mydata]# mkdir /mysqlback

[root@localhost mydata]# cp -a /mnt/ /mysqlback/20141121

[root@localhost mydata]# umount /mnt/

[root@localhost 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、結合之前記錄的二進位日誌開始時間匯出成一個檔案

[root@localhost mydata]# mysqlbinlog  --start-position=107  mysql-bin.000011  > /tmp/20141121.sql

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

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

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

mysql> source /tmp/20141121.sql;


總結:

備份過程:

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

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

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

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

5、去除讀鎖


恢複過程:

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

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

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

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

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

歡迎大家訪問我的個人網站 萌萌的IT人

相關文章

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.