晕倒了,mongodb整个数据库又没有了,已经是第二次了。

bug问题 · kyohaha · 于 5年前 发布 · 14366 次阅读

可怜我没有备份啊,怎么会突然就整个数据库没有了?昨天访问网站还好好的..... 也没搜到别人这个问题怎么解决

共收到 34 条回复
kyohaha#15年前 0 个赞

哭晕在厕所,怎么又是整个数据库都没了??是docker安装的

Fecmall#25年前 0 个赞

https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml

mongodb:
    image: mongo:3.7
    restart: always
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/data/logs
    volumes:
      - ./db/mongodb/data:/data/db
      - ./db/mongodb/example_db:/data/example_db
      - ./db/mongodb/logs:/data/logs
      - ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
    ports:
      - 27017:27017 
    networks:
      - code-network 

你在宿主主机中查看一下 ./db/mongodb/data 是否有文件?

Fecmall#35年前 0 个赞

除了mongodb里面,其他的数据没有丢把?

4楼 已删除.
kyohaha#55年前 0 个赞

@Fecshop #3楼 其它数据都在,就是mongodb的数据库都没了。。./db/mongodb/data/ 里面是有文件的

Fecmall#65年前 0 个赞

首先,你先看看/var/lib/mongo22 里面是否有数据?

Fecmall#75年前 0 个赞

/var/lib/mongo22 里面是否有数据?先回答我这个。

然后,更改下配置试试

./db/mongodb/etc/mongod.conf

文件中的配置dbPath: /var/lib/mongo22 改成 dbPath: /data/db

然后重启docker试试

docker-compose stop
docker-compose up -d
8楼 已删除.
kyohaha#95年前 0 个赞

@Fecshop #7楼 /var/lib/mongo22 docker-compose exec mongodb bash,没这个目录,修改了还是不行,没有fecshop这个数据库

Fecmall#105年前 0 个赞

@kyohaha #9楼 你先进入mongodb的容器,

docker-compose exec mongodb bash

然后看看有没有这个目录? /var/lib/mongo22, 里面是否有数据

kyohaha#115年前 0 个赞

@Fecshop #10楼 没有这个目录。 /var/lib/mongo22: No such file or directory

Fecmall#125年前 0 个赞

贴一下你的 docker-compose.yml 文件内容

你是否更改了这个文件的内容docker-compose.yml?

另外:https://github.com/fecshop/yii2_fecshop_docker 你是用的默认的,还是阿里云的那个yml文件构建的?

kyohaha#135年前 0 个赞

@Fecshop #12楼 version: "2" services: web:

image: nginx:latest
ports:
  - "80:80"
  - "443:443"
restart: always
volumes:
  - ./app:/www/web
  - ./services/web/nginx/conf:/etc/nginx
  - ./services/web/nginx/logs:/www/web_logs
  - /etc/letsencrypt/live/www.cathaychile.com/fullchain.pem:/etc/letsencrypt                                                                                        /live/www.cathaychile.com/fullchain.pem
  - /etc/letsencrypt/live/www.cathaychile.com/privkey.pem:/etc/letsencrypt/l                                                                                        ive/www.cathaychile.com/privkey.pem
networks:
    - code-network
depends_on:
  - php

mysql:

image: mysql:5.7
volumes:
  - ./db/mysql/data:/var/lib/mysql
  - ./db/mysql/example_db:/var/example_db
  - ./db/mysql/conf.d:/etc/mysql/conf.d
ports:
  - "3306:3306"
restart: always
environment:
  - MYSQL_ROOT_PASSWORD=huaxia0305
networks:
  - code-network

php:

build:
  context: ./services/php/docker/
restart: always
volumes:
  - ./app:/www/web
  - ./services/php/etc/php7.1.13.ini:/usr/local/etc/php/conf.d/php7.1.13.ini
depends_on:
  - mongodb
  - mysql
networks:
    - code-network

mongodb:

image: mongo:3.7
restart: always
environment:
  - MONGO_DATA_DIR=/data/db
  - MONGO_LOG_DIR=/data/logs
volumes:
  - ./db/mongodb/data:/data/db
  - ./db/mongodb/example_db:/data/example_db
  - ./db/mongodb/logs:/data/logs
  - ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
ports:
  - 27017:27017
networks:
  - code-network

xunsearch:

image: hightman/xunsearch:latest
restart: always
volumes:
  - ./db/xunsearch/data:/usr/local/xunsearch/data
networks:
  - code-network

redis:

