老爷级rocketchat4.87搬家记

之前在openwrt上用docker搭建的姥爷级聊天室软件 rocketchat 4.8.7,数据库 是mongo 4.0,也是姥姥级别的,需要迁移到服务器上,说说经过。

先在新服务器上搭建好新的docker环境,然后重新把姥爷级的rocketchat4.8.7从dockhub上拉下来,配置文件如下:

services:
  rocketchat:
    image: rocket.chat:4.8.7
    command: >
      bash -c
        "for i in `seq 1 30`; do
          node main.js &&
          s=$$? && break || s=$$?;
          echo \"Tried $$i times. Waiting 5 secs...\";
          sleep 5;
        done; (exit $$s)"
    restart: unless-stopped
    volumes:
      - /volume1/docker/rocketchat/uploads:/app/uploads
    environment:
      - PORT=3000
      - ROOT_URL=http://flgame.cycx.top
      - MONGO_URL=mongodb://mongo:27017/rocketchat
      - MONGO_OPLOG_URL=mongodb://mongo:27017/local
    depends_on:
      - mongo
    ports:
      - 3001:3000

  mongo:
    image: mongo:4.0
    restart: unless-stopped
    volumes:
     - /volume1/docker/rocketchat/data:/data/db
     - /volume1/docker/rocketchat/dump:/dump
    command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1

  mongo-init-replica:
    image: mongo:4.0
    command: >
      bash -c
        "for i in `seq 1 30`; do
          mongo mongo/rocketchat --eval \"
            rs.initiate({
              _id: 'rs0',
              members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
          s=$$? && break || s=$$?;
          echo \"Tried $$i times. Waiting 5 secs...\";
          sleep 5;
        done; (exit $$s)"
    depends_on:
      - mongo

然后访问ip:3001,能打开web端就说明第一步是ok的

进入openwrt的docker(源数据库),进行备份:

docker exec -it rocket-chat-mongo-db bash
mongodump

直接运行备份命令,会备份所有数据库,保存路径:/dump/

然后会得到三个目录:

将这三个目录复制到刚刚配置好的新rocketchat机器中的/dump/目录下,然后进入docker容器,运行还原命令。

docker exec -it rocket-chat-new-mongo-db bash
mongorestore --drop

本来以为重启容器这就完事了结果一看,数据原封不动,完全没有恢复的迹象,然后开始排查,终于发现故障原因:

先检查源数据库中的数据库列表,运行命令:

mongo
show dbs

发现只有四个,老机器用的数据库是最先面那个叫meteor的,然后和目标刚刚还原完的做一下比较:

发现新的机器有五个库,看来是rocketchat487自作聪明自己新建了一个叫rocketchat的库,既然新机器只认rocketchat库,那我把恢复好的meteor库改名成rocketchat不就成了,于是运行改名命令:

db.copyDatabase("meteor","rocketchat")

改完之后,重启容器,终于好了。

作者:刹那

命中有时终须有,命中无时需强求。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注