具体原因未知,可能是由于权限
1. /usr/local/var/mysql 全部删除
2. 执行 /usr/local/Cellar/mysql/
3. 尝试重启 mysql.server restart
具体原因未知,可能是由于权限
1. /usr/local/var/mysql 全部删除
2. 执行 /usr/local/Cellar/mysql/
3. 尝试重启 mysql.server restart
#连接mongo客户端,执行
db.setProfilingLevel(1) #开启prifile监控, 0 关闭,1 记录慢命令,2 记录全部
db.getProfilingLevel() #查看当前监控等级
db.system.profile.find() #查看监控日志
1. pip install dex
2. 连接mongo shell, 执行` db.setProfilingLevel(1) `开启监控,等待监控几天生成日志
3. 运行 dex -p mongodb://myUser:myPass@myHost:12345/myDb 查看有待优化的字段
--auth
参数来启动即可,但是运行在副本集状态下时,与普通模式有点区别:--keyFile
;并且增加此参数后将自动启用用户认证;--logpath
openssl rand -base64 580 > mongo_rst.key
chmod mongo_rst.key 300 # key文件权限必须为 x00 ,即用户组及其它无任何权限,例如300
mongod --replSet myrst --dbpath=/opt/mongo/db1/ --port 30001 --keyFile /opt/mongo/mongo_rst.key --bind_ip=127.0.0.1,192.169.0.2 --logpath=/opt/mongo/logs/rst1.log
自己为了测试方便,使用一台机器,将mongo执行在不同端口,并指定了多个目录存放数据
28017端口需要提供WEB管理工具,因此不能占用 只有两个节点时,副本集将不具备真正的故障转移能力,故而官方推荐的副本集是至少3个节点.
mongod --replSet {repset_name} --dbpath=/tmp/mong/db1/ --port=30001 > /dev/null 2>&1 &
mongod --replSet {repset_name} --dbpath=/tmp/mong/db2/ --port=30002 > /dev/null 2>&1 &
mongod --replSet {repset_name} --dbpath=/tmp/mong/db3/ --port=30003 > /dev/null 2>&1 &
mongod --replSet {repset_name} --dbpath=/tmp/mong/db4/ --port=30004 > /dev/null 2>&1 & #作为仲裁节点,没有仲裁节点无法实现自动切换主从
参数说明: --replSet 以副本集方式运行服务 --dbpath 指定数据存放路径 --port 指定端口
service mongodb start #启动服务
mongo #执行cli工具
use admin #
rs.initiate({'_id':'myrst', 'members':[{'_id':0,'host':'127.0.0.1:30001','priority':2}, {'_id':1,'host':'127.0.0.1:30002','priority':1}, {'_id':2,'host':'127.0.0.1:30003','priority':1}, {'_id':3, 'host':'127.0.0.1:30004','priority':1,'arbiterOnly':true}] });
# priority:1 设置优先级, 'arbiterOnly':true 设为仲裁节点
此时将看到如图所示,即表示成功运行
后面登陆副本集的mongo客户端,需要加端口
mongo --port 30001
本地副本集启动脚本
rs.status()
增加新的副本集服务
mongod --replSet {repset_name} --dbpath=/tmp/mong/db1/ --port=30001 > /dev/null 2>&1 &
登陆主节点client,进行如下操作
mongo --port 30001 use admin rs.add("127.0.0.1:30004") #添加新节点 rs.addArb("127.0.0.1:30004") # 添加仲裁节点
查找原有副本集并kill
掉其进程
登陆主节点client,进行如下操作
mongo --port 30001 use admin rs.remove("127.0.0.1:30004")
rs.slaveOk()
rs.stepDown()
此功能亦可实现节点的强制切换
config=rs.conf()
config.members[1].priority=2
rs.reconfig(config)
config={"members" : [
{"_id" : 0,"host" : "127.0.0.1:30001", priority : 1},
{"_id" : 1,"host" : "127.0.0.1:30002", priority : 2},
{"_id" : 2,"host" : "127.0.0.1:30003", priority : 1},
{"_id" : 3,"host" : "127.0.0.1:30004", priority : 1, 'arbiterOnly':true}
]}
rs.reconfig(config)
1. admin表增加用户admin
db.addUser({'admin','admin'});
2. 使用全局用户认证登陆
mongo {ip}/{dbname} -u {username} -p {password} --authenticationDatabase admin
1. use db_name
2. db.createUser({user:'username', pwd:'passwd', roles:['readWrite', 'dbAdmin']})
# 2.5版开始已启用addUser()
3. db.dropUser('username')
点此查看官方添加用户文档
导出
mongodump --authenticationDatabase=dbname -u username -p passwd -d dbname -o out_path --port 30000
导入
mongorestore -d dbname db_file_path
点此查看官方备份恢复文档
Copyright © 2016 yjiang's cake