mongo備份恢復(fù), 異構(gòu)平臺(tái)遷移案例

1. 備份恢復(fù)工具:

(1)**   mongoexport/mongoimport
(2)***** mongodump/mongorestore

2. 備份工具區(qū)別

  1. 導(dǎo)出格式不同

    mongoexport/mongoimport  導(dǎo)入/導(dǎo)出的是JSON格式或者CSV格式
    mongodump/mongorestore  導(dǎo)入/導(dǎo)出的是BSON格式
    
  2. JSON可讀性強(qiáng)但體積較大踪央,BSON則是二進(jìn)制文件荣恐,體積小但對(duì)人類幾乎沒(méi)有可讀性少漆。

  3. 在一些mongodb版本之間,BSON格式可能會(huì)隨版本不同而有所不同检访,所以不同版本之間用mongodump/mongorestore可能不會(huì)成功,

    具體要看版本之間的兼容性卖氨。當(dāng)無(wú)法使用BSON進(jìn)行跨版本的數(shù)據(jù)遷移的時(shí)候持搜,
    使用JSON格式即mongoexport/mongoimport是一個(gè)可選項(xiàng)。
    跨版本的mongodump/mongorestore個(gè)人并不推薦村斟,
    實(shí)在要做請(qǐng)先檢查文檔看兩個(gè)版本是否兼容(大部分時(shí)候是的)。
    
  4. JSON雖然具有較好的跨版本通用性逾滥,但其只保留了數(shù)據(jù)部分,不保留索引舔哪,賬戶等其他基礎(chǔ)信息。使用時(shí)應(yīng)該注意。

mongoexport/mongoimport:json csv
1陕悬、異構(gòu)平臺(tái)遷移 mysql <---> mongodb
2、同平臺(tái)狂秦,跨大版本:mongodb 2 ----> mongodb 3

3. 導(dǎo)出工具mongoexport

Mongodb中的mongoexport工具可以把一個(gè)collection導(dǎo)出成JSON格式或CSV格式的文件。
可以通過(guò)參數(shù)指定導(dǎo)出的數(shù)據(jù)項(xiàng),也可以根據(jù)指定的條件導(dǎo)出數(shù)據(jù)哪审。

(1)版本差異較大
(2)異構(gòu)平臺(tái)數(shù)據(jù)遷移

4. mongoexport具體用法

  1. 參數(shù)介紹

    mongoexport --help  
    參數(shù)說(shuō)明:
    -h:指明數(shù)據(jù)庫(kù)宿主機(jī)的IP
    
    -u:指明數(shù)據(jù)庫(kù)的用戶名
    
    -p:指明數(shù)據(jù)庫(kù)的密碼
    
    -d:指明數(shù)據(jù)庫(kù)的名字
    
    -c:指明collection的名字
    
    -f:指明要導(dǎo)出那些列
    
    -o:指明到要導(dǎo)出的文件名
    
    -q:指明導(dǎo)出數(shù)據(jù)的過(guò)濾條件
    
    --authenticationDatabase admin  :認(rèn)證庫(kù)
    
  2. 單表備份至json格式

    mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldguo -c log -o /mongodb/log.json

    注:備份文件的名字可以自定義叽奥,默認(rèn)導(dǎo)出了JSON格式的數(shù)據(jù)。

  3. 單表備份至csv格式

    如果我們需要導(dǎo)出CSV格式的數(shù)據(jù)赵哲,則需要使用----type=csv參數(shù):

    mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldguo -c log --type=csv -f uid,name,age,date -o /mongodb/log.csv

5. 導(dǎo)入工具mongoimport

