MongoDB 基础操作方法及每日备份

vim /etc/yum.repos.d/mongodb-org-4.0.repo
添加
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
安装
yum install -y mongodb-org
mongod --dbpath=/path --logpath=/path --logappend --port=27017 --fork
启动服务(开启权限认证,开启所有 IP)
mongod --auth --bind_ip_all
mango
进入命令行(使用用户名/密码)
mongo admin -u username -p password
登录用户(需先进入管理库 admin)
use admin
db.auth(‘username’, ‘password’)
查看所有数据库
show dbs
进入数据库
use dbname
查看数据集合
show collections
显示命令帮助
db.help()
vi /etc/mongod.conf
开启安全认证
security:
authorization: enabled
db.dropDatabase()
show users
创建用户
db.createUser({
user: 'username',
pwd: 'password',
roles:[{
role:'readWrite',
db:'dbname'
}]
})
权限划分(role)
-
- read:读取
- readWrite:读取和写入
- dbAdmin:数据库(数据)管理员
- dbOwner:数据库所有者
- userAdmin:数据库(用户)管理员
- readAnyDatabase:所有数据库读取
- readWriteAnyDatabase:所有数据库读取和写入
- dbAdminAnyDatabase:所有数据库(数据)管理员
- userAdminAnyDatabase:所有数据库(用户)管理员
- clusterAdmin:集群管理员
- clusterManager
- clusterMonitor
- hostManager
- backup:备份
- restore:恢复
- root:超级用户
修改密码
db.changeUserPassword('username', 'password')
修改用户信息
db.updateUser('username', {
pwd: 'password'}
)
删除用户
db.dropUser('username')
-
- 先进入 admin
use admin
-
- backup 用户
db.createUser({
user: 'backup',
pwd: 'password',
roles:[{
role:'backup',
db:'admin'
}]
})
-
- restore 用户
db.createUser({
user: 'restore',
pwd: 'password',
roles:[{
role:'restore',
db:'admin'
}]
})
-
- 全量备份
mongodump -u backup -p password --authenticationDatabase admin -o /data/backup/mongodb/
-
- 全量恢复
mongorestore -u restore -p password /data/backup/mongodb/
2.创建每日备份脚本
vim /data/shell/monitor/mongodb_backup.sh
-
- 添加
#auth=wujiang
#PRO Mongodb Full Backup
#Mongo Setting
dbhost="10.0.0.1" #服务器ip
user="backup"
userpwd='password'
#Backup Dir
db_bashdir="/data/backup/mongodb_bk"
dbdirdate=`date +"%Y.%m.%d"`
db_backupdir=$db_bashdir/$dbdirdate
if [ ! -d $db_backupdir ]
then
mkdir -p $db_backupdir
fi
#Backup Log
backup_log="$db_bashdir/mongodb_bk.log"
#Time
dbbackdate=`date +"%Y%m%d_%H%M%S"`
echo "########Start time: `date +"%Y-%m-%d_%H:%M:%S"`########" >> $backup_log
echo "Backup Starting ..." >> $backup_log
mongodump -h $dbhost -u $user -p $userpwd --authenticationDatabase admin -o $db_backupdir/$dbbackdate/
if [ $? -eq 0 ]
then
echo "备份到文件: $db_backupdir/$dbbackdate" >> $backup_log
echo "开始压缩文件..." >> $backup_log
cd $db_backupdir;/usr/bin/tar zcf $dbbackdate.tar.gz $dbbackdate
if [ $? -eq 0 ]
then
TAR=1
else
TAR=0
fi
Tar_filesize=`du -b $db_backupdir/$dbbackdate.tar.gz |awk '{print $1}'`
echo "Tar File Size: $Tar_filesize" >> $backup_log
if [ "$Tar_filesize" -ge 100 ] && [ $TAR -eq 1 ]
then
echo "Tar to File Success:$db_backupdir/$dbbackdate.tar.gz" >> $backup_log
rm -rf $db_backupdir/$dbbackdate
else
echo -e "Tar to File Failed:$db_backupdir/$dbbackdate.tar.gz !!! \n Please to check it." >> $backup_log
fi
else
echo -e "$db_backupdir/$dbbackdate\nBackup Fail!!! Please to check it." >> $backup_log
rm -rf $db_backupdir/$dbbackdate
fi
echo -e "########End time: `date +"%Y-%m-%d_%H:%M:%S"`########\n" >> $backup_log
echo -e "\n||||||################################################################################||||||\n" >> $backup_log
echo ""
echo "数据库已备份,路径为:$db_backupdir"
du -sh $db_backupdir/*
echo ""
-
- 添加计划任务
crontal -e
-
- 添加
#mongodb正式库
58 23 * * * /bin/sh /data/shell/monitor/mongodb_backup.sh /data/mongod/mongodb_backup.log 2>&1 &
THE END