欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何快速完成mysql數(shù)據(jù)遷移

這篇文章主要介紹“如何快速完成MySQL數(shù)據(jù)遷移”,在日常操作中,相信很多人在如何快速完成mysql數(shù)據(jù)遷移問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何快速完成mysql數(shù)據(jù)遷移”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,雅安企業(yè)網(wǎng)站建設,雅安品牌網(wǎng)站建設,網(wǎng)站定制,雅安網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,雅安網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

 背景

上個月跟朋友一起做了個微信小程序,趁著5.20節(jié)日的熱度,兩個禮拜內(nèi)迅速積累了一百多萬用戶,我們在小程序頁面增加了收集formid的埋點,用于給微信用戶發(fā)送模板消息通知。

這個小程序一開始的后端邏輯是用douchat框架寫的,使用框架自帶的dc_mp_fans表存儲微信端授權(quán)登錄的用戶信息,使用dc_mp_tempmsg表存儲formid。截止到目前,收集到的數(shù)據(jù)超過380萬,很大一部分formid都已經(jīng)成功使用給用戶發(fā)送過模板通知,起到了較好的二次推廣的效果。

隨著數(shù)據(jù)量的增大,之前使用的服務器空間開始有點不夠用,最近新寫了一個專門用于做小程序后臺開發(fā)的框架,于是想把原來的數(shù)據(jù)遷移到新系統(tǒng)的數(shù)據(jù)庫。買了一臺4核8G的機器,開始做數(shù)據(jù)遷移。下面對遷移過程做一個簡單的記錄。

如何快速完成mysql數(shù)據(jù)遷移

img

方案選擇

  •  mysqldump遷移

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

  •  腳本遷移

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

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

第二種方式,可以結(jié)合redis搭建一個“生產(chǎn)+消費”的遷移方案。源數(shù)據(jù)服務器可以作為數(shù)據(jù)生產(chǎn)者,在源數(shù)據(jù)服務器上跑一個多線程腳本,并行讀取數(shù)據(jù)庫里面的數(shù)據(jù),并把數(shù)據(jù)寫入到redis隊列。目標服務器作為一個消費者,在目標服務器上也跑一個多線程腳本,遠程連接redis,并行讀取redis隊列里面的數(shù)據(jù),并把讀取到的數(shù)據(jù)寫入到目標數(shù)據(jù)庫。這種方式相對于第一種方式,是一種異步方案,數(shù)據(jù)導入和數(shù)據(jù)導出可以同時進行,通過redis做數(shù)據(jù)的中轉(zhuǎn)站,效率會有較大的提升。

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

  •  文件遷移

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

遷移過程

在源數(shù)據(jù)庫中導出數(shù)據(jù)文件

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

復制數(shù)據(jù)文件到目標服務器

zip fans.zip /data/fans.txtscp fans.zip root@ip:/data/

在目標數(shù)據(jù)庫導入文件

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,@dummy,@dummy,@dummy,language,country,province,city,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy,@dummy);

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

注意項

mysql安全項設置

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

[mysqld]  secure_file_priv=''

則可通過命令導入導出數(shù)據(jù)文件。

導入導出的數(shù)據(jù)表字段不對應

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

如何快速完成mysql數(shù)據(jù)遷移

img

wxa_fans

如何快速完成mysql數(shù)據(jù)遷移

img

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

總結(jié)

結(jié)合本次數(shù)據(jù)遷移經(jīng)歷,總結(jié)起來就是:小數(shù)據(jù)量可以使用mysqldump命令進行導入導出,這種方式簡單便捷。- 數(shù)據(jù)量較大,且有足夠的遷移耐心時,可以選擇自己寫腳本,選擇合適的并行方案遷移數(shù)據(jù),這種方式編碼成本較高。- 數(shù)據(jù)量較大,且希望能在短時間內(nèi)完成數(shù)據(jù)遷移時,可以通過mysql導入導出文件的方式來遷移,這種方式效率較高。

到此,關(guān)于“如何快速完成mysql數(shù)據(jù)遷移”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

標題名稱:如何快速完成mysql數(shù)據(jù)遷移
轉(zhuǎn)載注明:http://chinadenli.net/article8/gedoip.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、網(wǎng)站排名、微信小程序、軟件開發(fā)、服務器托管、手機網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設