MongoDB 的replicattion 复制集练习

    xiaoxiao2021-03-25  134

              replicattion 相当于 mysql 的主从复制的读写分离,共同维护相同的数据,提高服务器的可用性【假如主(PRIMARY)不能用时,mongo会迅速自动切到从(SECONDARY)服务器上】       1、pkill -9 moongo                                 //先杀死之前的进程       2、 mongodb目录下:mkdir /home/m17 /home/m18 /home/m19       3、开启            ./bin/mongodb --dapath /home/m17 --logpath /home/mlog/m17.log --fork --port 27017 --replSet re2 --smallfiles              ./bin/mongodb --dapath /home/m18 --logpath /home/mlog/m18.log --fork --port 27018 --replSet re2 --smallfiles            ./bin/mongodb --dapath /home/m19 --logpath /home/mlog/m19.log --fork --port 27019 --replSet re2 --smallfiles                                         --replSet                       //声明采用复制集                                    --smallfiles                    //因为咱们是在一台机器上练习复制集【所以尽量让空间占小一点】       4、选择任意一台选择配置:             use admin                                                        ///先打开 admin 库              var rsconf={_id:'rs2',members:[                      ///粘贴 -> 执行                     {_id:0,host:"192.168.1.202:27017"},                     {_id:0,host:"192.168.1.202:27018"},                     {_id:0,host:"192.168.1.202:27019"}]             }        5、根据配置做初始化             rs.initiate(rsconf);                                             //还在 admin 库(可以理解是目录下)                  当前初始化窗口出现 rs2:PRIMARY 说明 ok             rs.status();                                                       //显示当前复制集状态     后期还可以很方便的增加和删除从服务器(节点):          删除:                 rs.remove("192.168.1.202:27019");          添加:             var rsconf={_id:'rs2',members:[                      ///粘贴 -> 执行                     {_id:0,host:"192.168.1.202:27017"},【_id:0 为主服务器】                     {_id:0,host:"192.168.1.202:27018"},                     {_id:0,host:"192.168.1.202:27019"}]             }              rs.reconfig(rsconf);                                            //重新配置下复制集         在主服务器上做了改动后,来到从服务器上查询报错: error:{"$err":"not master and slaveOk=false",'code':13435} 。是因为从服务器默认不许读写,只和主服务器保持通信。       要先 rs.slaveOk();          再 show tables 等操作。          当主服务器故障时,会自动将从服务器提升至主服务器。但是我们就不知道那台服务器是主服务器了(从服务器上是不能进行写操作的)。       db.isMaster();                              //检测谁是主服务器
    转载请注明原文地址: https://ju.6miu.com/read-10122.html

    最新回复(0)