Mongodb中的mongoimport工具可以把一個(gè)特定格式文件中的內(nèi)容導(dǎo)入到指定的collection中谈截。該工具可以導(dǎo)入JSON格式數(shù)據(jù)毙死,也可以導(dǎo)入CSV格式數(shù)據(jù)除呵。具體使用如下所示:

  1. 參數(shù)說(shuō)明

    $ mongoimport --help
    參數(shù)說(shuō)明:
    -h:指明數(shù)據(jù)庫(kù)宿主機(jī)的IP
    
    -u:指明數(shù)據(jù)庫(kù)的用戶名
    
    -p:指明數(shù)據(jù)庫(kù)的密碼
    
    -d:指明數(shù)據(jù)庫(kù)的名字
    
    -c:指明collection的名字
    
    -f:指明要導(dǎo)入那些列
    
    -j, --numInsertionWorkers=<number>  number of insert operations to run concurrently                                                  (defaults to 1)
    //并行
    
    
  2. 數(shù)據(jù)恢復(fù):

    恢復(fù)json格式表數(shù)據(jù)到log

    mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldguo -c log1 /mongodb/log.json

    恢復(fù)csv格式的文件到log2

    上面演示的是導(dǎo)入JSON格式的文件中的內(nèi)容泛豪,如果要導(dǎo)入CSV格式文件中的內(nèi)容臀叙,則需要通過(guò)--type參數(shù)指定導(dǎo)入格式,具體如下所示:

    1)csv格式的文件頭行驶赏,有列名字

    mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldguo -c log2 --type=csv --headerline --file /mongodb/log.csv

    2)csv格式的文件頭行嘱蛋,沒(méi)有列名字

    mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d oldguo -c log3 --type=csv -f id,name,age,date --file /mongodb/log1.csv

    --headerline:指明第一行是列名疙驾,不需要導(dǎo)入。

    補(bǔ):導(dǎo)入CSV文件P_T_HISTXN_20160616.csv(csv文件中沒(méi)有列明,fields指定列明)
    $ tail -5 P_T_HISTXN_20160616.csv

6. 異構(gòu)平臺(tái)遷移案例 mysql --> mongodb

  • world數(shù)據(jù)庫(kù)下city表進(jìn)行導(dǎo)出,導(dǎo)入到mongodb
  1. mysql開(kāi)啟安全路徑

    vim /etc/my.cnf   --->添加以下配置
    secure-file-priv=/tmp
    
    --重啟數(shù)據(jù)庫(kù)生效
    /etc/init.d/mysqld restart
    
  2. 導(dǎo)出mysql的city表數(shù)據(jù)

    source /root/world.sql
    
    select * from world.city into outfile '/tmp/city1.csv' fields terminated by ',';
    
  3. 處理備份文件

    vim /tmp/city.csv   ----> 添加第一行列名信息
    ID,Name,CountryCode,District,Population
    
  4. 在mongodb中導(dǎo)入備份

    mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d world  -c city --type=csv -f ID,Name,CountryCode,District,Population --file  /tmp/city1.csv
    
    use world
    db.city.find({CountryCode:"CHN"});
    
  • world共100張表电禀,全部遷移到mongodb

    select concat("select * from ",table_schema,".",table_name ," into outfile '/tmp/",table_schema,"_",table_name,".csv' fields terminated by ',';")
    from information_schema.tables where table_schema ='world';

    導(dǎo)入:
    ? 提示宛官,使用infomation_schema.columns + information_schema.tables

  1. mysql導(dǎo)入csv:

    load data infile '/tmp/test.csv'   
    
    into table test_info    
    
    fields terminated by ','  
    
    optionally enclosed by '"' 
    
    escaped by '"'   
    
    lines terminated by '\r\n'; 
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市咕娄,隨后出現(xiàn)的幾起案子亥揖,更是在濱河造成了極大的恐慌费变,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滑负,死亡現(xiàn)場(chǎng)離奇詭異痴鳄,居然都是意外死亡槽华,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)璧函,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蘸吓,“玉大人,你說(shuō)我怎么就攤上這事撩幽∠芴眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵榨惰,是天一觀的道長(zhǎng)拜英。 經(jīng)常有香客問(wèn)我,道長(zhǎng)读串,這世上最難降的妖魔是什么聊记? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮恢暖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狰右。我一直安慰自己杰捂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布棋蚌。 她就那樣靜靜地躺著嫁佳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谷暮。 梳的紋絲不亂的頭發(fā)上蒿往,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音湿弦,去河邊找鬼瓤漏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颊埃,可吹牛的內(nèi)容都是我干的蔬充。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼班利,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饥漫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起罗标,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庸队,失蹤者是張志新(化名)和其女友劉穎积蜻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彻消,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竿拆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了证膨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片如输。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖央勒,靈堂內(nèi)的尸體忽然破棺而出不见,到底是詐尸還是另有隱情,我是刑警寧澤崔步,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布稳吮,位于F島的核電站,受9級(jí)特大地震影響井濒,放射性物質(zhì)發(fā)生泄漏灶似。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一瑞你、第九天 我趴在偏房一處隱蔽的房頂上張望酪惭。 院中可真熱鬧,春花似錦者甲、人聲如沸春感。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鲫懒。三九已至,卻和暖如春刽辙,著一層夾襖步出監(jiān)牢的瞬間窥岩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工宰缤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颂翼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓撵溃,卻偏偏與公主長(zhǎng)得像疚鲤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缘挑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容