Yapi 数据丢失问题解决

发布于 2024-10-17 11:15:00 字数 6264 浏览 10 评论 0

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 目录下

其中 mongodServer 端程序

mongoClient 端程序

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

丶视觉

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

苍风燃霜

文章 0 评论 0

悸初

文章 0 评论 0

撧情箌佬

文章 0 评论 0

森罗

文章 0 评论 0

lyn1245

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文