开发者学堂课程【MongoDB精讲课程(下):Compass &SpringData连接副本集】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/727/detail/12980
Compass &SpringData连接副本集
客户端软件 Compass 连接一下这个副本级:
连接副本及之前,首先要保证这个三个服务都是启动起来,先检查一下,如果说三个服务当时测试的时候把它挂掉了,需要重新再去洗一下,首先要保证三个服务27017 27018和2019这三个服务都启动起来了
启动起来了之后,如果用的是云服务器,还需要再做一步设置,首先去连接一下,连接一下这个节点,进来主节点之后,查看一下当前的这个副本集的配置 is.conf ,主要看这个成员,会发现之前加这个副本节点呢和这个仲裁节点的时候,用的都是这个官网的 IP ,但是主节点初始化的时候,它默认的是初始化配置的这个局网IP, compass 初始化的时候,需要连接这个官网IP的,那需要把这块做一个修改,也要把它改成这个官网IP,这块已经提供好这个脚本了,实际上就是改一下 config。
把这个 config 第一个程序,而是主节点的这个 post ,再把它设置成官网的 IP 和端口号。
把这个给它执行一下。导入执行完之后,再查看一下这个 config ,这时候的主节点,也改成了这个官网IP,待会可以通过这个 compass 直接去连接,连接的时候实际上用这个主节点或者副本节点去连接都是一样的,它最终连接的都是副本集,比如说用这个官网的 IP ,直接就连接这个主节点,这块要注意的是,27017不用改,默认的。
然后需要去设置一下它这个副本级的名称,副本级的名称就是一开始配置的这个 myrs ,直接这块选 primary 就可以了,然后直接进去,点 CONNECT ,点进去之后在这块找到这个 articlrdb 之后直接从这一块给它先插入一条数据。
这时候看它刚刚反应有点慢,myrs 副本级的一个连接,增删改查数据都没问题,就给删掉也是一样的。
比如说直接通过这个副本节点去连接也是一样的。27018,这选择 secondary 直接点击进去也是一样可以连接的,包括这块副本节点也知道读是没问题的。
但如果用 compass 去连接的时候,会发现其实写也没有问题。因为这时候实际上虽然连的是副本节点,用的是副本节点的这个账号,但是它连接来之后,其实操作的是整个副本级,这个 compass 客户端会自动的帮去切换到这个主节点,然后去调用主节点的这个写入,所以说,通过这个主节点,或者说副本节点去连接都没有问题。
现在再通过的这个客户端,去查看一下 showdbs 然后 use 的articledb,然后再 db.comment.find ,也是一样的,刚刚插入的这条数据,也是会在这个主结点这块做显示,它会自动的去同步,再来看看,用之前的 Spring Data MongonDB 怎么去连接这个副本集。
其实之前已经说过,最主要的是修这个项目这块 yml 这个配置,之前用的是这个主机地址,包括这个数据库和账号儿去连接的,如果说要去连接副本集的话,这需要用 uri 的方式,连接地址的方式,它有固定的格式。
首先,什么是 mongodb : 后边跟的是三个节点的 host 也就是的这个27017 27018和27019的都得带上。
后面跟上的当前的这个 articaldb ,跟上数据库名称,然后设置它的连接方式是这个副本集,这个是固定的写法,然后 slave OK 设置为 true ,置为 true 之后会自动的帮忙做一个读写分离。
读的时候就通过这个副本节点去读,然后写着直接用主节点去写,这块儿也是固定的写法,然后这块儿要设置一下副本级的名称就是 myrs ,这块是活动的,其它两个参数都是固定的,去修改一下这个之前的这个项目,单机的时候搭建的 articledb 的这个人工项目,现在要做的首先是把之前的这个配置给它注释一下,不用这种连接方式,用这种 uri 的连接方式直接把这段 copy 过去,复制之后再看一下,就是刚刚说的这个格式, mongodb ,然后三个节点分别用分号符给它分隔,然后要查的是这个 articaldb 库的连接方式是这个副本级的连接方式,然后开启这个读写分离 slave OK= true ,然后最后,要跟上这个副本级的名称是 myrs ,然后找到之前的这个 test 方法,来 test 一下,比如说查一条,来设置一下,再来看一下连接是否成功就可以了。
现在开始去连接,运行连接 mongodb 服务。这儿看见这个小绿勾之后,基本上程序是没问题的,连接没有问题。再往下翻翻看,这是查询出来的这个数据。
这就是这个 springdata 去连接 mongodb 的有什么问题的,主要是要知道要去连接副本集的话,就不能用上面这个方式了,而要使用这种 uri 的方式,然后按照固定的写法去写。
要注意的三个主机的这个节点要分别写上自己的 IP 和端口号,然后下面这个副本集的名称,也要写上一开始创建这个副本集的时候设置的这个副本集名称就可以了。





