本文主要讲述什么是主从复制架构,为何采用这种架构, MongoDB如何搭建主从复制架构,需要进行怎样的过程,有哪些基本的命令,如何测试其效果。
1. 单台服务器的局限
在学习和开发测试中,是可以采用单台服务器,启动一个mongod服务器进程。但实际生产环境中,这样处理会存在很高的风险,比如服务器崩溃、访问不到了… 这样会影响到数据库服务的使用,也可能跟严重,比如硬盘坏了,不仅数据库服务无法使用,甚至是直接数据丢失了。
为了保证数据可用,一般的数据库架构都会选择一些数据冗余的方式, 比如单台服务器可以选择定时备份,可以选择 ”主从复制“ 模式, 实际上MongoDB也可以选择 “主从复制”
MongoDB中,可以选择两种方式进行数据冗余, 主从复制和副本集的方式 (参考自“MongoDB权威指南”),其中主从复制 (Master-Slaver)
主从复制的基本结构,如下图所示
基本的结构就是 :
- 客户端(Client Application)读和写都是看到的主服务器(primary), 用户看不到从节点服务器。
- 实际上, 在写入的时候,主服务器会向从服务器进行复制 ,实现数据备份的功能。
2 . 搭建的基本步骤
MongoDB中主从复制,配置相对来说,比较简单。按照使用场景,分为 “需要带账号认证”和“不要认证”。基本操作步骤类似,区别是具体的配置项略有不同,具体的操作步骤如下
-
需要账号认证的操作步骤
什么是安全认证,顾名思义,就是在数据库中建立了用户之后,如果开启安全认证,就需要输入用户名+密码才可以访问,开启安全访问也很简单,只需要在配置文件中加上 auth = true 即可对于开启安全访问的主服务器中:
- 主服务器 (创建用户后),创建一个keyfile文件,并配置keyfile ,基本的创建命令如下
创建成功之后,将这个文件放到master服务器的一个目录中,并且分配好权限,接下来在配置文件中,配置中keyfile选项,具体配置文件如下openssl rand -base64 741 > /Users/workbook/Desktop/LDH_DAY_WORK/mongodb_slave/mongo_key
# cpoy 一份用作 主服务器的配置文件 dbpath = ../data/db # 相对于bin目录,运行的时候,是进入bin目录运行,因此用的相对路径 # Append logs to /Users/workbook/Desktop/LDH_DAY_WORK/mongodb_master/log/mongodb/mongo.log logpath = ../log/mongodb/mongo.log logappend = true # 绑定id后,只可以利用ip访问 ,并且只可以利用这个ip访问 bind_ip = 127.0.0.1 # 指定主服务器的端口 port=27110 #端口 # maxConns=100 #最大同时连接数 journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。 # 设置为主服务器 master=true auth
- 主服务器 (创建用户后),创建一个keyfile文件,并配置keyfile ,基本的创建命令如下