用于编排 MongoDB 备份的命令行工具
项目描述
m2bk
将您的 mongodump 备份直接发送到 AWS S3
m2bk是命令行工具,它通过 mongodump 执行大量 mongodb 数据库备份,将它们压缩成 gzip 压缩包,最后将它们发送到AWS S3 存储桶 (即将提供更多选项)。
要求
贡献
您可以通过多种方式为 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
提交包含更改的功能分支的拉取请求。
安装
可以通过pip或 easy_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_name,password,port,dbs和auth_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_id或aws_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 表达您对这个项目的爱和支持
版权和许可
版权所有 (c) Alejandro Ricoveri
特此免费授予任何人获得本软件和相关文档文件(“软件”)的副本,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售本软件的副本,并允许向其提供本软件的人这样做,但须符合以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。
本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。