设为首页 收藏本站
查看: 1274|回复: 0

[经验分享] Mongodb带验证的主从复制架构

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-8 08:59:28 | 显示全部楼层 |阅读模式
先说几个关于mongodb的使用命令:

    1.创建用户    db.addUser('username','password');

    2.查询当前库中用户信息  db,system.users.find();
    3.进入响应数据库    use databaseName;

    4.显示当前数据库所有库的大小信息 show dbs;
    5.显示当前库的所有表信息 show collections;
    6.对数据进行用户验证 db.auth('username','password');
    7.创建表 db.createCollection('test');
    8.关闭数据的时候不要使用kill -9 的方式进行关闭数据库,这样会导致数据的破坏,关闭方法有两种,如下:

方法一:
1
2
3
4
#进入admin数据库
use admin;
#执行关闭数据库命令
db.shutdownServer();



方法二:
1
2
3
4
#过滤出进程ID
netstat -ntpl | grep port
#使用-15的方式进行杀掉进程
kill -15 ID



讲一个话外题,不感兴趣的同学可以略过,直接next了
    比如你创建了一个用户,权限只能看test库,当你使用mongodb mv管理软件且使用管理员的帐号连接上后,你会神奇的发现帐号test库并不显示,原因在于此数据库中没有任何的数据,当你使用第七条命令创建了一个表后,神奇的事情发生了,test这个数据库出现了


回归正题
    关于mongodb的主从复制

         不带账户验证的主从复制

                此种方案非常好理解,且操作简单,但是使用起来不安全。操作步骤大概如下:

                  系统环境介绍:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1
                     启动的时候 只需要指定master和slave就可以了如下:


1
mongod --dbpath=/usr/local/mongodb/data/mongodb_27017/ --fork --logpath=/var/log/mongod.log --port 27017 --master



1
mongod --dbpath=/usr/local/mongodb/data/mongodb_27018/ --fork --logpath=/var/log/mongod27018.log --port 27018 --slave --source=127.0.0.1:2701



         带账户验证的主从复制

                 此种方案就有点麻烦了,mongodb的官方文档注明了,需要使用一个keyfile的关键字进行数据同步,仅仅是哟过--auth是不行的。操作步骤大概如下:

                        系统环境介绍:Ubuntu 12.04.1 、MongoDB shell version: 2.6.1
                             步骤一、首先要进入admin库设置一个admin的账号,此账号为管理员帐号,对所有库都具有增删改查的权限,操作步骤如下:
1
2
3
mongo --host = 127.0.0.1:27017
use admin;
db.addUser('admin','admin');



                            步骤二、停掉现有的mongodb,然后使用如下参数启动,测试admin账户是否正确

1
2
3
4
mongod --dbpath=/usr/local/mongodb/data/mongodb_27017/ --fork --logpath=/var/log/mongod.log --port 27017 --auth
mongo --host = 127.0.0.1:27017
use admin;
db.auth('admin','admin');



                            步骤三、在slave上同样的操作步骤,进行设置slave的admin帐号并验证(切记如果主从在同一台机器上不要,使用了同一个端口,)

                            步骤四、停到主从,然后生成key文件。步骤如下:

1
openssl rand -base64 741 > /root/mongo-keyfile



会在root的宿主目录下生成一个文件mongo-keyfile文件 ll一下,看一下此文件大小,我第一次生成的时候文件大小为0,导致启动的时候失败

                            第五步、启动主从两个mongo。步骤如下

1
2
mongod --dbpath=/usr/local/mongodb/data/mongodb_27017/ --fork --logpath=/var/log/mongod.log --port 27017 --auth --master --keyFile /root/mongo-keyfile
mongod --dbpath=/usr/local/mongodb/data/mongodb_27018/ --fork --logpath=/var/log/mongod27018.log --port 27018 --slave --source=127.0.0.1:27017 --auth --keyFile /root/mongo-keyfile



这样当操作主的时候 从自然也会跟着变化了

关于mongodb的账号设置管理与非管理员设置

               上面已经阐述了关于创建 “管理员”账号的操作方法,此处不就在阐述,如下内容阐述如何        创建普通用户权限

创建logdb库的普通用户,这个用户只可以操作本数据库,代码如下
1
2
3
4
5
6
#创建一个可读写账户
use logdb;
db.addUser('username','password');
#创建一个只读账户
use logdb;
db.addUser('username','password',true)






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-161675-1-1.html 上篇帖子: mongodb系列 下篇帖子: MongoDB结合PHP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表