Yapi 数据丢失问题解决
YAPI 安装
1.安装 node
curl -O https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz #下载 tar xf node-v10.9.0-linux-x64.tar.xz #解压 ln -s 【node 解压包路径】/bin/npm /usr/local/bin/ #快捷方式 ln -s 【node 解压包路径】/bin/node /usr/local/bin/ node -v v10.9.0
2.安装 mongodb
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz #下载 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz #解压 vim /etc/profile export PATH=【mongodb 解压包路径】/bin:$PATH #添加环境变量 source /etc/profile
添加在 MongoDB 目录下创建一个配置文件
vim mongodb.conf
dbpath=【DB 数据存放目录】 logpath=【DB 日志存放目录】/mongod.log logappend=true fork=true #后台运行,命令行窗口关掉也不影响
#启动服务端 ./mongod -f mongodb.conf #启动客户端 ./mongo
3.安装 Yapi
npm install -g yapi-cli --registry https://registry.npm.taobao.org #安装 yapi
使用 yapi 启动服务
yapi server #运行起来,请先确保 MongoDB 启动起来 #关闭 kill -9 pid
查看提示信息,填写部署信息,建议 1.60 版本(建议不要用太新的版本),部署完成后根据提示操作即可 由于提示中使用的 node 启动的,窗口关闭后会停止 yapi 服务,所以建议使用 pm2 管理,yapi 在后台运行
使用 PM2 启动服务
npm install -g pm2 #pm2 安装 pm2 start 【Yapi 启动的目录】/my-yapi/vendors/server/app.js #启动 pm2 stop 【Yapi 启动的目录】/my-yapi/vendors/server/app.js #关闭
这样以后就可以很方便的用 pm2 就行启动关闭啦
注意:pm2 启动的服务 kill -9 pid 是杀不掉的,所以还要用 pm2 stop 关闭 yapi
二、数据丢失问题?
issues: 莫名数据库里的数据就没了
原因:默认配置
mongoddb 使用默认配置端口号,且没有设置账号和密码,被黑客恶意删库。
所有数据都是备份的。您必须支付 0.015 BTC 到 16Vk6GrQYwzXvNxdBq7Zp6TGnwPEhpBWgB 48 小时才能恢复。在 48 小时到期后,我们将泄露并公开您的所有数据。如果拒绝付款,我们将联系通用数据保护条例(GDPR),并通知他们您以开放形式存储用户数据,并且不安全。根据法律规定,您将面临严厉的罚款或逮捕,您的基地垃圾将从我们的服务器上丢弃!您可以在这里购买比特币,使用本指南购买 https://localbitcoins.com 不需要花费太多时间 https://localbitcoins.com/guides/how-to-buy-bitcoins 后,使用您的 DB IP: getbase@cock.li 在邮件中写信给我。
解决:修改端口,添加账号
参考链接: https://blog.csdn.net/kxzhaohuan/article/details/81713949
修数据库端口
vim 【mongodb 目录】 /conf/mongodb.conf
#末尾添加,即可覆盖 20 port=【端口号】
添加账号密码权限
#以非安全模式启动 mongod ./mongod -f 【mongodb 目录】/conf/mongod.conf use admin db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]}); db.auth("root","123456") use yapi db.createUser({user:"root",pwd:"123456",roles:[{role:"readWrite",db:"yapi"}]}) db.auth("root","123456") #退出 kill -9 [mongod Pid] #重新启动服务 ./mongod -f 【mongodb 目录】/conf/mongod.conf -auth #尝试使用客户端连接 ./mongo --port 【端口号】 -u root -p 123456
Yapi 配置
vim 【Yapi 目录】 /config.json
{ "port": "7001", "adminAccount": "admin@admin.com", "db": { "servername":"127.0.0.1", "DATABASE":"yapi", "port":"【数据库端口】", "user":"【用户名】", "pass":"【密码】" }, "mail": { "enable": false, "host": "smtp.163.com", "port": 465, "from": "***@163.com", "auth": { "user": "***@163.com", "pass": "*****" } } }
此时 mongoddb 的启动方式为:
./mongod -f 【mongodb 目录】/conf/mongod.conf -auth
及安全模式,重新启动 yapi 即可。
三、mongoddb 扩展知识
主要程序位于解压包的/bin 目录下
其中 mongod
为 Server
端程序
而 mongo
为 Client
端程序
1.Server 端启动方式
#普通方式启动 ./mongod #带配置文件的启动方式 ./mongod -f 【mongodb 目录】/conf/mongod.conf #需要验证权限的方式启动 ./mongod -f 【mongodb 目录】/conf/mongod.conf -auth
基本参数:
- -f 指定配置文件
- –port 指定端口,默认是 27017
- –dbpath 数据目录路径
- –logpath 日志文件路径
- –logappend 日志 append 而不是 overwrite
- –fork 以创建子进程的方式运行
- –journal 日志提交间隔,默认 100ms
- –nojournal 关闭日志功能,2.0 版本以上是默认开启的
参考: http://www.mongodb.org/display/DOCS/File+Based+Configuration
2.Client 端的一些操作
#普通方式启动 ./mongo #查看当前库 db #切换使用库 use admin use test #查看所有库 show dbs #查看当前库有哪些表 show collections > system.indexes > system.users #查看当前库的 user 表 show users #根据当前库,查看当前库支持哪些操作 db.help(); #根据当前表,查看当前库支持哪些操作 db.users.help()
3.授权
use admin db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]}); db.auth("root","123456") use yapi db.createUser({user:"root",pwd:"123456",roles:[{role:"readWrite",db:"yapi"}]}) db.auth("root","123456")
4.关闭
#【mongo 中关闭】 use admin #正常关闭 db.shutdownServer() #强制关闭 db.shutdownServer({force : true}) #【直接杀死进程关闭】 #查看进程 ps -ef|grep mongod #杀死进程 kill -9 [pid]
强制关闭 Mongod,应对副本集中主从时间差超过 10s 时不允许关闭主库的情况,不要使用 kill 直接杀 mongo 进程的方式关闭数据节点,会造成数据损坏。
5.常见问题
错误提示:
2020-04-23T10:25:37.656+0800 E QUERY [thread1] Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on admin to execute command { listCollections: 1.0, filter: {}, $db: \"admin\" }", "code" : 13, "codeName" : "Unauthorized" } :
快速排查权限的问题
权限类问题,如果是用户权限问题,不太好排查,可以关闭服务端。
重新启动服务端,不要带 -auth
参数,这样就可以取消检测权限了,可以查看一下 admin 库中的 user 表状态和相关的权限。
安全模式与非安全模式快速切换脚本
将 switch.sh 脚本放在 bin 目录下可以方便切换 mongod 的启动方式
switch.sh
param= if [ -n "$1" ]; then param=" -auth" ; fi #echo $param pid=`ps -ef |grep "mongod"|grep -v "grep" |awk '{print $2}'` if [ -n "$pid" ]; then echo "kill -9 $pid" kill -9 $pid fi cd 【mongod 目录】/bin ./mongod -f 【mongod 目录】/conf/mongod.conf $param newPid=`ps -ef |grep "mongod"|grep -v "grep" |awk '{print $2}'` #echo "start $newPid"
脚本来切换 mongod 的模式
#非安全模式 sh switch #安全模式 sh switch auth
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
下一篇: Linux 虚拟机静态 IP 配置
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论