sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
vim /etc/security/limits.conf
# 添加mongo用户可以打开的文件数量的限制
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
[root@bogon ~]# curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tar.gz
[root@bogon ~]# tar -zxf mongodb-linux-x86_64-3.4.2.tgz # 解压
[root@bogon ~]# mv mongodb-linux-x86_64-3.4.2 /usr/local/mongo # 移动目录到/usr/local/mongo
[root@bogon mongo]# mkdir /usr/local/mongo/{conf,data,logs}
[root@bogon mongo]# vim /usr/local/mongo/conf/mongo.conf
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
master=true
oplogSize=2048
port=27017 #端口号
fork=true #以守护进程方式运行
logpath=/usr/local/mongodb/logs/mongodb.log #日志文件
logappend=true #日志输出方式
dbpath=/usr/local/mongodb/data #数据库位置
maxConns=1024 #数据库最大连接数
master=true #主模式
oplogSize=2048 #日志滚动,单位M
[root@bogon mongo]# mkdir /usr/local/mongo/{conf,data,logs}
[root@bogon mongo]# vim /usr/local/mongo/conf/mongo.conf
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
slave=true
source=192.168.1.100:27017
autoresync=true
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
slave=true # 从模式
source=192.168.1.100:27017 # 指定主Mongodb
autoresync=true # 自动同步
[root@localhost ~]# ln -s /usr/local/mongo/bin/* /usr/bin/
[root@bogon mongo]# mongod -f /usr/local/mongo/conf/mongo.conf
# -f 指定配置文件
[root@bogon mongo]# mongod -f /usr/local/mongo/conf/mongo.conf --shutdown //关闭mongo
# 创建一个user库,然后创建集合,插入字段测试是否同步
[root@bogon mongo]# mongo
> use test
> db.test.save({AGE:18})
> db.test.find()
{ "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 } //此为查出的数据
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
# 从库查询数据
[root@bogon mongo]# mongo
> use test
> db.test.find()
{ "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 } //此为查出的数据
WARNING: Access control is not enabled for the database
原因分析:新版本的MongDB增加了安全性设计,推荐用户创建使用数据库时进行验证。如果用户想建立简单连接,则会提示警示信息。
解决方法
[root@bogon logs]# mongo # 进入mongo数据库
use admin //进入admin
db.createUser({user: 'root', pwd: '123456qwerty!@#$%^', roles: ['root']}) # 创建用户密码和权限
db.auth('root', '123456qwerty!@#$%^') # 返回1 认证成功,返回0认证失败
# 因为mongo的密码是针对库设置的,不是像mysql一样针对全局设置的
如果从服务器上进入mongo以后使用show dbs查看是否同步数据库报这个错误是正常的 因为SECONDARY是禁止读的
解决方法
# 从库执行
rs.slaveOk()
use test
db.agre.find()
{ "_id" : ObjectId("5f87ff66ab2013c2fb746333"), "AGE" : 18 } //从库能查寻到数据即可
--auth
:表示带着认证方式进行启动mongod -f /usr/local/mongo/conf/mongo.conf --auth
进入到mongo使用show dbs
发现报错
not authorized on admin to execute command { listDatabases: 1.0 }
此时应该先到admin库中进行验证
> use admin
> db.auth('root', '123456qwerty!@#$%^') # 返回结果为1则认证成功
> show dbs # 此时查看数据就可以了