阿里云上遷移Mongo副本集數(shù)據(jù)庫(kù)到ECS自建服務(wù)器的記錄

從 阿里云上 遷移 Mongo 副本集 數(shù)據(jù)庫(kù) 到 ECS 自建服務(wù)器的記錄

環(huán)境:

  • 阿里云 —— Mongo 3.2 版本 , 副本集環(huán)境, 3節(jié)點(diǎn) 一主, 一從, 一隱藏節(jié)點(diǎn)

  • ECS ——— Ubuntu 16.04 64位 4核8G 系統(tǒng)盤(pán) 20G, 數(shù)據(jù)盤(pán)200G

注意!!! ECS 上的 Mongo要和 阿里云上的 Mongo 同一版本,詳情參考阿里云說(shuō)明
阿里云Mongo遷移說(shuō)明--MongoDB物理備份文件恢復(fù)至自建數(shù)據(jù)庫(kù)

這里是 3.2 版本

ECS 基本環(huán)境準(zhǔn)備:

  • 安裝 JDK 8

  • 安裝 Mongo 3.2

這里使用包管理工具 APT包 管理工具

1.安裝 JDK 8

先更新包源

$ sudo apt-get update

安裝python-software-properties

$sudo apt-get install python-software-properties

$sudo apt-get install software-properties-common

添加ppa

$ sudo add-apt-repository ppa:webupd8team/java

然后再次更新一下

$ sudo apt-get update

安裝

$ sudo apt-get install oracle-java8-installer

過(guò)程中 Y 同意 然后 有個(gè)圖形化頁(yè)面 ,可用鍵盤(pán)剪頭選擇,繼續(xù)同意.

最后驗(yàn)證

$ java -version
2.安裝 Mongo 3.2

參考: https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/

首先導(dǎo)入 Mongo GPG密鑰

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927

Ubuntu 16.04

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

安裝指定的對(duì)應(yīng)的版本包

$ sudo apt-get install -y mongodb-org=3.2.22 mongodb-org-server=3.2.22 mongodb-org-shell=3.2.22 mongodb-org-mongos=3.2.22 mongodb-org-tools=3.2.22

等待安裝完成.

Mongo 的 配置文件在 /etc/mongod.conf

查看配置的 數(shù)據(jù)庫(kù)文件路徑

默認(rèn)是 /var/lib/mongodb

日志默認(rèn)是 /var/log/mongodb/mongod.log

到這個(gè)時(shí)候先別著急運(yùn)行 Mongo

$ cd /var/lib/mongodb 

//(清除Mongo數(shù)據(jù)庫(kù)文件,請(qǐng)注意在 mongo 數(shù)據(jù)庫(kù)文件目錄下執(zhí)行該操作,防止誤刪其他文件)
$ rm -r * 

如果是副本集的 最少需要3臺(tái)ECS (生產(chǎn)環(huán)境) 還有一個(gè)仲裁節(jié)點(diǎn)可以放在其中一臺(tái)上面(另起一個(gè)端口再跑一個(gè)Mongo)也可以再用另外一臺(tái)服務(wù)器上面部署,起仲裁作用而已,也無(wú)需保存數(shù)據(jù).

另外3臺(tái)都同樣部上相同的環(huán)境配置.

==============此處先告一段落================

首先先從阿里云上的數(shù)據(jù)庫(kù)進(jìn)行, 全量備份(物理備份) ——之前可能有自動(dòng)備份策略,可根據(jù)需求來(lái).

如果 ECS 是新買(mǎi)的,那么它的數(shù)據(jù)盤(pán)肯定是已經(jīng)在阿里云控制臺(tái)上顯示掛載了, 但是還要在ECS上進(jìn)行掛載的,具體掛載方法參考 阿里云的教程,很全.


阿里云掛載云盤(pán)操作示例

注意數(shù)據(jù)盤(pán)要掛載在 mongo 的 數(shù)據(jù)庫(kù)文件夾下 /var/lib/mongodb

阿里云的 參考里面是 /mnt 注意別掛錯(cuò)了!

