Mysql高性能備份方案解決數據不間斷訪問_MySQL教程
推薦:設置mysql的sql_modeauthor:skate time:2013/04/11 mysql的sql_mode合理設置 sql_mode是個很容易被忽視的變量,默認值是空值,在這種設置下是可以允許一些非法操作的,比如允許一些非法數據的插入。在生產環境必須將這個值設置為嚴格模式,所以開發、測試環境的數據庫也必須要設置,這樣
備份特點:
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;
分享:驗證實例名稱是否正確在與 SQL Server 建立連接時出現與網絡相關的或特定于實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確并且 SQL Server 已配置為允許遠程連接。 (provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連接) 說明: 執行當前 Web 請求期間,出
- MSSQL清空日志刪除日志文件
- 關于數據庫中保留小數位的問題
- 解析mysql與Oracle update的區別
- mysql 導入導出數據庫以及函數、存儲過程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 深入理解SQL的四種連接-左外連接、右外連接、內連接、全連接
- 解析:內聯,左外聯,右外聯,全連接,交叉連接的區別
- mysql出現“Incorrect key file for table”處理方法
- mysql重裝后出現亂碼設置為utf8可解決
- 淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
- 解析MySQL中INSERT INTO SELECT的使用
- 相關鏈接:
- 教程說明:
MySQL教程-Mysql高性能備份方案解決數據不間斷訪問。