image: redis:4.0
restart: always
ports:
  - "6379:6379"
environment:
    REDIS_PASS_FILE: /run/secrets/redis-password
command: [
  "bash", "-c",
  '
   docker-entrypoint.sh
   --requirepass "$$(cat $$REDIS_PASS_FILE)"
  '
]
volumes:
  - ./db/redis/etc/redis.conf:/usr/local/etc/redis/redis.conf
  - ./db/redis/data:/data
  - ./db/redis/etc/redis-password:/run/secrets/redis-password
networks:
  - code-network

ssh1:

build:
  context: ./services/ssh/docker/
networks:
  - code-network
ports:
  - "2222:22"

networks: code-network:

driver: bridge
Fecmall#145年前 0 个赞

宿主主机的文件路径 ./db/mongodb/data

这里面的内容,你是不是动过啊?mongodb的数据就是存储在这里的

或者,你是否昨天执行了什么操作,进行了删除?

你大致回忆一下,干了那些事情,可能导致这个问题?

kyohaha#155年前 0 个赞

@Fecshop #14楼 没有啊,只是用ftp上传了翻译文件appfront.php,连ssh都没登录,然后上传了还看了一下整个网站都正常。上次也是这样,好好的第二天看就没了。

Fecmall#165年前 0 个赞

你是在服务器上面搭建的,还是在自己的window?

说说你的环境,这个问题好怪啊

Fecmall#175年前 0 个赞

mongodb数据存储在宿主主机的 ./db/mongodb/data, 这个文件挂载到mongodb容器的 /data/db里面

看你的内容,应该是数据丢失了,不清楚为什么丢失的

kyohaha#185年前 0 个赞

服务器啊,cenos7,安装这个贴子安装。https://github.com/fecshop/yii2_fecshop_docker 上次数据库没了我是重新导入测试数据的。 mongo mongodb:27017/fecshop --quiet /data/example_db/mongo-fecshop_test-20170419-065157.js

Fecmall#195年前 0 个赞

我也清楚为什么会这样

docker compose 配置docker部分也没有问题:

https://gist.github.com/wesleybliss/29d4cce863f5964a3eb73c42501d99e4

https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml

比较一下,是没有问题的,你自己好好琢磨琢磨, 我去google 查看了下资料 docker mongodb data lost,也没有类似的问题

kyohaha#205年前 0 个赞

@Fecshop #19楼 好,我看看

kyohaha#215年前 0 个赞

@Fecshop #19楼 晕,被勒索了! / 1 / {

"_id" : ObjectId("5b304ddb79620f990b69f9b9"),
"BitCoin" : "3GKioTFrCFYcTmZR4DXPGatTXXp6Ugcq79",
"eMail" : "backupservice@protonmail.com",
"Exchange" : "https://localbitcoins.com",
"Solution" : "Your Database is downloaded and backed up on our secured servers. To recover your lost data: Send 0.4 BTC to our BitCoin Address and Contact us by eMail with your server IP Address and a Proof of Payment. Any eMail without your server IP Address and a Proof of Payment together will be ignored. You can apply for a backup summary within 12 hours. Then we will delete the backup. You are welcome!"

}

kyohaha#225年前 0 个赞

@Fecshop #19楼 晕,又要以后不敢不备份了。 我是参照fecshop配置的:GUI访问数据库

1.mongodb的访问

推荐使用RoboMongo,

怎样才能安全配置mongodb?

Fecmall#235年前 0 个赞

我知道了,mongodb的默认配置是没有加载配置文件

而对于docker mongodb的配置

 - ./db/mongodb/etc/mongod.conf:/etc/mongod.conf

docker 中的mongodb没有加载这个配置文件

执行

ps -xa | grep mongod

我的手动安装的mongodb显示 /usr/bin/mongod -f /etc/mongod.conf

而docker安装的mongodb显示

mongod --bind_ip_all

这说明没有加载挂载过来的配置文件,进而导致的问题

对于挂载到mongodb的配置文件:https://github.com/fecshop/yii2_fecshop_docker/blob/master/db/mongodb/etc/mongod.conf

如果mongodb启动加载这个就没有问题了,因为里面有绑定ip的配置

net:
  port: 27017
  bindIp: php  # Listen to local interface only, comment to listen on all interfaces.

稍等,我整一下,让容器中的mongodb加载这个启动文件

https://github.com/fecshop/yii2_fecshop_docker/blob/master/db/mongodb/etc/mongod.conf

Fecmall#245年前 0 个赞

