npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

elf2mongo

v1.2.2

Published

elf to mongodb

Downloads

2

Readme

mongodb备份和恢复

mongodb备份方式有三种

  • 文件快照方式
  • 复制数据文件方式
  • 使用mongodump方式 (整库)

oplog以及副本集,集群等备份,还是推荐用mongodump

原理

mongodb的简单备份一般使用mongoexport即可,只要你装了mongodb就有的命令,上面说的其他方式适合dba,而非程序员

基本用法

mongoexport -u 'username' -p 'password' -h 'host' -d xxx-db -c activities -o activities.csv

说明

  • -u 指明此数据库帐号,authenticationDatabase级别(可选)
  • -p 指明此数据库密码,authenticationDatabase级别(可选)
  • -h 指明mongo.conf配置的ip(可选)
  • -d 指明数据库是哪个
  • -c 说明collection名字
  • -o 是输出的文件名称(.json、.csv)

其实还有jsonArray,query等其他高级用法,详情见

mongoexport --help

全库备份(官方工具mongodump解决)

之前的做法是写一个shell脚本,把上面的每一个collection拷贝一行,然后crontab定时去执行

如果collection太多呢?真是又臭又长。。。

如果再加个日志,如果再xxx

那感觉才叫一个刺激。。。

以上是我写elf2mongo的动机

现在说说我的解决方案,即elf2mongo

elf2mongo是神马?

mmb是mongodb backup,很直白的说它是备份mongodb数据的。

readme里我是这样写的

elf2mongo = elf for mongodb backup, backup data to a dirname that generated by momentjs's date format

它可以根据配置项里的dirname选项,按照时间去生成目录,也就是说我想按照天去备份,就写成

"dirname":"YYYY-MM-DD"

我想按照秒备份

"dirname":"YYYY-MM-DD HH:mm:ss"

特性

  • 支持linux和mac(严格的说,支持shell的都可以)
  • 纯nodejs写的模块,提供cli,可以简单实用
  • 支持配置文件
  • 支持多个实例
  • 支持crontab,使用简单

Install

[sudo] npm install -g elf2mongo

Usages

第一步初始化一个配置文件(当前目录生成mongo.config.json),执行

mmb init

此时,用任何编辑器打开mongo.config.json,按需要修改里面的配置文件即可,然后就可以备份数据了:

mmb

会读取当前目录下的mongo.config.json文件,根据文件内的配置信息,备份全部数据到指定目录。

配置文件说明

当执行 mmb init, 会创建mongo.config.json文件,它就是mmb的配置文件

mongodb服务器配置项

  • "host": 127.0.0.1
  • "port": 27017
  • "username": username
  • "password": password
  • "db": database name

备份数据目录名称配置项

  • "dirname": dirname that generated by momentjs's date format, see http://momentjs.com/docs/#/parsing/string-format/

说明:

"dirname":"YYYY-MM-DD HH:mm:ss"

这样的format里有空格无法生成目录名,所以空格会替换为_

与crontab集成:以每分钟为例

如果不了解crontab,请移步https://www.baidu.com/s?wd=crontab&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=3&rsv_sug1=3

第一步:初始化

mmb init

第二步:修改配置文件,假定我的mongodb信息不变,我需要修改dirname,按分钟生成,具体如下:

{
  "host": "127.0.0.1",
  "port": "27017",
  "db": "appbricks",
  "dirname":"YYYY-MM-DD HH:mm"
}

第三步:测试

mmb

看看,生成的目录是否正常,以及目录里的数据是否正常

➜  mongodbbackup >  date
Sun Aug 23 22:42:14 CST 2015
➜  mongodbbackup >  mmb  
➜  mongodbbackup > ls
2015-08-23_22:42     2015-08-23_22:42.log     export.sh      mongo.config.json

这样就代表是正确的。

第四步:集成crontab,写一个脚本mmb_cron.sh(eg:目前线上用的是这个)

➜  mongodbbackup  cat mmb_cron.sh
 #!/bin/bash

source  ~/.bashrc
cd /home/deploy/data-copy
~/.nvm/versions/io.js/v2.2.1/bin/mmb

然后,给mmb_cron.sh增加执行权限

chmod +x mmb_cron.sh

配置crontab,定时执行mmb_cron.sh

➜  mongodbbackup  touch cron-mmb.conf

填写以下内容

49 * * * *  nohup sh /home/deploy/data-copy/mmb_cron.sh >~/cron.log 2>&1 &

保存即可。

➜  mongodbbackup > sudo crontab -u root cron-mmb.conf

这样每分钟都会执行mmb_cron.sh,即每分钟备份一次了

五个星星表示

  • minute — 分钟,从 0 到 59 之间的任何整数
  • hour — 小时,从 0 到 23 之间的任何整数
  • day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
  • month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
  • dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

crontab简单用法说明

  • crontab -l显示目前所有的任务
  • crontab -r删除所有的任务
  • crontab -e编辑任务

全文完