差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
it:database:mongodbreplication [2021-12-20 01:14] – [实际执行] goldentianyait:database:mongodbreplication [2022-08-12 05:20] (当前版本) – [MongoDB 副本集] goldentianya
行 6: 行 6:
 单版本的数据库连接通常为 <color #ff7f27>''%%mongodb://localhost:20271%%''</color>,而多副本的连接可以是 <color #ff7f27>''%%mongodb://localhost:20271,localhost:20272,localhost:20273?replicaSet=myRepl 单版本的数据库连接通常为 <color #ff7f27>''%%mongodb://localhost:20271%%''</color>,而多副本的连接可以是 <color #ff7f27>''%%mongodb://localhost:20271,localhost:20272,localhost:20273?replicaSet=myRepl
 %%''</color> %%''</color>
 +
 +  mongodb://user:password@serverwin,serverfin:33720/?replicaSet=stockdb&readPreference=nearest&wtimeoutMS=20000
  
 创建三个目录用来安装不同的MongoDB 创建三个目录用来安装不同的MongoDB
行 29: 行 31:
 第一个副本还没有用户的时候可以用管理员 <color #ff7f27>''%%> use admin%%''</color> 切换到管理员。 第一个副本还没有用户的时候可以用管理员 <color #ff7f27>''%%> use admin%%''</color> 切换到管理员。
  
-允许在副本集中读取数据 <color #ff7f27>''%%rs.slaveOK()%%''</color>+允许在副本集中读取数据 <color #ff7f27>''%%rs.secondaryOk()%%''</color>
  
 ====== 实际执行 ====== ====== 实际执行 ======
行 35: 行 37:
 准备三个服务器: 准备三个服务器:
   * 主服务器:88.153.172.7:33720 (局域网内地址是 192.168.0.157)   * 主服务器:88.153.172.7:33720 (局域网内地址是 192.168.0.157)
-  * 副本集:143.47.185.127:33720 (finsever+  * 副本集:141.144.205.48:33720  (serverfin
-  * 仲裁集:217.160.61.19:33720  (serverionos)+  * 仲裁集:143.47.185.127:33720  (serveroracle)
  
 编辑 /etc/hosts 文件,让所有的机器互相知道。否则会一直卡住联不通 编辑 /etc/hosts 文件,让所有的机器互相知道。否则会一直卡住联不通
 <code> <code>
 88.153.172.7    mai-ubun 88.153.172.7    mai-ubun
-217.160.61.19   serverionos+141.144.205.48  serverfin
 143.47.185.127  serveroracle 143.47.185.127  serveroracle
 </code> </code>
  
-第一步:修改 /etc/mongod.conf (暂时取消认证)+第一步:修改 <color #ff7f27>''%%/etc/mongod.conf%%''</color> (暂时取消认证)
 <code> <code>
 replication: replication:
行 76: 行 78:
 security: security:
   authorization: enabled   authorization: enabled
-  clusterAuthMode: keyFile 
   keyFile: /home/mongo/rs0.key   keyFile: /home/mongo/rs0.key
 </code> </code>
行 90: 行 91:
 </code> </code>
  
-注意事项 +:!: <color #ed1c24>注意事项</color>
-当副本集的数据量比较大的时候,我们添加新的节点的时候,如果使用初始化同步的话,会给主节点造成比较大的压力。我们有以下选择:+
  
-  * 暂停当前副本集中的一个次节点然后将 次节点数据(data)复制到新添加的节点的据目录然后再将个节点启动。(建议先测试)+  * CPU还算好但服务器内存不能太小。至少4G以上。否则只适合作为「仲裁」。 
 +  * 必须要单子集一主副,或者一主一副一仲裁。 
 +  * security 和 replSet 可以在未接入 replication 前就开启的。 
 +  * keyfile 需设成 chmod 600 ,否则无法启动 mongod 服务 
 +  * 各个主机必须互相认识(设置 /etc/hosts) 
 +  * 如果长时间停留在状态 <color #ed1c24>TARTUP</color>,说明PRIMARY已经认出了副本集,但副本集电脑没有认出主集,或者自己的名字需要修改 /etc/hosts 文件。服务器名指向自己的时候可以设为 127.0.0.1
  
-如果复制据文件请确保您的副本包含local据库的内容+添加仲裁节点时修改写策略 (查看官网说明((a>[[https://docs.mongodb.com/manual/reference/command/setDefaultRWConcern/#setdefaultrwconcern|官网说明]])) 中的 **Example** ) 
 +<code > 
 +db.adminCommand({ 
 +  "setDefaultRWConcern" : 1, 
 +  "defaultWriteConcern" : { 
 +    "w" : 2 
 +  } 
 +}) 
 +</code> 
 + 
 +<WRAP center round tip 60%> 
 +当节点目为奇数时可以不需要仲裁节点。 
 +当节点目为偶数个时,需要部署一个仲裁节点,否则偶数个节点,当主节点挂了后,其他节点会变为只读 
 +</WRAP>
  
-  * 指定同步节点 rs.syncFrom(hostportstr)指定同步节点为节点默认的是同步节点 是主节点+Oracle Cloud 的1核1G内存实例作为副节点会经常宕机。原因是内存不足更新就会占用掉1G的内存。因此微小实例只能用作「仲裁」角色。而仲裁角色也非常重要否则无论副集还是主集宕机,都会导致数据库不能用
  
-但是该设置在重新启动节点,或者同步指定的新节点的连接被关闭了,是会失效的。(建议先测试) 
  
 ====== 其它命令 ====== ====== 其它命令 ======
行 135: 行 152:
 use admin use admin
 db.shutdownServer() db.shutdownServer()
 +</code>
 +
 +连接命令
 +<code> 
 +var url = format("mongodb://%s,%s?replicaSet=%s&readPreference=%s"
 +  , "localhost:27017",
 +  , "localhost:27018"
 +  , "foo"
 +  , "primaryPreferred"); //nearest
 </code> </code>
  
it/database/mongodbreplication.1639962847.txt.gz · 最后更改: 2021-12-20 01:14 由 goldentianya
回到顶部
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0