Mysql高效能備份方案解決資料不間斷訪問(LVM快照方式備份)

來源:互聯網
上載者:User

Mysql高效能備份方案解決資料不間斷訪問LVM快照方式備份)

www.rsyslog.org

mysql LVM快照備份特點:

1、在大多數情況下,這種方式幾乎算得上是熱備。它無需關閉服務,只需要設定唯讀或者類似這樣的限制。

2、支援所有基於本地磁碟的儲存引擎,比如MYISAM、InnoDB和BDB,還支援Solid、PrimeXT和Faction。

3、備份速度最快,因為你只需要拷貝相關的位元據檔案即可。

4、由於只是簡單的拷貝檔案,因此對伺服器開銷非常低。

5、儲存方式多種多樣,你可以備份到磁帶上、FTP伺服器上、NFS伺服器上或者其他什麼網路伺服器,以及使用各種網路備份軟體來備份。

做到這些很簡單,說到底就是拷貝檔案而已。

6、恢複速度很快。恢複所需要的時間等於你把資料拷貝回來的時間。你可以想出更多的方法讓這個時間變得更短。

7、無需使用昂貴的商業軟體。

前期準備工作

1、建立LVM分區

更多LVM建立方法請參考 Linux LVM邏輯卷配置過程詳解http://dreamfire.blog.51cto.com/418026/1084729 

 
  1. # lvcreate  -L 3G mysqlvg1 -n mysqllv \\建立大小為3G的邏輯卷mysqllv 
  2.  
  3. # mkfs.ext4 /dev/mysqlvg1/mysqllv  \\格式化邏輯卷 

2、停止mysql服務

 
  1. # /etc/rc.d/init.d/mysqld stop 

3、掛在邏輯卷到臨時目錄/tmp下

 
  1. # mount /dev/mysqlvg1/mysqllv  /tmp/  \\掛載邏輯卷到臨時目錄 

4、使用tar命令遷移原來資料庫目錄檔案到臨時目錄/tmp下

 
  1. # cd /var/lib/mysql/ 
  2.  
  3. # tar cf - . | tar xf - -C /tmp/  \\對資料進行分解壓縮到/tmp下,也就是放在邏輯卷掛載的目錄中 

5、重新掛在邏輯卷到資料庫目錄下,並在/etc/fstab中添加開啟自動掛載

 
  1. # umount /tmp/ 卸載邏輯卷 
  2.  
  3. # rm -rf /var/lib/mysql/* //刪除資料庫目錄下的所有資訊,一定要確認上一步操作OK 
  4.  
  5. # mount /dev/mysqlvg1/mysqllv /var/lib/mysql/ //將邏輯卷重新掛載到資料庫mysql目錄下 

並在/etc/fstab中添加開啟自動掛載

 
  1. # blkid /dev/mysqlvg1/mysqllv | awk '{print $2}' \\取出邏輯卷mysqllv的UUID值  
  2.  
  3. # cat >>/etc/fstab <<endf  \\在/etc/fstab下追加邏輯卷掛載資訊 
  4. > UUID=29502f33-fde2-4c21-b6c3-9fe1b74c0f0d /var/lib/mysql ext4 defaults 0 0 
  5. > endf 

6、關閉selinux

 
  1. # setinforce 0  \\設定為premission模式  

7、啟動mysql服務

 
  1. # /etc/rc.d/init.d/mysqld start 

mysql資料庫LVM快照備份

1、鎖表

 
  1. mysql> flush tables with read lock; \\防止建立快照過程中有資料寫入 

2、查看position訊號

 
  1. mysql> show master status\G; \\查看當前的position訊號,方便同步到slave的時候使用 

3、建立快照

 
  1. # lvcreate -n mysql-snap -L 100M -s /dev/mysqlvg1/mysqllv \\將邏輯卷中的資料建立為大小為100M的快照,這個速度非常快。 

4、解鎖

 
  1. mysql> unlock tables;\\解鎖 

5、掛載建立快照

 
  1. # mount /dev/mysqlvg1/mysql-snap  /mnt/ \\掛載快照,為備份做準備 

6、讀取快照進行備份備份需要備份的即可)

 
  1. # tar cf mysql-01.tar.gz db1 db_2  \\備份快照資訊到存放裝置裡面 

7、卸載掛載的快照,然後刪除快照

 
  1. # umount /mnt/ 
  2. # lvremove -f /dev/mysqlvg1/mysql-snap \\刪除快照,節省空間的  

到此,整個備份過程就算結束了。如果你想要將內容同步到slave機上的話,那麼還需要多加幾個步驟。

1、把備份內容拷貝到slave的資料檔案目錄下。

2、重啟MySQL伺服器,等待恢複完成。

3、使用CHANGE MASTER TO 命令告訴slave新的二進位日誌位置,並從那裡開始同步,就是我們剛剛記錄下來的那個)例如:

 
  1. mysql> CHANGE master TO master_host=”192.168.100.109”,master_user=”slave”,master_password=”123.com”, master_log_file=”host-bin.000006″,master_log_pos=198; 

 

 

本文出自 “小諾的Linux開源技術部落格” 部落格,請務必保留此出處http://dreamfire.blog.51cto.com/418026/1172078

相關文章

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.