Mysql大型SQL文件快速恢復方案分享
前言
在使用Mysql數(shù)據(jù)庫的過程中,經(jīng)常需要使用到備份和恢復數(shù)據(jù)庫,最簡單便捷的方法便是通過導出SQL數(shù)據(jù)文件和導入SQL數(shù)據(jù)文件來完成備份和恢復,但是隨著項目的增長,數(shù)據(jù)量越來越大,每次恢復就成了一件很頭疼的事情。
當我最近一次拉下項目中的5GB大小的數(shù)據(jù)庫到本地進行恢復時,竟然需要耗時40-50分鐘,想著日后的數(shù)據(jù)擴增,數(shù)據(jù)量越來越大,恢復成本也越來越高,于是便查閱了一些資料,可以通過以下設(shè)置來提高你的恢復效率.
1.更改備份參數(shù)
首先我們需要在備份數(shù)據(jù)庫的時候,可以通過更改參數(shù)來提高我們的恢復效率.
mysqldump --extended-insert
mysqldump的--extended-insert參數(shù)表示批量插入,會將多個insert語句合并成一個語句,與沒有開啟-extended-insert的備份導入效率相差3-4倍.
使用--extended-insert=false導出的sql文件數(shù)據(jù)是這樣的,每行一條insert語句,執(zhí)行效率非常低下
使用--extended-insert=true導出的表如下圖這種,一個很長的insert語句,會進行批量插入。
2.調(diào)整MYSQL快速插入?yún)?shù)
如果你的數(shù)據(jù)庫儲存引擎是MYISAM參數(shù)的話,可以將此參數(shù)設(shè)置到512M或256M,MyISAM會使用一種特殊的樹狀緩存來做出更快的批量插入。
相關(guān)文檔:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_bulk_insert_buffer_size
該值默認是8M = 8388608byte
查看插入緩沖區(qū)大小
SHOW VARIABLES LIKE '%bulk%';
設(shè)置插入緩沖區(qū)大小(全局)
SET GLOBAL bulk_insert_buffer_size =1024*1024*512;
設(shè)置插入緩沖區(qū)大小(session)
SET bulk_insert_buffer_size =1024*1024*256;
如果需要設(shè)置Mysql重新啟動時,依然保留該值,需要將這段配置添加了my.cnf
[mysqld] bulk_insert_buffer_size = 256M
3.關(guān)閉檢查項
對于Innodb引擎中,我們可以關(guān)閉一些系統(tǒng)檢查項來實現(xiàn)更快的插入的方案.
//關(guān)閉自動提交 SET autocommit=0; //關(guān)閉唯一檢查 set unique_checks = 0; //關(guān)閉外鍵檢查 SET foreign_key_checks=0; //備份的時候開啟--extended-insert參數(shù)
關(guān)于Innodb批量數(shù)據(jù)加載相關(guān)文檔:https://dev.mysql.com/doc/refman/5.7/en/optimizing-innodb-bulk-data-loading.html
4.實踐
做好以上優(yōu)化后,你的Mysql恢復效率瞬間會提升一個檔次,在沒做以上參數(shù)優(yōu)化時,每次恢復數(shù)據(jù)庫都需要耗費40分鐘的時間,設(shè)置后只需要16分鐘左右,我的數(shù)據(jù)庫文件容量在5GB左右.
以上就這些,途觀有更好的方案和建議的話,希望各位同學一起探討,Happy Coding。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
- MySQL5.7 mysqldump備份與恢復的實現(xiàn)
- MySQL 兩種恢復數(shù)據(jù)的方法
- MySQL單表恢復的步驟
- MySQL數(shù)據(jù)庫備份恢復實現(xiàn)代碼
- MySQL使用mysqldump+binlog完整恢復被刪除的數(shù)據(jù)庫原理解析
- mysql數(shù)據(jù)備份與恢復實現(xiàn)方法分析
- Window下如何恢復被刪除的Mysql8.0.17 Root賬戶及密碼
- shell腳本實現(xiàn)mysql定時備份、刪除、恢復功能
- Mysql的Binlog數(shù)據(jù)恢復:不小心刪除數(shù)據(jù)庫詳解
- 從MySQL全庫備份中恢復某個庫和某張表的方法
- MySQL 基于時間點的快速恢復方案
相關(guān)文章
MySQL?字符串轉(zhuǎn)換為數(shù)字的方法小結(jié)
這篇文章主要介紹了MySQL字符串轉(zhuǎn)換為數(shù)字的幾種方法,本文給大家列列舉了三種方法,每種方法通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-01-01Mysql查詢數(shù)據(jù)庫或數(shù)據(jù)表中的數(shù)據(jù)量以及數(shù)據(jù)大小
許多數(shù)據(jù)庫的元數(shù)據(jù)都是存儲在mysql中的,本文主要介紹了Mysql查詢數(shù)據(jù)庫或數(shù)據(jù)表中的數(shù)據(jù)量以及數(shù)據(jù)大小,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2024-02-02解決Mysql5.7.17在windows下安裝啟動時提示不成功問題
這篇文章主要介紹了解決Mysql5.7.17在windows下安裝啟動時提示不成功問題,需要的朋友可以參考下2017-03-03MySQL中進行數(shù)據(jù)的加密和解密存儲的操作方法
在MySQL中,我們可以使用對稱加密算法和非對稱加密算法對數(shù)據(jù)進行加密和解密存儲,通過合理選擇加密算法和密鑰管理,可以有效提高數(shù)據(jù)的安全性,防止敏感信息的泄露和非法獲取,下面給大家分享MySQL中進行數(shù)據(jù)的加密和解密存儲方法,感興趣的朋友一起看看吧2024-05-05MySQL數(shù)據(jù)更新操作的兩種辦法(數(shù)據(jù)可視化工具和SQL語句)
MySQL是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中,基本都是增刪改查操作,簡稱CRUD,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)更新操作的兩種辦法,需要的朋友可以參考下2023-03-03SELinux導致PHP連接MySQL異常Can''t connect to MySQL server的解決方法
這篇文章主要介紹了SELinux導致PHP連接MySQL異常Can't connect to MySQL server的解決方法,有2種,一是設(shè)置允許,二是關(guān)閉SELinux,需要的朋友可以參考下2014-07-07MySQL中列轉(zhuǎn)行和行轉(zhuǎn)列總結(jié)解決思路
最近工作中用到了好幾次列轉(zhuǎn)行,索性做個小總結(jié),下面這篇文章主要給大家介紹了關(guān)于MYSQL如何列轉(zhuǎn)行的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-01-01