掛載云盤(pán)注意

參考1: https://help.aliyun.com/document_detail/25446.html?spm=5176.2020520101.121.2.8b1f4df56ohr1f

參考2: https://help.aliyun.com/document_detail/108501.html?spm=a2c4g.11186623.6.788.73cc7d56IQ0yED (Linux 看這里)

然后在ECS服務(wù)器上從 wget 下載 全量備份文件


下載 全量備份文件操作示意

停止Mongo 的進(jìn)程 ,如果有的話(huà)

$ ps -ef | grep mongod 

$ kill -9 <mongod pid>

$ cd /var/lib/mongodb

//(清除Mongo數(shù)據(jù)庫(kù)文件,請(qǐng)注意在 mongo 數(shù)據(jù)庫(kù)文件目錄下執(zhí)行該操作,防止誤刪其他文件)
$ rm -r * 

//從 XXX地址下載文件 到當(dāng)前文件夾下并指定名字為 mongo_data.tar.gz
$ wget "XXXXXX" -O mongo_data.tar.gz

需要蠻久的,ECS我選 100M 按流量計(jì)費(fèi)的帶寬, 12M/s 53G 要 70 多分鐘

下載完成, 解壓, 解壓較快 10~20分鐘

$ tar xzvf mongo_data.tar.gz

參考: https://help.aliyun.com/document_detail/58329.html?spm=a2c6r.11610030.0.0.3c5e4231z2GjdA

$ vi /etc/mongod.conf

把 配置文件 按照下面配置

storage:
  dbPath: /var/lib/mongodb
 # journal:
   # enabled: true
  directoryPerDB: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
    bindIp: 0.0.0.0
    http:
        enabled: false
    port: 27017
    unixDomainSocket:
        enabled: false

processManagement:
  fork: true
  pidFilePath: /etc/mongodb/mongod.pid

:wq 保存

$ cd /etc/mongodb 看看有無(wú)此目錄 如果沒(méi)有就創(chuàng)建

$ sudo mkdir -p /etc/mongodb

//啟動(dòng)Mongo
// --fork 是守護(hù)進(jìn)程模式啟動(dòng)  
$ /usr/bin/mongod --config /etc/mongod.conf --fork 

$ mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin
  • <username>:云數(shù)據(jù)庫(kù)MongoDB上該實(shí)例的用戶(hù)名,默認(rèn)為 root 费变。
  • <password>:云數(shù)據(jù)庫(kù)MongoDB上該實(shí)例設(shè)置的密碼摧扇。

由于 從云數(shù)據(jù)庫(kù)MongoDB 備份下來(lái)的 數(shù)據(jù)是 隱藏節(jié)點(diǎn)備份的數(shù)據(jù), 所以可能會(huì)報(bào)沒(méi)有權(quán)限的問(wèn)題.

這是阿里云官方刪除 副本集配置的命令:

登錄Mongo之后:

use local

db.system.replset.remove({})

如果提示沒(méi)有權(quán)限,可嘗試如下操作:

重新初始化local庫(kù)

  • 1.單機(jī)啟動(dòng)mongodb,不帶--replSet參數(shù) && conf文件也注釋掉replication
  • 2.刪掉local庫(kù) db.getSiblingDB('local').dropDatabase()
    關(guān)閉Mongo
$ mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin
use admin
db.shutdownServer()
exit
  • 3.配置新的的 副本集名稱(chēng) (conf文件指定replication)
  • 4.配置副本集之間連通的Key (需要修改conf, 下邊說(shuō)明)
  • 5.重啟mongodb副本集挚歧,conf文件指定replication
  • 6.執(zhí)行rs.initate()重新初始化新的oplog和副本集配置

//指定副本集名稱(chēng) 其他的節(jié)點(diǎn)也要 寫(xiě)入此配置

$ vi /etc/mongod.conf

replication:

 #副本集名稱(chēng)

 replSetName: rs0

:wq

