MongoDB的伪副本模式
这个话题比较有意思,公司的测试环境本来是一个mongodb的三节点三副本全集群,升级了2次升到8.0。 结果吧,由于里面数据过于庞大,测试的时候经常把节点打挂,虽说是打挂后又能很快被docker拉起来,但是挂的那个时刻应用程序就掉了,导致测试失败。 这三台节点还都是8 cpu 32G memory的配置,真大无语了。 没办法,干脆弄成单节点,然后内存垒高到128G,cpu加到32,弄好之后,读取数据的Flink又不行了,要求是必须读mongo的副本,真完犊子。 那就强制启动个副本模式吧: mongo启动方式用的是docker compose,启动的时候新增参数 --replSet rs0 # mongo数据目录的属主是 999:999 mkdir -p /data/mongodb/27017/data chown -R 999:999 /data/mongodb/27017/data mkdir -p /data/mongodb/27017/conf/ cd /data/mongodb/27017 #先gen keyfile openssl rand -base64 756 > keyfile chmod 400 keyfile #准备mongod.conf EOF < cat > /data/mongodb/27017/conf/mongod.conf systemLog: destination: file path: "/data/db/mongod.log" logAppend: true net: bindIp: 0.0.0.0 port: 27017 security: keyFile: "/data/configdb/keyfile" EOF EOF < cat > /data/mongodb/docker-compose.yaml services: mongo: container_name: mongo image: mongo:8.0 restart: always environment: TZ: Asia/Shanghai volumes: - /data/mongodb/27017/data:/data/db - /data/mongodb/27017/conf/mongod.conf:/data/configdb/mongod.conf - ./keyfile:/data/configdb/keyfile command: --replSet rs0 --config /data/configdb/mongod.conf ports: - 27017:27017 EOF docker compose up -d 然后不算完啊,启动之后需要进入容器执行rs.initiate(), 放心大胆的执行,不会破坏任何原有的数据 ...