mongodb常用命令脚本化-自动化运维

把一些运维中常用到的mongodb命令写成shell脚本,极大的方便了维护
 

1 设置副本集

 
#!/bin/bash
#mongodb 进入client 并use admin
cd /usr/mongodb/bin
MongoDB='./mongo 192.168.1.7:37017'
$MongoDB <<EOF
use admin
rsconf={
        "_id" : "Job001",
        "members" : [
            {
                "_id" : 0,
                "host" : "192.168.1.7:37017"
            }
        ]
    }
rs.initiate(rsconf)
rs.add("192.168.1.8:37017")
rs.add("192.168.1.9:37017")
exit;
EOF
 

注释:把上面的内容写入***.sh文件中 chmod 777 ***.sh 赋给权限

在linux > sh ***.sh 即可完成那些命令

下同

2 修改副本集的设置

#!/bin/bash

#mongodb 进入client 并进入primary
cd /usr/mongodb/bin
MongoDB='./mongo 192.168.1.7:37017'
$MongoDB <<EOF
use MongoModelJobResume
#rs.status()
cfg=rs.conf()
cfg.members[0].priority=99
cfg.members[1].priority=50
cfg.members[2].priority=30
rs.reconfig(cfg)
rs.conf()
exit;

EOF

3 把一个表转到临时表,再copy回来,这样oplog中就会重新生成完整的log

(前提oplog 的size要足够大)

#!/bin/bash
#mongodb 进入client 并进入primary
cd /usr/mongodb/bin
MongoDB='./mongo 192.168.1.7:37017'
$MongoDB <<EOF
use MongoModelJobResume
rs.remove("192.168.1.8:37017")
rs.remove("192.168.1.9:37017")
db.tbJobResume.renameCollection("tbJobResumeOld")
db.tbJobResumeOld.copyTo("tbJobResume")
rs.add("192.168.1.8:37017")
rs.add("192.168.1.9:37017")
#db.tbJobResumeOld.drop()
exit;
EOF

4 按日期生成mongodb日志

mongodb日志默认写在一个文件了,时间久了查看等很不方便,用cron计划任务+脚本 可以实现按日期存放log
# rotatelog.sh 用下面的内容生成这个文件 chmod 777 rotelog.sh 赋予权限
 
#!/bin/bash
#mongodb client  use admin
cd /usr/mongodb/bin
MongoDB='./mongo 192.168.1.7:37017'
$MongoDB <<EOF
use admin
db.runCommand( { logRotate : 1 } )
exit;
EOF
 
再用 crontab -e 打开(没有就新建) 加入如下内容,并保存 (该文件路径在 /var/spool/cron/root/)
59 23 * * * /bin/sh /usr/mongodb/config/rotatelog.sh
 
这样的话每天晚上23点59分的时候就会把当天的日志以***日期.log的方式另存,原来的log文件会清空
 

5 MongoDB数据库自动备份还原的脚本

-----自动备份mongodb数据并压缩---

#!/bin/bash
filename=`date +%Y%m%d%H`
backmongodbFile=mongodb$filename.tar.gz
cd /home/mongo/back/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoDBAgent -o mongodb_dump/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoDBBg -o mongodb_dump/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoModelActor -o mongodb_dump/
tar czf $backmongodbFile  mongodb_dump/
rm mongodb_dump -rf

-----自动解压并还原mongodb数据---

#!/bin/bash
filename='20150330013'
backmongodbFile=mongodb$filename.tar.gz
cd /home/mongo/back/
tar zxvf $backmongodbFile
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoDBAgent mongodb_dump/MongoDBAgent
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoDBBg mongodb_dump/MongoDBBg
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoModelActor mongodb_dump/MongoModelActor
rm mongodb_dump -rf 

 

(转)mongodb常用命令脚本化-自动化运维的更多相关文章

  1. MySQL常用命令汇总(偏向运维管理)

    基础部分 1. select @@version; ##查询当前mysql的版本. 2. show variables like 'port';##查看mysql实例的端口. 3. show vari ...

  2. Ansible自动化运维工具及其常用模块

    Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...

  3. mongodb常用命令学习笔记

    mongodb常用命令学习笔记 创建数据库 use DATABASE_NAME eg: use users; 如果数据库不存在,则创建数据库,否则切换到指定数据库.要显示刚刚创建的数据库,需要向数据库 ...

  4. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  5. 自动化运维:(1)认识 Shell

    目录 (一)运维是什么? (二)什么是 Shell? (三)Shell的分类 (四)Shell脚本 (五)Shell的变量 (六)表达式 (七)Linux常见符号 (八)常见命令 (一)自动化运维是什 ...

  6. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  7. 七天学会SALTSTACK自动化运维 (3)

    七天学会SALTSTACK自动化运维 (3) 导读 SLS TOP.SLS MINION选择器 SLS文件的编译 总结 参考链接 导读 SLS SLS (aka SaLt State file) 是 ...

  8. 自动化运维 Ansible

    自动化运维 Ansible 特性 (1).no agents:不需要在被管控主机上安装任何客户端: (2).no server:无服务器端,使用时直接运行命令即可: (3).modules in an ...

  9. Ansible_自动化运维《Ansible之初识-1》

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

随机推荐

  1. 【CSS系列-选择器优先级总结】

    转:http://www.cnblogs.com/dolphinX/p/3511300.html 容易被忽略CSS特性   CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各 ...

  2. encodeURIComponent() 和 encodeURI()

    encodeURI(URIstring): 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) . 该方法的目的是对 URI ...

  3. 下拉选择框加listview删除

    package com.downselect; import java.util.ArrayList; import android.R.array; import android.app.Activ ...

  4. 结合源码看nginx-1.4.0之nginx模块组织结构详解

    目录 0. 摘要 1. nginx模块组织结构 2. nginx模块数据结构 3. nginx模块初始化 4. 一个简单的http模块 5. 小结 6. 参考资料 0. 摘要 nginx有五大优点:模 ...

  5. 【Linux/Ubuntu学习 14】Linux下查看文件和文件夹大小

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. ...

  6. 【Android 界面效果21】Android ViewPager使用详解

    这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如 ...

  7. python用装饰器实现缓存函数执行结果

    根据调用的函数名和调用的参数,对函数的结果进行缓存,下次执行的时候就不用重复计算   可以用装饰器来实现   import time import hashlib import pickle cach ...

  8. Java Script基础(八) Array数组对象

    一.Array数组 JavaScript中的数组也是具有相同数据类型的一个或者多个值得集合.用法和Java中的数组类似. Array对象的常用属性和方法: 属性: length:获取数组的长度: 方法 ...

  9. linux_iptables 详解

    iptables工具__过滤包—命令(-A.-I.-D.-R.-L等).参数(-p.-s.-d.--sport.--dport.-i.-o等).动作-j (ACCEPT.DROP.REJECT.RED ...

  10. mysql表的创建和删除

    在创建数据库表时,最好是在编辑器中写好创建表的代码,然后粘贴到命令行中,这样如果有错修改起来方便. 现在来创建一个user表: -- 打开数据库, --后面必须要有空格, 表示注释 USE mydb3 ...