配置 Key ,復(fù)制集之間的互聯(lián)也是需要驗(yàn)證的扛稽,所以要配置keyfile來(lái)滿(mǎn)足這個(gè)需求,如果開(kāi)啟了 authorization 滑负,投票節(jié)點(diǎn)通過(guò)證書(shū)的形式與復(fù)制集中其他節(jié)點(diǎn)進(jìn)行認(rèn)證在张。MongoDB的身份認(rèn)證過(guò)程是加密的。MongoDB的認(rèn)證交互是通過(guò)密碼進(jìn)行的

創(chuàng)建一個(gè)keyfile,并且拷貝到其他從節(jié)點(diǎn)

$ mkdir -p /var/lib/key

// 隨機(jī)生成 base64 的 756 位碼作為key

$ openssl rand -base64 756 > /var/lib/key/autokey

$ chmod 400 /var/lib/key/autokey

$ vi /etc/mongod.conf

security:

 authorization: enabled

 # 配置的Key 文件路徑

 keyFile: /var/lib/key/autokey

:wq

tips:

其他的節(jié)點(diǎn)(其他的3個(gè)節(jié)點(diǎn),還有仲裁節(jié)點(diǎn)) 也要 寫(xiě)入此 key 和 replication 配置
然后啟動(dòng)重啟全部節(jié)點(diǎn)

tips:

!!注意:如果是搭建過(guò)一次 副本集的情況,都需要清除 local 庫(kù) 把 rs 的配置清除掉(參照重新初始化local庫(kù))
刪除的時(shí)候取消 key 的認(rèn)證 和 authorization 開(kāi)關(guān) 還有 副本集的名稱(chēng) replication 配置啟動(dòng)

重啟Mongo

在要成為主節(jié)點(diǎn)的服務(wù)器上操作 Mongo

$ /usr/bin/mongod -config /etc/mongod.conf

重新初始化配置 副本集配置

//登錄

$ mongo --host 127.0.0.1 -u <username> -p <password> --authenticationDatabase admin
rs.initiate(
  {
    _id: "rs0",
    members: [{
        _id: 0,
        host: '172.18.114.103:27017',
    }, {
        _id: 1,
        host: '172.18.114.101:27017'
    }, {
        _id: 2,
        host: '172.18.114.102:27017'
    }, {
        _id: 3,
        host: '172.18.114.91:27017',
        arbiterOnly: true
    }]
  }
)

//其中 arbiterOnly: true 表示這個(gè)是仲裁節(jié)點(diǎn)
rs.status()

查看各個(gè)節(jié)點(diǎn)的狀態(tài)
狀態(tài) 情況顯示如下:


狀態(tài)

主節(jié)點(diǎn) 應(yīng)該是顯示 PRIMARY


主節(jié)點(diǎn)

這個(gè)時(shí)候從節(jié)點(diǎn) 會(huì)看到 STARTUP2 (Mongo 的數(shù)據(jù)還在備份)

從節(jié)點(diǎn):

rs.slaveOk()

show dbs

可以看到 數(shù)據(jù)庫(kù)數(shù)據(jù)慢慢增加,這個(gè)時(shí)候就是正常的了

到最后完成后狀態(tài)會(huì)變成:

show dbs 可能會(huì)發(fā)現(xiàn) 數(shù)據(jù)庫(kù)的數(shù)據(jù)大小不一樣,其實(shí)是正常的.

可 查詢(xún)表的條數(shù) 驗(yàn)證

eg:

use iot08

show collections

//與主節(jié)點(diǎn)的表的數(shù)據(jù)條數(shù)對(duì)比

db.<XX表>.count() 

至此,遷移算是完成了.

關(guān)于Mongo 的讀寫(xiě)分離問(wèn)題, 我們使用的 API 使用Python - Pymongo , 讀寫(xiě)分離是 連接Mongo時(shí)的連接方式?jīng)Q定.

以下是以參考文章:
Mongo--
https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/
Mongo添加副本集配置--
https://docs.mongodb.com/manual/reference/method/rs.initiate/?spm=a2c4g.11186623.2.25.e7fc2124WDnFbc

