Docker-compose部署mongodb分片集群 + Docker部署MongoDB + CentOS安装MongoDB

1、Docker安装mongodb

拉取镜像

docker pull mongo

创建Mongo容器

docker run -itd --name mymongo \
-p 27017:27017 \
-e TZ=Asia/Shanghai \
--privileged \
-v /dockerDeploy/mongodb/db/:/data/db \
--restart always \
mongo --auth
docker run -itd --name mongodb  --restart=always -p 27017:27017 -v /home/mongo/data:/data/db  -v /home/mongo/conf:/data/configdb  -v /home/mongo/logs:/data/log/  mongo:4.0.5  -f /data/configdb/mongod.conf --bind_ip_all  
# -v 指定配置文件启动
# --bind_ip_all 允许所以IP访问
# ----restart=always  Docker服务重启容器也启动
# --privileged  拥有真正的root权限

–auth 带授权验证的容器

–restart unless-stopped 不管状态码为多少 自动重启

–restart always 总是自动重启

-v /etc/localtime:/etc/localtime:ro 时区设置

-e TZ=Asia/Shanghai

开启密码访问验证。

  • 直接使用docker命令进入容器
docker exec -it mongodb bash
  • 进入后输入mongo命令进入mongo数据库
root@510533585ae0:/# mongo
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session {
    "id" : UUID("68c0fa27-a2e5-4155-9607-1c1b34d0906a") }
MongoDB server version: 4.2.0
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
  • 输入命令进入admin数据库
use admin
  • 创建一个用户
db.createUser({
    
    user: 'root', 
    pwd: 'kaide0630', 
    roles: [ {
    role: "root", db: "admin" } ] });
  • 校验用户 返回1 正确
db.auth("root","kaide0630")
  • 创建索引
# 装mongodb的时候要加索引

db.hisdata.createIndex( {
    deviceId: 1,mode:-1,time:1}, {
   background: true, sparse: true } )
db.hisdata.createIndex( {
    deviceId: 1,time:1}, {
   background: true, sparse: true } )
db.hisdata.createIndex( {
    time:1}, {
   background: true, sparse: true } )
  • 修改数据库密码加密方式
use mysql;

alter user 'root’@'%' identified with mysql_native_password by ‘rootpwd123’; 

flush privileges;
  • 退出
exit

role后面的参数参考,可根据时间情况选择:

Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

之后可以创建普通用户执行如下三条语句即可:

use test

db.createUser({
    
	user: 'test', 
	pwd:'test', 
	roles: [{
   
		role:"readWrite",
		db:"testdb"
	}]
});

db.auth("test","test")
  • mongodb 导出数据

    mongoexport  -ufengbo -p qwert12345!  -d fbdata3 -c zcdata --type=csv -o /iotdocker/mongoback/zcdata.dat --fields devicedId,time,content
    

2、Docker-compose部署mongodb分片集群

2.1 配置文件

# docker挂载了配置文件  可不创建vim /etc/mongodb/config.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8
      directoryForIndexes: true

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path

你可能感兴趣的:(运维,docker,docker-compose,mongodb)