程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql高性能備份方案解決數據不間斷訪問

Mysql高性能備份方案解決數據不間斷訪問

編輯:關於MYSQL數據庫

       備份特點:

      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

      # lvcreate -L 3G mysqlvg1 -n mysqllv 創建大小為3G的邏輯卷mysqllv

      # mkfs.ext4 /dev/mysqlvg1/mysqllv 格式化邏輯卷

      2、停止mysql服務

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

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

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

      4、使用tar命令遷移原來數據庫目錄文件到臨時目錄/tmp下

      # cd /var/lib/mysql/

      # tar cf - . | tar xf - -C /tmp/ 對數據進行分解壓縮到/tmp下,也就是放在邏輯卷掛載的目錄中

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

      # umount /tmp/ 卸載邏輯卷

      # rm -rf /var/lib/mysql/* //刪除數據庫目錄下的所有信息,一定要確認上一步操作OK

      # mount /dev/mysqlvg1/mysqllv /var/lib/mysql/ //將邏輯卷重新掛載到數據庫mysql目錄下

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

      # blkid /dev/mysqlvg1/mysqllv | awk '{print $2}' 取出邏輯卷mysqllv的UUID值

      # cat >>/etc/fstab <

      > UUID=29502f33-fde2-4c21-b6c3-9fe1b74c0f0d /var/lib/mysql ext4 defaults 0 0

      > endf

      6、關閉selinux

      # setinforce 0 設置為premission模式

      7、啟動mysql服務

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

      mysql數據庫LVM快照備份

      1、鎖表

      mysql> flush tables with read lock; 防止創建快照過程中有數據寫入

      2、查看position信號

      mysql> show master statusG; 查看當前的position信號,方便同步到slave的時候使用

      3、創建快照

      # lvcreate -n mysql-snap -L 100M -s /dev/mysqlvg1/mysqllv 將邏輯卷中的數據創建為大小為100M的快照,這個速度非常快。

      4、解鎖

      mysql> unlock tables;解鎖

      5、掛載創建快照

      # mount /dev/mysqlvg1/mysql-snap /mnt/ 掛載快照,為備份做准備

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

      # tar cf mysql-01.tar.gz db1 db_2 備份快照信息到存儲設備裡面

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

      # umount /mnt/

      # lvremove -f /dev/mysqlvg1/mysql-snap 刪除快照,節省空間

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

      1、把備份內容拷貝到slave的數據文件目錄下。

      2、重啟MySQL服務器,等待恢復完成。

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

      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;

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved