可怜我没有备份啊,怎么会突然就整个数据库没有了?昨天访问网站还好好的..... 也没搜到别人这个问题怎么解决
哭晕在厕所,怎么又是整个数据库都没了??是docker安装的
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 是否有文件?
./db/mongodb/data
除了mongodb里面,其他的数据没有丢把?
@Fecshop #3楼 其它数据都在,就是mongodb的数据库都没了。。./db/mongodb/data/ 里面是有文件的
首先,你先看看/var/lib/mongo22 里面是否有数据?
/var/lib/mongo22
/var/lib/mongo22 里面是否有数据?先回答我这个。
然后,更改下配置试试
将./db/mongodb/etc/mongod.conf
./db/mongodb/etc/mongod.conf
文件中的配置dbPath: /var/lib/mongo22 改成 dbPath: /data/db
dbPath: /var/lib/mongo22
dbPath: /data/db
然后重启docker试试
docker-compose stop docker-compose up -d
@Fecshop #7楼 /var/lib/mongo22 docker-compose exec mongodb bash,没这个目录,修改了还是不行,没有fecshop这个数据库
@kyohaha #9楼 你先进入mongodb的容器,
docker-compose exec mongodb bash
然后看看有没有这个目录? /var/lib/mongo22, 里面是否有数据
@Fecshop #10楼 没有这个目录。 /var/lib/mongo22: No such file or directory
贴一下你的 docker-compose.yml 文件内容
你是否更改了这个文件的内容docker-compose.yml?
另外:https://github.com/fecshop/yii2_fecshop_docker 你是用的默认的,还是阿里云的那个yml文件构建的?
@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
宿主主机的文件路径 ./db/mongodb/data
这里面的内容,你是不是动过啊?mongodb的数据就是存储在这里的
或者,你是否昨天执行了什么操作,进行了删除?
你大致回忆一下,干了那些事情,可能导致这个问题?
@Fecshop #14楼 没有啊,只是用ftp上传了翻译文件appfront.php,连ssh都没登录,然后上传了还看了一下整个网站都正常。上次也是这样,好好的第二天看就没了。
你是在服务器上面搭建的,还是在自己的window?
说说你的环境,这个问题好怪啊
mongodb数据存储在宿主主机的 ./db/mongodb/data, 这个文件挂载到mongodb容器的 /data/db里面
/data/db
看你的内容,应该是数据丢失了,不清楚为什么丢失的
服务器啊,cenos7,安装这个贴子安装。https://github.com/fecshop/yii2_fecshop_docker 上次数据库没了我是重新导入测试数据的。 mongo mongodb:27017/fecshop --quiet /data/example_db/mongo-fecshop_test-20170419-065157.js
我也清楚为什么会这样
docker compose 配置docker部分也没有问题:
https://gist.github.com/wesleybliss/29d4cce863f5964a3eb73c42501d99e4
比较一下,是没有问题的,你自己好好琢磨琢磨, 我去google 查看了下资料 docker mongodb data lost,也没有类似的问题
docker mongodb data lost
@Fecshop #19楼 好,我看看
@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!"
}
@Fecshop #19楼 晕,又要以后不敢不备份了。 我是参照fecshop配置的:GUI访问数据库
1.mongodb的访问
推荐使用RoboMongo,
怎样才能安全配置mongodb?
我知道了,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
/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
不是robomongo的问题,是没有加载配置导致的问题,进而没有绑定ip,进而都可以放问mognodb,而mongodb默认没有设置用户名和密码,进而可以被远程连接,进而给你清空了数据库。
直接 mongo ip地址 就可以连接,是这个问题造成的
mongo ip地址
@Fecshop #24楼 好的,那知道了,上次也是这样了,多了个Warning数据库...
将docker-compose.yml文件中的配置:
改成:
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
然后重启启动
然后你可以进入到mongodb容器中,检查一下
如果现实 1 ? Ssl 0:01 mongod --bind_ip php 就没有问题了。
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]#
之前的那种配置,我测试是可以直接远程访问的,更改会就无法连接了
官方的配置都进行了更改:
@Fecshop #27楼 好的,我赶快改
@kyohaha #28楼 有问题继续发帖回馈
我的是拨号ip,我增加了一个管理员了。 https://www.cnblogs.com/zengguowang/p/5573947.html
@kyohaha [#30楼](#comment30)
1.是内网ip,按照上面写的,就是 php,docker host会映射到相应的ip的,应该没有问题的,你试试,应该可以的
php
2.添加mongodb的用户名密码:
https://github.com/docker-library/docs/tree/master/mongo#connect-to-mongodb-from-another-docker-container
然后,fecshop配置一下mongodb用户名和密码
@Fecshop [[#31楼](#comment31)](#comment31) 是可以,但是RoboMongo 连不上了。
绑定ip对应的php后面加上,ssh1,因为mongo连接的ssh,对应的容器名字是ssh1
,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就可以了
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
除了web(nginx),其他的开放的端口都关掉,也就是ports,就可以了
ports
这个我之前搞混了(docker了解少,最近多看了一下资料),容器之间的通信不需要开放端口,ports设置的是对外端口,譬如nginx的
学习了。要养成备份的好习惯,防止万一。。。。
@xanwe #35楼
嗯,备份很重要。