“Mongodb基础”的版本间的差异
跳到导航
跳到搜索
(→关闭) |
(→关闭) |
||
第359行: | 第359行: | ||
启动/关闭mongodb | 启动/关闭mongodb | ||
+ | |||
+ | 关闭 试过 有人说数据会清空 | ||
+ | |||
+ | > use admin | ||
+ | switched to db admin | ||
+ | > db.shutdownServer() | ||
+ | Sat Oct 23 12:39:18.531 DBClientCursor::init call() failed | ||
+ | server should be down... | ||
+ | Sat Oct 23 12:39:18.543 trying reconnect to 127.0.0.1:27017 | ||
+ | Sat Oct 23 12:39:18.544 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
mongod --fork --dbpath=/data/db --logpath=/data/db/mongod.log --rest --journal | mongod --fork --dbpath=/data/db --logpath=/data/db/mongod.log --rest --journal |
2021年10月23日 (六) 12:41的版本
目录
install
yum or apt
Docker mongo
install in Docker
bin
wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.0.tgz 在国内 可能有点慢 可以放国个下载再拉回来 什么的 mv mongodb-linux-x86_64-3.2.0/ /data/apps/mongodb echo 'export PATH=$PATH:/data/apps/mongodb/bin/' >> /etc/profile or cat >> /etc/profile <<EOF export PATH=$PATH:/data/apps/mongodb/bin EOF source /etc/profile
测试安装
portX 可选的指定端口,如果不填,默认为27017 新建一个目录data存放mongodb数据: mkdir /data/apps/mongodb/data/ 用以下其中一个命令启动mongod: mongod --dbpath /data/apps/mongodb/data/ mongod --dbpath /data/apps/mongodb/data --auth mongod --dbpath /data/apps/mongodb/data --config /etc/mongodb.conf --auth 这时mongod已经启动,重新打开一个终端, 键入mongo进入交互程序: $> mongo > show dbs ...数据库列表 3. 导入初始数据 leanote初始数据存放在 leanote/mongodb_backup/leanote_install_data中。 root@mypi3b:/data/apps# ls leanote/mongodb_backup/leanote_install_data/ albums.bson has_share_notes.bson share_notebooks.bson albums.metadata.json has_share_notes.metadata.json share_notebooks.metadata.json cat leanote/mongodb_backup/leanote_install_data/albums.metadata.json {"indexes":[{"v":1,"key":{"_id":1},"name":"_id_","ns":"leanote_bin_test.albums"},{"v":1,"key":{"UserId":1},"name":"UserId_1","ns":"leanote_bin_test.albums","background":true}]} 打开终端, 输入以下命令导入数据。 $> mongorestore -h localhost -d leanote --dir leanote/mongodb_backup/leanote_install_data/ $> mongo > show dbs # 查看数据库 leanote 0.203125GB local 0.078125GB > use leanote # 切换到leanote switched to db leanote > show collections # 查看表 files has_share_notes note_content_histories note_contents
MongoDB安全认证
常用命令
evan@myxps:~/downloads/mongosh-1.0.7-linux-x64/bin$ ./mongosh --host 192.168.10.120 --port 27018 Current Mongosh Log ID: 614beac584f560bae1d83f92 Connecting to: mongodb://192.168.10.120:27018/?directConnection=true > show dbs #显示数据库列表 > show collections #显示当前数据库中的集合(类似关系数据库中的表) > show users #显示用户 > use <db name> #切换当前数据库,如果数据库不存在则创建数据库。 > db.help() #显示数据库操作命令,里面有很多的命令 > db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 > db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) > db.foo.find( { a : 1 } ) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1 > db.dropDatabase() #删除当前使用数据库 > db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库 > db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中 > db.repairDatabase() #修复当前数据库 > db.getName() #查看当前使用的数据库,也可以直接用db > db.stats() #显示当前db状态 > db.version() #当前db版本 > db.getMongo() #查看当前db的链接机器地址 > db.serverStatus() #查看数据库服务器的状态 use djs_kuafu_4; 建库 db.addUser("name","passwd");授权 MongoDB 删除数据库的语法格式如下: use 数据库名; db.dropDatabase() 删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。 实例 以下实例我们删除了数据库 runoob。 首先,查看所有数据库: > show dbsuse mongodb 常用命令 查看所有数据库 show dbs 查看当前选择的库 db 查看库下的所有集合 show tables show collections 删除库(这种方式删除数据目录还会有数据文件夹的) use dbname db.dropDatabase() 用这个方式可以清理文件下的内容,然后删掉目录即可 use s1 db.dropDatabase() db.repairDatabase() 删除集合 db.mytable.drop() 添加用户 use dbname db.addUser('admin','123456') 更改密码 db.addUser("admin","a123456") 删除用户 db.system.users.remove({admin:"a123456"}) 或者 db.removeUser('admin') 用户授权db.createUser({user:"su",pwd:"fenggu123$%^",roles:[ { role:"root", db:"admin" } ] }); db.auth('admin','a123456') ??????? 查看用户列表 db.system.users.find() 查看所有用户 show users 关闭服务 > use admin switched to db admin db.shutdownServer(); mongod --shutdown --dbpath /database/mongodb/data/ 查询集合 db.users.find() 条件查询 db.users.find({age:33}) 多个条件查询 db.users.find({age:33}),({a:1,b:1}) 查看负载 mongostat -h127.0.0.1:28018 -ufengguadmin -pfenggu123$%^ --authenticationDatabase=admin 备份所有 mongodump -h127.0.0.1:28018 -ufengguadmin '-pfenggu123$%^' -o /data/mongodb_backup/ -- authenticationDatabase=admin 恢复 mongorestore -h127.0.0.1:28018 -ufengguadmin -pfenggu123$%^ --db=s1 -- dir=/data/mongodb_backup/mongod_bak_now/2016_06_27/s1/ --authenticationDatabase=admin
MongoDB 创建数据库
MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库。 可以看到,我们刚创建的数据库 mydb 并不在数据库的列表中, 要显示它,我们需要向 mongo 数据库插入一些数据。 use mydb switched to db mydb db.mydb.insert({"name":"linuxsa"}) WriteResult({ "nInserted" : 1 }) > show dbs leanote 0.125GB local 0.03125GB mydb 0.0625GB
监控
7启动脚本
https://github.com/mongodb/mongo/blob/master/rpm/mongod.service
[root@k8sn1 ~]# cat /etc/mongod.conf # mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog: destination: file logAppend: true # path: /var/log/mongodb/mongod.log path: /data/logs/mongod.log # Where and how to store data. storage: dbPath: /data/apps/mongodb/data/ # dbPath: /var/lib/mongo journal: enabled: true # engine: # mmapv1: # wiredTiger: # how the process runs processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo # network interfaces net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting. #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options #auditLog: #snmp: [root@k8sn1 ~]# cat /var/run/mongodb/mongod.pid 2376 [root@k8sn1 ~]# ll /var/run/mongodb/mongod.pid -rw-r--r-- 1 mongod mongod 5 6月 16 15:24 /var/run/mongodb/mongod.pid [root@k8sn1 ~]# cat /usr/lib/systemd/system/mongod.service [Unit] Description=MongoDB Database Server After=network.target Documentation=https://docs.mongodb.org/manual [Service] User=mongod Group=mongod Environment="OPTIONS=-f /etc/mongod.conf" EnvironmentFile=-/etc/sysconfig/mongod ExecStart=/usr/bin/mongod $OPTIONS ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb PermissionsStartOnly=true PIDFile=/var/run/mongodb/mongod.pid Type=forking # file size LimitFSIZE=infinity # cpu time LimitCPU=infinity # virtual memory size LimitAS=infinity # open files LimitNOFILE=64000 # processes/threads LimitNPROC=64000 # locked memory LimitMEMLOCK=infinity # total threads (user+kernel) TasksMax=infinity TasksAccounting=false # Recommended limits for for mongod as specified in # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install] WantedBy=multi-user.target #sysv from . /lib/lsb/init-functions CONFIGFILE="/etc/mongod.conf" PROGRAM="/usr/bin/mongod" MONGOPID="/var/run/mongodb/mongod.pid" LOCK="/data/apps/mongodb/mongo/mongod.lock" test -x $PROGRAM || exit 0 case "$1" in start) ulimit -f unlimited ulimit -t unlimited ulimit -v unlimited ulimit -n 64000 ulimit -m unlimited log_begin_msg "Starting MongoDB server" $PROGRAM -f $CONFIGFILE log_end_msg 0 ;; stop) log_begin_msg "Stopping MongoDB server" # if [ -f $LOCK ]; then # rm $LOCK # fi if [ ! -z "$MONGOPID" ]; then kill $MONGOPID fi log_end_msg 0 ;; status) ;; *) log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}" exit 1 esac #!/bin/sh # chkconfig: - 64 36 # description:mongod case $1 in start) /usr/local/mongodb/bin/mongod --maxConns 20000 --config /usr/local/mongodb/mongodb.conf ;; stop) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()" ;; status) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()" ;; esac
关闭
- 没有启动脚本 或者启动脚本不成功时 请用kill -2 ,kill -9 不好 还可以关闭不了呢 Oct 23 2021
ps -ef | grep mongod root 3894 6353 1 20:04 ? 00:00:04 /usr/bin/mongod -f /etc/mongod.conf root 9366 30672 0 20:09 pts/12 00:00:00 grep --color=auto mongod [root@beta- etc]# kill -2 3894 6353 [root@beta- etc]# ps -ef | grep mongod root 9828 30672 0 20:09 pts/12 00:00:00 grep --color=auto mongod 启动/关闭mongodb 关闭 试过 有人说数据会清空 > use admin switched to db admin > db.shutdownServer() Sat Oct 23 12:39:18.531 DBClientCursor::init call() failed server should be down... Sat Oct 23 12:39:18.543 trying reconnect to 127.0.0.1:27017 Sat Oct 23 12:39:18.544 reconnect 127.0.0.1:27017 failed couldn't connect to server 127.0.0.1:27017 mongod --fork --dbpath=/data/db --logpath=/data/db/mongod.log --rest --journal --fork:以守护进程的方式运行MongoDB,关闭shell后不会停止,但要指定logpath --dbpath:指定数据库目录,必须手动创建 --logpath:指定日志文件路径,注意是文件不是目录,不需要手动创建 --rest:启用MongoDb web 界面,web端口(默认28017)=db端口(默认27017)+1000 --journal:启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里 可能出现的错误: ERROR: child process failed, exited with error number 1 原因1:上次mongodb未正常关闭 解决方法是删除mongod.lock,该文件将mongodb锁上防止用户操作 # find / -name mongod.lock /usr/local/mongodb/mongod.lock # rm -f /usr/local/mongodb/mongod.lock 原因2:启动时logpath指定的日志文件没有创建,且有同名文件夹,所有程序创建不了 原因3:加了--journal,去掉试试,这个不太确定 在mongodb的启动时,在数据目录下,会生成一个mongod.lock文件。如果在正常退出时,会清除这个mongod.lock文件,若要是异常退出,在下次启动的时候,会禁止启动,从而保留一份干净的一份副本数据。有人可能会想到删除这个文件,建议请不要这么做。如果这么做,我们也不知道数据文件是否会损坏,如果mongod.lock文件阻止mongod的启动,请对数据文件进行修复,而不是简单的删除该文件
docker-compose安装mongodb
参考
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
www.runoob.com Linux平台安装MongoDB
https://www.mongodb.org.cn/tutorial/59.html
win mongodb官网下载不了, MongoDB下载、安装、配置、使用,如何下载MongoDB数据库,MongoDB入门
NOSQL -- Mongodb的简单操作与使用(win10)