阿里云--
https://help.aliyun.com/document_detail/25446.html?spm=5176.2020520101.121.2.8b1f4df56ohr1f
https://help.aliyun.com/document_detail/108501.html?spm=a2c4g.11186623.6.788.73cc7d56IQ0yED
https://help.aliyun.com/document_detail/58329.html?spm=a2c6r.11610030.0.0.3c5e4231z2GjdA

其他的--
https://www.cnblogs.com/shengdimaya/p/6598450.html(配置驗(yàn)證Key參考)
http://www.reibang.com/p/36bb2bbbe461(狀態(tài)參考)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矮慕,一起剝皮案震驚了整個(gè)濱河市帮匾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痴鳄,老刑警劉巖瘟斜,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異痪寻,居然都是意外死亡螺句,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)橡类,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛇尚,“玉大人,你說(shuō)我怎么就攤上這事顾画∪〗伲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵研侣,是天一觀的道長(zhǎng)谱邪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)义辕,這世上最難降的妖魔是什么虾标? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮灌砖,結(jié)果婚禮上璧函,老公的妹妹穿的比我還像新娘。我一直安慰自己基显,他們只是感情好蘸吓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著撩幽,像睡著了一般库继。 火紅的嫁衣襯著肌膚如雪箩艺。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天宪萄,我揣著相機(jī)與錄音艺谆,去河邊找鬼。 笑死拜英,一個(gè)胖子當(dāng)著我的面吹牛静汤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播居凶,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼虫给,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了侠碧?” 一聲冷哼從身側(cè)響起抹估,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弄兜,沒(méi)想到半個(gè)月后药蜻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡替饿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年谷暮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛垦。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓤漏,靈堂內(nèi)的尸體忽然破棺而出腾夯,到底是詐尸還是另有隱情,我是刑警寧澤蔬充,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布蝶俱,位于F島的核電站,受9級(jí)特大地震影響饥漫,放射性物質(zhì)發(fā)生泄漏榨呆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一庸队、第九天 我趴在偏房一處隱蔽的房頂上張望积蜻。 院中可真熱鬧,春花似錦彻消、人聲如沸竿拆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丙笋。三九已至谢澈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間御板,已是汗流浹背锥忿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怠肋,地道東北人敬鬓。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像灶似,于是被迫代替她去往敵國(guó)和親列林。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 1. 副本集概述 某些情況下酪惭,副本可以提供更高的讀取容量希痴,就像客戶(hù)端可以發(fā)送讀操作到不同的服務(wù)器。在不同數(shù)據(jù)中心維...
    LLLeon閱讀 10,469評(píng)論 2 7
  • 配置服務(wù)器,全部設(shè)置為靜態(tài)地址 轉(zhuǎn)到/home目錄,創(chuàng)建一個(gè)mongo目錄用做實(shí)驗(yàn),我們需要?jiǎng)?chuàng)建如下的目錄層級(jí)和空...
    justonlyyo閱讀 1,317評(píng)論 0 0
  • 本文詳細(xì)介紹如何部署NodeJS項(xiàng)目到阿里云ECS上春感,以及本人在部署過(guò)程中所遇到的問(wèn)題砌创、坑點(diǎn)和解決辦法,可以說(shuō)是全...
    kovli閱讀 17,318評(píng)論 3 31
  • 條大路通羅馬,可有人生來(lái)就在羅馬翱摇甲献! 每次看完毒雞湯,都會(huì)喚醒我抑制在內(nèi)心里最深的喪颂翼,現(xiàn)實(shí)太赤裸裸的呈現(xiàn)在眼前了晃洒,...
    我是喜芝閱讀 599評(píng)論 3 6
  • 關(guān)于作者 阿爾伯特·埃利斯,20世紀(jì)美國(guó)著名心理學(xué)家朦乏,“理性情緒行為療法”之父球及,在美國(guó)心理學(xué)界的“十大應(yīng)用心理學(xué)家...
    水原素閱讀 356評(píng)論 0 2