mongodb副本集搭建

本文以mongodb4.2.1为例搭建副本集,记录搭建流程,便于大家学习

1.准备三台机器(阿里云)

    mongo1      47.100.32.119(192.168.0.78)

    mongo2      106.15.40.89(192.168.0.79)

    mongo3      106.15.40.101(192.168.0.80)

2.安装mongodb

详情可参考官方安装文档:(本文以ubuntu 16.4为例)

    https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

    1.安装:

        1.wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

        2.echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

        3.sudo apt-get update

        4.sudo apt-get install -y mongodb-org

    2.启动:

        1.sudo service mongod start    #以默认配置文件启动

        2.sudo service mongod status #查看mongodb状态

        3.sudo service mongod stop    #停止服务

        4.sudo service mongod restart #重启服务

    3.卸载:

    1.sudo service mongod stop

    2.sudo apt-get purge mongodb*

    3.sudo rm -r /var/log/mongodb

        sudo rm -r /var/lib/mongodb

3.修改mongodb配置文件

    默认启动文件为:

        启动文件:/usr/bin/mongod

        配置文件:/etc/mongod.conf

        数据文件:/var/lib/mongodb

        日志文件:/var/log/mongodb.log

    修改文件位置为:(便于管理和配置,下面的文件位置需要自己手动在服务器上创建目录和文件)

        配置文件:/home/mongo/config/mongod.conf(拷贝默认文件 cp /etc/mongod.conf /home/mongo/config/mongod.conf)

        数据文件:/home/mongo/data

        日志文件:/home/mongo/log/mongod.log

4.修改配置文件:

    修改完成如下:

    #db path(1.修改数据存储位置为自己新建的位置)

        storage:

              dbPath: /home/mongo/data

    # logger(2.修改日志文件为自己新建的位置)

        systemLog:

              destination: file

              logAppend: true

              path: /home/mongo/log/mongod.log

    # network interfaces (3.修改bindIp,解除绑定到本地限制)

         net:

              port: 27017

              bindIp: 0.0.0.0

    #replication(4.注意修改副本集名称,三台服务器需要统一)

        replication:

              replSetName: testRepl

    #sharding:

部分修改如上所示,需要别的可以继续修好

5.启动副本集

        sudo /usr/bin/mongod --config /home/mongo/config/mongod.conf  

    依次在三台机器上启动,按照指定的配置文件, 然后进入本机客户端:

        sudo /usr/bin/mongo

    在三台机器上任意一台登陆mongodb(我这里在mongo1上登陆)

    #进入数据库

        user admin

    #进行初始化配置

        config={_id:"testRepl",members:[{_id:0,host:"47.100.32.119:27017"},{_id:1,host:"106.15.40.89:27017"},{_id:2,host:"106.15.40.101:27017"}]}

    #初始化副本集

        rs.initiate(config);

    #查询初始化状态(此处可查看到当前节点是主节点还是副本集)

        rs.status();

    #重启当前节点

        db.shutdownServer();

6.数据测试

    找到主节点所在的服务器,也可自己设置主节点,然后建立test数据库

        use test

    #往testdb插入数据

        db.testdb.insert({"test1":"test11"})

    #然后在副节点上查看数据是否复制过来

    #使用test 数据库。

        repset:SECONDARY> use test;

        repset:SECONDARY> show tables;

    #如果看见错误信息:not master and slaveOk

    解决方案:

        #mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。

            repset:SECONDARY> db.getMongo().setSlaveOk();

        #可以看到数据已经复制到了副本集。

            repset:SECONDARY> db.testdb.find();

问题备注:

    搭建过程遇到的问题:

        1.防火墙未关闭,导致三台机器之间不能相互访问

        解决方法:

            1.查看防火墙当前状态

                sudo ufw status

            2.开启防火墙

                sudo ufw enable

            3.关闭防火墙(解决方案是关闭防火墙,此处列出一系列命令,便于使用查看)

                sudo ufw disable

        2.三台机器中有一二台开启的权限认证,此时会报错

        解决方法:

            将对应机器的配置文件中授权注释掉

        3.数据库版本不一致,也可能导致失败

        解决方法:

            统一数据库版本,将不相同版本的数据库卸载重装,卸载步骤可参看官网文档

单间完成后即可写代码测试,本副本集方案仅为测试使用参考!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350