使用软件包安装并配置MongoDB的主从复制
第一步:下载相关软件包
https://xianyijitan.top/wp-blog/typora-user-file/mongodb-linux-x86_64-CentOS7-3.4.24.tgz
第二步:解压
mkdir /usr/local/mongodb
tar -xvf mongodb-linux-x86_64-CentOS7-3.4.24.tgz -C /usr/local/mongodb/
配置
创建 数据文件存放目录
mkdir -p /usr/local/mongodb/data/db1
mkdir -p /usr/local/mongodb/data/db2
创建 日志文件存放目录 和 mongodb.log文件
mkdir /usr/local/mongodb/logs
touch /usr/local/mongodb/logs/mongodb1.log
touch /usr/local/mongodb/logs/mongodb2.log
创建mongodb1.conf 并写入下面配置信息
vim /usr/local/mongodb/mongodb1.conf
#数据文件存放目录
dbpath = /usr/local/mongodb/data/db1
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb1.log
#默认端口27017
port = 27017
#以守护程序的方式启用,即在后台运行
fork = true
#允许远程连接,127.0.0.1只允许本地连接
bind_ip=0.0.0.0
#是否需要认证,如果启用,则需要创建mongodb账号密码,使用账号密码才可以远程访问
#auth = true
replSet = rs0
创建mongodb2.conf 并写入下面配置信息
vim /usr/local/mongodb/mongodb2.conf
#数据文件存放目录
dbpath = /usr/local/mongodb/data/db2
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb2.log
#默认端口27018
port = 27018
#以守护程序的方式启用,即在后台运行
fork = true
#允许远程连接,127.0.0.1只允许本地连接
bind_ip=0.0.0.0
#是否需要认证,如果启用,则需要创建mongodb账号密码,使用账号密码才可以远程访问
#auth = true
replSet = rs0
配置环境变量
vim /etc/profile
# 添加一行
export PATH=$PATH:/usr/local/mongodb/bin
#使环境变量立即生效
source /etc/profile
配置/etc/hosts文件
[root@test mongodb]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.135 test
启动MongoDB数据库
mongod -f /usr/local/mongodb/mongodb1.conf
#或
mongod --config /usr/local/mongodb/mongodb1.conf
关闭MongoDB数据库
mongod --shutdown -f /usr/local/mongodb/mongodb1.conf
mongod --shutdown -f /usr/local/mongodb/mongodb2.conf
初始化副本集:在主服务器上,执行以下命令初始化副本集:
mongo --port 27017
rs.initiate()
这将把当前服务器设置为主服务器,并初始化一个副本集。
添加从服务器:在MongoDB客户端连接到主服务器后,执行以下命令来添加从服务器:
rs.add("从服务器名字:27018")
重复执行该命令,以添加任意数量的从服务器。
检查副本集状态:在主服务器上执行以下命令,检查副本集的状态:
rs.status()
在从服务器中设置(可以不用配置)
rs.slaveOk()
是一个 MongoDB 的 shell 命令,用于在复制集中允许从节点读取数据。在复制集中,数据是从主节点复制到从节点的。默认情况下,从节点只能读取自己的数据副本,而不是从主节点直接读取数据。使用 rs.slaveOk()
命令可以允许从节点直接从主节点读取数据,而不是等待数据复制到从节点。
这个命令通常在从节点上进行设置,以便从节点可以更快地获取数据。通过允许从节点直接从主节点读取数据,可以减少数据复制的延迟,提高读取性能。
rs.slaveOK()
db.setSlaveOk()
连接数据库
mongo --port 27017
# 或使用用户名和密码连接
mongo --port 27017 -u root -p 111111
设置超级用户
#必须连接到mongo,选择进入 admin
use admin
# 创建用户
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);
创建用户后,停止mongo服务,在配置文件中开启 auth=true,再次启动 使用用户名和密码访问
# 关闭
db.shutdownServer();
# 修复
mongod -f mongod.conf --repair
# 查看用户
show users
# 修改用户名和密码
db.changeUserPassword("root", "111111")