下载二进制包: #wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.15.tgz #tar xf mongodb-linux-x86_64-3.0.15.tgz #cd mongodb-linux-x86_64-3.0.15 创建数据存放路径、日志存放路径、程序路径 #mkdir /data/mongodata -p #mkdir /data/log/mongolog -p #mkdir /data/mongo -p
将当前所有文件复制 #cp -r * /data/mongo 配置环境变量 #more /etc/profile.d/mongodb.sh
export PATH=$PATH:/data/mongo/bin #source /etc/profile.d/mongodb.sh 配置mongodb配置文件 #cd /data/mongo/bin/ #vim mongodb.conf #数据文件存放目录 dbpath = /data/mongodata #日志文件存放目录 logpath = /data/log/mongolog/mongodb.log #端口 port = 27017 #以守护程序的方式启用,即在后台运行 fork = true
nohttpinterface = true 确定服务 #mongod --dbpath=/data/mongodata --logpath=/data/log/mongolog/mongodb.log --logappend --fork 通过配置文件启动 #mongod -f /root/mongodb/bin/mongodb.conf 测试 #mongo MongoDB shell version: 3.0.15 connecting to: test

show dbs local 0.078GB quit() WARNING: Readahead for /data/mongodata is set to 4096KB WARNING: You are running this process as the root user, which is not recommended. WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never' WARNING: soft rlimits too low. rlimits set to 3802 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files. 启动有警告,去掉

#vim /etc/rc.local if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi ulimit -u 65535 #echo never > /sys/kernel/mm/transparent_hugepage/enabled #echo never > /sys/kernel/mm/transparent_hugepage/defrag #runlevel #chmod +x /etc/rc.local 文件限制数调整 #vim /etc/security/limits.conf

  • soft nproc 32000
  • hard nproc 32000 重启: mongo

use admin switched to db admin db.shutdownServer(); 配置启动服务 #vim /usr/lib/systemd/system/systemd-mongodb.service [Unit] Description=mongodb After=network.target

[Service] Type=forking PIDFile=/data/mongodata/mongod.lock ExecStart=/data/mongo/bin/mongod -f /data/mongo/bin/mongodb.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true

[Install] WantedBy=multi-user.target 开启机器 #systemctl enable systemd-mongodb 进入查看数据库,只有一个local库,admin库是不存在的

show dbs local 0.078GB show tables; 新建账号具有grant权限,即:账号管理的授权权限 use admin switched to db admin db.createUser( ... { ... user:"dba", ... pwd: "dba", ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] ... } ... ) Successfully added user: { "user" : "dba", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } show dbs; admin 0.078GB local 0.078GB user:用户名

pwd:密码

roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选: Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system 具体角色: Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限

Mongodb中 数据库和集合的创建与删除 插数据

show dbs //查询所有的数据库 admin 0.078GB cmz 0.078GB local 0.078GB show collections //查询所有的集合(表)等同于show tables 创建数据库或切换到数据库(存在就切换,不存在就创建) use cmz switched to db cmz 创建集合,删除集合(一般可以不用创造集合,在插入数据时自动可以创建集合): db.createCollection('col') //创建集合 { "ok" : 1 } show collections col db.col.drop() //删除集合 true 5、备份 -h 指明数据库宿主机的IP --port 指明数据库的端口 -u 指明数据库的用户名 -p 指明数据库的密码 -d 指明数据库的名字 -c 指明collection的名字 -o 指明到要导出的文件名 -q 指明导出数据的过滤条件 --authenticationDatabase 验证数据的名称 --gzip 备份时压缩 --oplog use oplog for taking a point-in-time snapshot 全库备份 mongodump -h 10.0.0.4 --authenticationDatabase admin -o /mnt/ 备份cmz库 mongodump -h 10.0.0.4 --authenticationDatabase admin -d cmz -o /mnt1/ 备份cmz库的col集合 mongodump -h 10.0.0.4 --authenticationDatabase admin -d cmz -c col -o /mnt2/

创建test库

use test switched to db test db.createUser( ... { ... user: "jrw", ... pwd: "jrw", ... roles: [ ... { role: "readWrite", db: "test" } ... ] ... } ... ) Successfully added user: { "user" : "jrw", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } show users; { "_id" : "test.jrw", "user" : "jrw", "db" : "test", "roles" : [ { "role" : "readWrite", "db" : "test" } ] } 参考文档: https://blog.51cto.com/xiaorenwutest/2137022

二、ucloud云mongo磁盘升级 2.1、副本集群有主从
只要主节点正常运行就不会影响业务升级从库不影响服务 secondary 先升级,然后切换主从 primary 后升级 切换后会变成secondary 主从切换命令:rs.stepDown() 登陆mongo mongo --host 10.10.79.208 -u "root" --authenticationDatabase "admin" -p