標籤:使用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資料庫