差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
it:database:mongodbreplication [2021-12-21 22:09] – [实际执行] goldentianya | it:database:mongodbreplication [2022-08-12 05:20] (当前版本) – [MongoDB 副本集] goldentianya | ||
---|---|---|---|
行 6: | 行 6: | ||
单版本的数据库连接通常为 <color # | 单版本的数据库连接通常为 <color # | ||
%%''</ | %%''</ | ||
+ | |||
+ | mongodb:// | ||
创建三个目录用来安装不同的MongoDB | 创建三个目录用来安装不同的MongoDB | ||
行 29: | 行 31: | ||
第一个副本还没有用户的时候可以用管理员 <color # | 第一个副本还没有用户的时候可以用管理员 <color # | ||
- | 允许在副本集中读取数据 <color # | + | 允许在副本集中读取数据 <color # |
====== 实际执行 ====== | ====== 实际执行 ====== | ||
行 35: | 行 37: | ||
准备三个服务器: | 准备三个服务器: | ||
* 主服务器:88.153.172.7: | * 主服务器:88.153.172.7: | ||
- | * 副本集:143.47.185.127:33720 (finsever) | + | * 副本集:141.144.205.48: |
- | * 仲裁集:217.160.61.19: | + | * 仲裁集:143.47.185.127: |
编辑 /etc/hosts 文件,让所有的机器互相知道。否则会一直卡住联不通 | 编辑 /etc/hosts 文件,让所有的机器互相知道。否则会一直卡住联不通 | ||
行 45: | 行 47: | ||
</ | </ | ||
- | 第一步:修改 / | + | 第一步:修改 |
< | < | ||
replication: | replication: | ||
行 76: | 行 78: | ||
security: | security: | ||
authorization: | authorization: | ||
- | clusterAuthMode: | ||
keyFile: / | keyFile: / | ||
</ | </ | ||
行 90: | 行 91: | ||
</ | </ | ||
- | **注意事项** | + | :!: <color #ed1c24>注意事项</ |
- | + | ||
- | 当副本集的数据量比较大的时候,我们添加新的节点的时候,如果使用初始化同步的话,会给主节点造成比较大的压力。我们有以下选择: | + | |
- | + | ||
- | * 暂停当前副本集中的一个次节点,然后将 次节点的数据(data)复制到要新添加的节点的数据目录。然后再将两个节点启动。(建议先测试) | + | |
- | + | ||
- | 如果要复制数据文件,请确保您的副本包含local数据库的内容。 | + | |
- | + | ||
- | * 指定同步节点 rs.syncFrom(hostportstr),指定同步节点为次节点,默认的是同步节点 是主节点。 | + | |
- | 但是该设置在重新启动节点,或者同步指定的新节点的连接被关闭了,是会失效的。(建议先测试) | + | * CPU还算好,但服务器的内存不能太小。至少要4G以上。否则只适合作为「仲裁」。 |
+ | * 必须要单数子集。一主两副,或者一主一副一仲裁。 | ||
+ | * security 和 replSet 可以在未接入 replication 前就开启的。 | ||
+ | * keyfile 需设成 chmod 600 ,否则无法启动 | ||
+ | * 各个主机必须互相认识(设置 / | ||
+ | * 如果长时间停留在状态 <color # | ||
添加仲裁节点时要修改写策略 (查看官网说明((a> | 添加仲裁节点时要修改写策略 (查看官网说明((a> | ||
行 117: | 行 115: | ||
</ | </ | ||
- | Oracle Cloud 的1核1G内存实例作为副节点会经常宕机。原因是内存不足,一次更新就会占用掉1G的内存。因此微小实例只能用作「仲裁」角色。 | + | Oracle Cloud 的1核1G内存实例作为副节点会经常宕机。原因是内存不足,一次更新就会占用掉1G的内存。因此微小实例只能用作「仲裁」角色。而仲裁角色也非常重要,否则无论副集还是主集宕机,都会导致数据库不能用。 |