编写docker-compose.yml文件
version: "3.0"
services:
mongo01:
image: mongo
container_name: mongo27018
ports:
- "27018:27017"
volumes:
- /root/langchain/mongo27018:/data/db
restart: always
command: mongod --replSet langchain
networks:
- mongo_network
mongo02:
image: mongo
container_name: mongo27019
ports:
- "27019:27017"
volumes:
- /root/langchain/mongo27019:/data/db
restart: always
command: mongod --replSet langchain
networks:
- mongo_network
mongo03:
image: mongo
container_name: mongo27020
ports:
- "27020:27017"
volumes:
- /root/langchain/mongo27020:/data/db
networks:
- mongo_network
restart: always
command: mongod --replSet langchain
networks:
mongo_network:
启动服务
进入docker-compose.yml所在目录,执行docker-compose up -d
进入mongo01容器
cd /root/langchain
docker-compose exec mongo01 bash
登录mongo
mongosh
配置分片
config = {
"_id":"langchain",
"members":[
{
"_id":0,
"host":"host:port"
},
{
"_id":1,
"host":"host:port"
},
{
"_id":2,
"host":"host:port"
}
]
}
rs.initiate(config)
设置密码
use admin;
db.createUser({ user: 'zyj', pwd: '123456zyj', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
验证
db.auth('zyj','123456zyj')
切换数据库
use langchain
创建数据库,用户,密码
db.createUser({ user: 'lang', pwd: 'lang123456', roles: [ { role: "readWrite", db: "langchain" } ] });
注意:需要先创建数据库,再创建用户
GoLang连接mongo副本集
[mongo]
MongoAddr = mongodb://用户:密码@ip:port,ip:port,ip:port/数据库
package mongo
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/mongo" //MongoDB的Go驱动包
"go.mongodb.org/mongo-driver/mongo/options"
"mongoServer/config"
)
var(
client *mongo.Client
LANG *mongo.Collection
)
func init(){
options := options.Client().ApplyURI(config.GetMongoAddr()) //mongo地址
options.SetReplicaSet("langchain") //指定副本集
var err error
client, err = mongo.Connect(context.TODO(), options)
if err!=nil {
fmt.Println(err.Error())
return
}
err = client.Ping(context.TODO(), nil)
if err!=nil {
fmt.Println(err.Error())
return
}
LANG = client.Database("langchain").Collection("Tool") //指定数据库,集合
}