Go to content Go to menu Go to search

Шпаргалка по mongodb

Подключиться с паролем

mongo -u 'root' -p 'pass' --authenticationDatabase "admin"

Показать список баз

show dbs
db.adminCommand('listDatabases')

Список пользователей

db.getUsers()

Создать пользователя

use <database>
db.createUser({user: "USER", pwd: "PASSWORD", roles: [{role: "readWrite", db: "DATABASE"}]})

Удалить пользователя

admin.dropUser ( "fred" )

Состояние сервера

Показать коннекты текущее состояние

db.serverStatus().connections

счетчик коннектов

db.currentOp(true).inprog.reduce((accumulator, connection) => { ipaddress = connection.client ? connection.client.split(":")[0] : "Internal"; accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1; accumulator["TOTAL_CONNECTION_COUNT"]++; return accumulator; }, { TOTAL_CONNECTION_COUNT: 0 })

Cостояние реплика-сетов

rs.conf()
rs.status()
rs.printReplicationInfo()

Дамп-восстановление

только одна база

mongodump --out=/tmp/mongo  --db=rocketchat

полный дамп с бинлогом

mongodump --oplog --out=/tmp/mongo

Восстановление базы:
только одна база

mongorestore -u root  --authenticationDatabase "admin" --db=rocketchat /tmp/rocketchat

Создание кластера master-slave-arbiter

1.Ставим три ноды, добавляем их IP в хосты (лучше когда ноды ходят друг в друга по хостнэйем)

2.Генерируем ключ и кладем его на все ноды:

openssl rand -base64 756 > /var/lib/mongodb/replica-auth.key
chmod 400 /var/lib/mongodb/replica-auth.key
chown mongodb:mongodb /var/lib/mongodb/replica-auth.key

3.В /etc/mongod.conf на всех нодах добавляем

security:
  keyFile: /var/lib/mongodb/replica-auth.key
  authorization: enabled
replication:
  replSetName: rs01
replication.enableMajorityReadConcern : false

4.Рестартуем демон

systemctl restart mongod

5.Подключаемся к одной ноде и запускаем кластер

mongo
rs.initiate()

6.Создаем админа

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "root",
    pwd:  "PASSWORD",
    roles: [ { role: "root", db: "admin" } ]
  }
)

7.Отключаемся и подключаемся с паролем

mongo -u "root" --authenticationDatabase "admin"

8.Добавляем вторую ноду и арбитра

rs.add( { host: "<HOST-2>:27017" } )
rs.addArb(  "<HOST-3>:27017"  )

9.Проверяем результат

rs.conf()
rs.status()
rs.printReplicationInfo()

Мониоринг mongo в Zabbix

Проект на GitHub: mikoomi-zabbix-mongodb-monitoring

Скрипты написаны на php5, нужен модуль php-mongo (aptitude install php5.6-mongo), кладем их в /etc/zabbix/scripts и делаем запускаем по cron:

echo 'SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#*   *  * * *   root    /etc/zabbix/scripts/mikoomi-mongodb-plugin-32.sh -D -h <MONGO-01>,<MONGO-02>  -u root -x <PASSWORD> -H <ZABBIX_SERVER> -z  <ZABBIX_HOST> >/dev/null 2>&1
' > /etc/cron.d/mongo-zabbix


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved