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.数据库版本不一致,也可能导致失败

        解决方法:

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

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

你可能感兴趣的:(mongodb副本集搭建)