Шпаргалка по 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