不是robomongo的问题,是没有加载配置导致的问题,进而没有绑定ip,进而都可以放问mognodb,而mongodb默认没有设置用户名和密码,进而可以被远程连接,进而给你清空了数据库。

直接 mongo ip地址 就可以连接,是这个问题造成的

kyohaha#255年前 0 个赞

@Fecshop #24楼 好的,那知道了,上次也是这样了,多了个Warning数据库...

Fecmall#265年前 0 个赞

将docker-compose.yml文件中的配置:

mongodb:
    image: mongo:3.7
    restart: always
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/data/logs
    volumes:
      - ./db/mongodb/data:/data/db
      - ./db/mongodb/example_db:/data/example_db
      - ./db/mongodb/logs:/data/logs
      - ./db/mongodb/etc/mongod.conf:/etc/mongod.conf
    ports:
      - 27017:27017 
    networks:
      - code-network 

改成:

mongodb:
    image: mongo:latest
    restart: always
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/data/logs
    volumes:
      - ./db/mongodb/data:/data/db
      - ./db/mongodb/example_db:/data/example_db
      - ./db/mongodb/logs:/data/logs
    command: ["mongod", "--bind_ip", "php"]
    ports:
      - 27017:27017 
    networks:
      - code-network 
  

然后重启启动

docker-compose stop
docker-compose up -d

然后你可以进入到mongodb容器中,检查一下

ps -xa | grep mongod

如果现实 1 ? Ssl 0:01 mongod --bind_ip php 就没有问题了。

绑定ip后,外部访问将会报错:

[root@iZ942k2d5ezZ mongo]# mongo 144.202.52.147
MongoDB shell version v3.6.1
connecting to: mongodb://144.202.52.147:27017/test
2018-06-25T16:49:39.178+0800 W NETWORK  [thread1] Failed to connect to 144.202.52.147:27017, in(checking socket for error after poll), reason: Connection refused
2018-06-25T16:49:39.179+0800 E QUERY    [thread1] Error: couldn't connect to server 144.202.52.147:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed
[root@iZ942k2d5ezZ mongo]# 


之前的那种配置,我测试是可以直接远程访问的,更改会就无法连接了

kyohaha#285年前 0 个赞

@Fecshop #27楼 好的,我赶快改

Fecmall#295年前 0 个赞

@kyohaha #28楼 有问题继续发帖回馈

kyohaha#305年前 0 个赞

我的是拨号ip,我增加了一个管理员了。 https://www.cnblogs.com/zengguowang/p/5573947.html

Fecmall#315年前 0 个赞

@kyohaha [#30楼](#comment30)

1.是内网ip,按照上面写的,就是 php,docker host会映射到相应的ip的,应该没有问题的,你试试,应该可以的

2.添加mongodb的用户名密码:

https://github.com/docker-library/docs/tree/master/mongo#connect-to-mongodb-from-another-docker-container

然后,fecshop配置一下mongodb用户名和密码

kyohaha#325年前 0 个赞

@Fecshop [[#31楼](#comment31)](#comment31) 是可以,但是RoboMongo 连不上了。

Fecmall#335年前 0 个赞

绑定ip对应的php后面加上,ssh1,因为mongo连接的ssh,对应的容器名字是ssh1

https://github.com/fecshop/yii2_fecshop_docker#gui访问数据库

在fecshop docker,ssh容器的配置如下:

ssh1:  
    build: 
      context: ./services/ssh/docker/
    networks:
      - code-network 
    ports:
      - "2222:22"

因此,mongo 将绑定的ip中加上:ssh1就可以了

mongodb:
    image: mongo:3.7
    restart: always
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/data/logs
    volumes:
      - ./db/mongodb/data:/data/db
      - ./db/mongodb/example_db:/data/example_db
      - ./db/mongodb/logs:/data/logs
    command: ["mongod", "--bind_ip", "php,ssh1"]
    ports:
      - 27017:27017 
    networks:
      - code-network 
Fecmall#345年前 0 个赞

https://github.com/fecshop/yii2_fecshop_docker/blob/master/docker-compose.yml

除了web(nginx),其他的开放的端口都关掉,也就是ports,就可以了

这个我之前搞混了(docker了解少,最近多看了一下资料),容器之间的通信不需要开放端口,ports设置的是对外端口,譬如nginx的

xanwe#355年前 0 个赞

学习了。要养成备份的好习惯,防止万一。。。。

Fecmall#365年前 0 个赞

@xanwe #35楼

嗯,备份很重要。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics