Skip to main content

用于编排 MongoDB 备份的命令行工具

项目描述

m2bk

https://travis-ci.org/axltxl/m2bk.svg?branch=develop https://badge.fury.io/py/m2bk.svg https://img.shields.io/gratipay/axltxl.svg

将您的 mongodump 备份直接发送到 AWS S3

m2bk是命令行工具,它通过 mongodump 执行大量 mongodb 数据库备份,将它们压缩成 gzip 压缩包,最后将它们发送到AWS S3 存储桶 (即将提供更多选项)。

http://i.imgur.com/PxqbEPA.gif

要求

贡献

您可以通过多种方式为 m2bk 做出贡献。代码补丁只是您可以提交以帮助项目的其中一件事。我们也欢迎反馈、错误报告、功能请求、文档改进、广告和测试。

反馈贡献

这是迄今为止最简单的贡献方式。如果您为了自己的利益而使用 m2bk,请不要犹豫分享。随时提交问题和增强请求。

代码贡献

代码贡献(补丁、新功能)是帮助项目开发的最明显方式。由于这种情况非常普遍,我们要求您遵循我们的工作流程以最有效地与我们合作。对于代码贡献,我们遵循“fork-and-pull” Git 工作流程。

1. Fork,然后在 GitHub 上克隆你的 repo

git clone git@github.com:your-username/m2bk.git
git add origin upstream https://github.com/axltxl/m2bk.git

如果您已经分叉了 repo,那么请确保在发出拉取请求之前合并来自“上游”的最新更改。

git pull upstream

2. 在你的本地仓库中创建一个新的特性分支

git checkout -b my_feature_branch

3. 进行更改,然后确保测试通过

pyvenv m2bk-pyve && source m2bk-pyve/bin/activate
python3 setup.py test

4. 完成后提交更改

git commit -a -m "My commit message"
git push origin my_feature_branch
  1. 提交包含更改的功能分支的拉取请求。

安装

可以通过pipeasy_install直接从源代码安装 m2bk ,无论您喜欢哪种方式。

选项#1:点子

$ pip install m2bk

选项#2:从源头

$ git clone git@github.com:axltxl/m2bk.git
$ cd m2bk
$ python3 setup.py install

选项#3:easy_install

$ easy_install m2bk

从这一点开始,您可以编辑您的配置文件

$ vi /etc/m2bk/m2bk.yaml

基本用法

正常执行

$ m2bk

安静的输出

$ m2bk -q

试运行

$ m2bk -d

指定备用配置文件

$ m2bk -c /path/to/my/custom/m2bk.yaml

选项

m2bk [options]
  • --version显示版本号并退出

  • -h | --help显示帮助信息并退出

  • -c [文件] | --config=[文件] | --config [file]指定要使用的配置文件

  • -d | --dry-run实际上什么都不做

  • -q | --quiet安静的输出

  • --ll | --log-level=[num]设置日志输出级别

  • -l日志文件 | --log-file LOG_FILE 设置日志文件

配置文件

配置是通过一个简单的YAML 文件处理的,该文件包括一系列部分(它们是 YAML 对象),每个部分由指令(YAML 数字、字符串或数组)组成,这些将确定m2bk上的相应行为。如果m2bk在命令行上没有收到任何配置文件,它将尝试读取/etc/m2bk.yaml请注意,配置格式仍在进行中,很可能会在 m2bk 的早期阶段发生变化。

以下是配置文件的示例:

---
driver:
  name: s3
  options:
    aws_access_key_id: "SDF73HSDF3663KSKDJ"
    aws_secret_access_key: "d577273ff885c3f84dadb8578bb41399"
fs:
  output_dir: "/opt/tmp/mydir"
mongodb:
  mongodump: "/opt/bin/mongodump"
  host_defaults:
    port: 666
    user_name: "satan"
    password: "14mh4x0r"
  hosts:
    foo:
      address: "foo.example.local"
      port: 34127
      dbs:
        - "app"
        - "sessions"
        - "another_one"
    bar:
      address: "bar.example.com"
      password: "1AmAn07h3rh4x0r"
      auth_db: bar
      dbs:
          - customers
          - sessions

通过此配置文件,您可以设置有关要备份的数据库和要将它们发送到的 AWS S3 存储桶的关键变量。

配置文件:部分和指令

fs部分

本节有关于文件和目录操作的指令

指令

fs.output_dir

  • 类型:字符串

  • 默认值:/tmp/m2bk

  • 作用:m2bk要临时保存备份文件的目录

mongodb部分

本节包含有关m2bk将连接到的 mongodb 服务器的指令,包括将通过mongodump备份的数据库。

示例

mongodb:
    mongodump: "/opt/bin/mongodump"
    host_defaults:
        user_name: tom
        address: db.example.local
        password: "457893mnfs3j"
        dbs:
          - halloran
          - grady
    hosts:
        foo:
            address: db0.example.internal
            port: 27654
            user_name: matt
            password: "myS3cr37P455w0rd"
            dbs:
              # This list is going to be merged with dbs at host_defaults, thus
              # the resulting dbs will be:
              # ['halloran', 'grady', 'jack', 'wendy', 'danny']
              - jack
              - wendy
              - danny
        bar: {} # This one is going to acquire all host_defaults values
        host_with_mixed_values:
            # This host will inherit port, password and dbs from host_defaults
            address: moloko.example.internal
            user_name: alex
            address: localhost
            auth_db: milk_plus

指令

mongodb.mongodump

  • 类型:字符串

  • 默认值:mongodump

  • 作用:m2bk使用的mongodump可执行文件的完整路径

mongodb.host_defaults部分

许多指令(例如用户名和/或密码)在要备份的数据库中可能是通用的。出于这个原因,最好将这些常用指令简单地放在一个部分下,这完全是可选的,但它也是易于管理的配置文件的最佳选择,以避免冗余,支持的指令是user_namepasswordportdbsauth_db。请参阅主机部分。

mongodb.hosts部分

这是一个对象/哈希,其中每个元素都包含一系列与位于服务器上的 mongodb 数据库相关的指令,它的规范和数据库本身由它持有,这些是mongodump在发挥它的魔力时使用的主要值。对于hosts部分中的每个条目,以下是其有效指令:

指令

mongodb.hosts.*.address
  • 类型:字符串

  • 要求:是

  • 作用:mongodb服务器位置

mongodb.hosts.*.port
  • 类型:整数

  • 要求:否

  • 默认值:mongo.host_defaults.port | 27017

  • 作用:mongodb服务器监听端口

mongodb.hosts.*.user_name
  • 类型:字符串

  • 要求:否

  • 默认值:mongodb.host_defaults.user_name | m2bk

  • 作用:用于对 mongodb 服务器进行身份验证的用户名

mongodb.hosts.*.password
  • 类型:字符串

  • 要求:否

  • 默认值:mongodb.host_defaults.pass | “经过”

  • 作用:用于对 mongodb 服务器进行身份验证的密码

mongodb.hosts.*.auth_db
  • 类型:字符串

  • 要求:否

  • 默认值:管理员

  • 作用:认证数据库

mongodb.hosts.*.dbs
  • 类型:数组

  • 要求:否

  • 默认值:mongodb.host_defaults.dbs | []

  • 作用:mongodb服务器内部预期的数据库列表

注意:一台主机上的特定“dbs”将与“host_defaults”的那些合并

司机(司机部分)

一旦生成了备份文件,它们就会由驱动程序处理,该驱动程序的工作是将生成的备份文件传输到某种形式的存储中(取决于配置中设置的驱动程序)。驱动程序(及其选项)在驱动程序部分中设置和配置,如下所示:

driver:
    # First of all, you need to tell m2bk which driver to use
    name: dummy

    # Inside this key, driver options are set
    options:
      hello: world
      another_option: another_value

每个驱动程序都有许多可用的选项来调整它们。这些选项因驱动程序而异。尽管 m2bk 上只有一个驱动程序可用,但新版本将提供更多驱动程序。当前可用的驱动程序如下:

这个驱动程序只是一个用于测试驱动程序接口的占位符,因为它不会对备份文件做任何事情。

选项

此驱动程序没有选项。传递给此驱动程序的任何选项都将在调试级别记录。

s3

此驱动程序包含有关m2bk 将使用的 AWS 凭证的指令,以便将mongodump备份上传到 S3。如果未指定aws_access_key_idaws_secret_access_key,则此驱动程序将不会尝试使用它们对 AWS 进行身份验证,并且将依赖boto 配置来解决此问题。

示例

driver:
    name: s3
    options:
        aws_access_key_id": "HAS6NBASD8787SD"
        aws_secret_access_key: "d41d8cd98f00b204e9800998ecf8427e"
        s3_bucket: "mybucket"

选项

aws_access_key_id
  • 类型:字符串

  • 要求:否

  • 角色:AWS 访问密钥 ID

aws_secret_access_key
  • 类型:字符串

  • 要求:否

  • 角色:AWS 访问密钥 ID

s3_bucket
  • 类型:字符串

  • 要求:否

  • 默认值:m2bk

  • 作用:主 S3 存储桶的名称,m2bk 将在其中上传mongodb部分中指定的每个 mongodb 服务器的压缩备份

捐赠

通过gratipay 表达您对这个项目的爱和支持

https://cdn.rawgit.com/gratipay/gratipay-badge/2.3.0/dist/gratipay.png

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

m2bk-0.4.0.tar.gz (31.5 kB 查看哈希

已上传 source