91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

百萬級MySQL的數據量怎么快速完成數據遷移

發布時間:2021-11-18 11:45:09 來源:億速云 閱讀:500 作者:iii 欄目:數據庫

這篇文章主要講解了“百萬級MySQL的數據量怎么快速完成數據遷移”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“百萬級MySQL的數據量怎么快速完成數據遷移”吧!

方案選擇

mysqldump遷移

平常開發中,我們比較經常使用的數據備份遷移方式是用mysqldump工具導出一個sql文件,再在新數據庫中導入sql來完成數據遷移。試驗發現,通過mysqldump導出百萬級量的數據庫成一個sql文件,大概耗時幾分鐘,導出的sql文件大小在1G左右,然后再把這個1G的sql文件通過scp命令復制到另一臺服務器,大概也需要耗時幾分鐘。在新服務器的數據庫中通過source命令來導入數據,我跑了一晚上都沒有把數據導入進來,cpu跑滿。

腳本遷移

直接通過命令行操作數據庫進行數據的導出和導入是比較便捷的方式,但是數據量較大的情況下往往會比較耗時,對服務器性能要求也比較高。如果對數據遷移時間要求不是很高,可以嘗試寫腳本來遷移數據。雖然沒有實際嘗試,但是我想過大概有兩種腳本方案。

第一種方式,在遷移目標服務器跑一個遷移腳本,遠程連接源數據服務器的數據庫,通過設置查詢條件,分塊讀取源數據,并在讀取完之后寫入目標數據庫。這種遷移方式效率可能會比較低,數據導出和導入相當于是一個同步的過程,需要等到讀取完了才能寫入。如果查詢條件設計得合理,也可以通過多線程的方式啟動多個遷移腳本,達到并行遷移的效果。

第二種方式,可以結合redis搭建一個“生產+消費”的遷移方案。源數據服務器可以作為數據生產者,在源數據服務器上跑一個多線程腳本,并行讀取數據庫里面的數據,并把數據寫入到redis隊列。目標服務器作為一個消費者,在目標服務器上也跑一個多線程腳本,遠程連接redis,并行讀取redis隊列里面的數據,并把讀取到的數據寫入到目標數據庫。這種方式相對于第一種方式,是一種異步方案,數據導入和數據導出可以同時進行,通過redis做數據的中轉站,效率會有較大的提升。關注公眾號互聯網架構師,回復關鍵字2T,獲取最新架構視頻

可以使用go語言來寫遷移腳本,利用其原生的并發特性,可以達到并行遷移數據的目的,提升遷移效率。

文件遷移

第一種遷移方案效率太低,第二種遷移方案編碼代價較高,通過對比和在網上找的資料分析,我最終選擇了通過mysql的select data into  outfile file.txt、load data infile file.txt into  table的命令,以導入導出文件的形式完成了百萬級數據的遷移。

遷移過程

在源數據庫中導出數據文件

select * from dc_mp_fans into outfile '/data/fans.txt';

復制數據文件到目標服務器

zip fans.zip /data/fans.txt scp fans.zip root@ip:/data/

在目標數據庫導入文件

unzip /data/fans.zip  load data infile '/data/fans.txt' into table wxa_fans(id,appid,openid,unionid,@dummy,created_at,@dummy,nickname,gender,avatar_url,@dummy,@d

按照這么幾個步驟操作,幾分鐘內就完成了一個百萬級數據表的跨服務器遷移工作。

注意項

  • mysql安全項設置

在mysql執行load data infile和into outfile命令都需要在mysql開啟了secure_file_priv選項,  可以通過show global variables like  '%secure%';查看mysql是否開啟了此選項,默認值Null標識不允許執行導入導出命令。通過vim  /etc/my.cnf修改mysql配置項,將secure_file_priv的值設置為空:

[mysqld]   secure_file_priv=''

則可通過命令導入導出數據文件。

導入導出的數據表字段不對應

上面示例的從源數據庫的dc_mp_fans表遷移數據到目標數據庫的wxa_fans表,兩個數據表的字段分別為:- dc_mp_fans

百萬級MySQL的數據量怎么快速完成數據遷移

wxa_fans

百萬級MySQL的數據量怎么快速完成數據遷移

在導入數據的時候,可以通過設置字段名來匹配目標字段的數據,可以通過@dummy丟棄掉不需要的目標字段數據。

感謝各位的閱讀,以上就是“百萬級MySQL的數據量怎么快速完成數據遷移”的內容了,經過本文的學習后,相信大家對百萬級MySQL的數據量怎么快速完成數據遷移這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

慈利县| 海口市| 永济市| 巢湖市| 宣城市| 嘉兴市| 沽源县| 丰台区| 汕尾市| 沾化县| 阳东县| 遂昌县| 龙泉市| 阿拉尔市| 平度市| 霞浦县| 织金县| 正宁县| 台安县| 通化县| 仁化县| 鄢陵县| 吴川市| 商水县| 广水市| 云和县| 甘谷县| 隆德县| 汨罗市| 望江县| 台北市| 阳江市| 宁远县| 全椒县| 阳高县| 德昌县| 安远县| 麦盖提县| 麻江县| 祁阳县| 昆山市|