基於文件系統邏輯卷LVM快照備份

LVM快照備份原理圖mysql

wKiom1N-Zk7A7vdXAAGgmYAPF1k602.jpg

 

2.1 LVM: 幾乎熱備、物理備份,加讀鎖,直接備份原卷,那麼你就得等備份操做完成後才能解鎖.sql

2.2LVM快照就是備份完成就能夠解鎖,速度極快,這就是爲何是幾乎熱備的緣由數據庫

2.3前提:innoDB引擎的事務日誌必須跟數據文件在同一個LV捲上;ibdata1 ib_logfile0 ib_logfile1若分開則建立快照時間點不一致,備份數據不一致,建立備份無心義。快照只能對邏輯卷LVM進行備份,而且只能對同一個卷組的邏輯捲進行備份。innoDB最好每表一空間緩存

   備份操做步驟:app

   1.創建lvm卷組myvg-mydata,掛載到/mydata/dataide

   [root@station253 ~]# lvcreate -L 2G -n mydata /dev/mapper/myvg-mydataspa

   Logical volume "mydata" created日誌

   2.初始化Mysql將數據目錄指向/mydata/data並創建數據庫blog

   3.同步日誌並加讀鎖,不要關閉終端,不然鎖將失效,滾動日誌事務

    mysql> SET sync_binlog=1; 未提交事務日誌馬上寫入文件

    mysql> SET sql_log_bin=0; 關閉二進制日誌

    mysql> FLUSH TABLES WITH READ LOCK;  全部表加讀鎖

    mysql> SHOW MASTER STATUS;

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

    | mysql-bin.000002 |     1473 |              |                  |

   4. 新建終端爲數據所在的卷建立快照:目的卷大小爲原卷2倍,目標卷與原卷在同一卷組上;mysqldump是重讀sql文件重執行極慢,lvm snap是在底層文件系統級別複製塊,速度極快;

    [root@station253 ~]# lvcreate -L 4G -n mydata-snap -p r -s /dev/mapper/myvg-mydata

    Logical volume "mydata-snap" created

   5.迅速釋放讀鎖

    mysql> UNLOCK TABLES;

   6.掛載快照,拷備出來,卸載快照,刪除快照

    [root@station253 ~]# mount /dev/mapper/myvg-mydata-snap /snap

    [root@station253 ~]# cp -aR /snap/* /backup 

    [root@station253 ~]# umount /snap

    [root@station253 ~]# lvremove/dev/mapper/myvg-mydata-snap

  7.模擬數據庫崩潰,注意快照回來修正數據庫屬組屬主,不然mysqld沒法啓動

    [root@station253 ~]# servivce mysqld stop

    [root@station253 ~]# rm -R /mydata/data/*  

    [root@station253 ~]# cp -aR /backup /* /mydata/data

    [root@station253 ~]# chown -R mysql.mysql /mydata/data

    [root@station253 ~]# servivce mysqld start

  8. 恢復後馬上重作未提交事務,打開二進制日誌

    mysql> SHOW MASTER STATUS;

    mysql> SET sync_binlog=1; 未提交事務日誌馬上寫入文件

    mysql> SET sql_log_bin=1;

    mysql> SHOW MASTER STATUS;

  恢復時需注意問題:innodb引擎啓動數據庫時,由於有buffer pool緩存存在會對未提交事務回滾、已提交的事務同步到磁盤文件,有崩潰恢復過程。

相關文章
相關標籤/搜索