cytopia / mysqldump-secure
带加密、压缩、日志记录、黑名单和Nagios监控集成的安全mysqldump脚本
Suggests
- cytopia/check_mysqldump-secure: Nagios Plugin to monitor mysqldump database backups.
README
注意
请升级到最新版本,以便在受影响的情况下通知您关于 OpenSSL SMIME Bug。
GIT 注意
通过Git克隆时,务必始终检出最新的标签。由于 MASTER
分支始终处于开发中,因此是不稳定的。
特性 | 安装 | 配置 | 使用 | 文档 | 贡献 | 许可证 | 版本
Mysqldump-secure 是一个符合POSIX规范的 mysqldump
包装脚本,具有许多特性,并注重非常强的安全性。它将备份每个可用的数据库(由指定的用户可读)作为单独的文件,并可通过黑名单选择退出。可以可选地将导出的数据库直接管道传输到gzip或openssl以压缩和/或加密备份。加密在文件写入磁盘之前完成,以避免可能的竞争条件(有关安全措施更多信息,请参阅文档)。
项目网站: https://mysqldump-secure.org 整个帖子: https://www.everythingcli.org
运行在
(如果脚本在未在此处提及的其他系统上运行,请给我发个消息。)
稳定可靠且经过充分测试
每次向 mysqldump-secure
推送都会触发 travis-ci
,它会针对新代码运行数百种各种测试,并以各种可能的配置以各种可能的方式对工具进行压力测试。
您可以在 test 文件夹中找到测试,包括用于设置具有SSL加密的主从服务器的自动化设置。这些测试也可以在本地运行。
有关检查操作,请参阅 https://travis-ci.org/cytopia/mysqldump-secure,有关测试的描述,请参阅 test。
1. 特性
主要特性
- 加密(混合加密:
RSA
和AES
通过openssl smime
- 不需要密码) - 压缩(
gzip
、pigz
、bzip2
、pbzip2
、lzop
、lzma
、xz
) - 集成tmpwatch(
tmpwatch
或tmpreaper
) - 事务安全 / 一致的 表级备份(适用于具有:
InnoDB仅
、混合
和非InnoDB
表的数据库) - 条件性mysqldump选项(例如:仅在数据库 > 200MB 时应用
--quick
) - 安全性(各种内置检查和预防措施)
- SSL远程备份
- Nagios / Icinga 监控集成(通过 check_mysqldump-secure)
次要功能
- 自定义mysqldump选项
- 主/从识别
- 黑名单
- 白名单
- 文件日志
- 自我验证
- 非常稳定(参见travis上的数百次检查)
- 100% POSIX兼容
2. 安装
2.1 Linux、BSD和OSX
wget https://github.com/cytopia/mysqldump-secure/archive/0.16.5.tar.gz -O - | tar -xz cd mysqldump-secure ./configure make sudo make install
2.2 OSX
brew tap cytopia/tap brew install mysqldump-secure
有关更详细的说明,请参阅 安装指南
3. 配置
有两个单独的配置文件
第一个用于设置MySQL凭据,第二个用于配置备份数据库的行为。
您无需担心文件权限或目录。脚本将自动检查以下选项并根据需要调整它们
- 日志文件存在
- 日志文件可写
- 自动创建日志文件
- 自动关闭日志记录
- 目标目录存在
- 目标目录可写
- 自动创建目标目录
- 必需的系统二进制文件存在
- MySQL凭据有效
有关更详细的说明,请参阅 设置指南
4. 使用方法
4.1 使用方法
Usage: mysqldump-secure [--conf] [--cron] [--test] [-v[v]] mysqldump-secure --help mysqldump-secure --version When invoked without any arguments, it will start dumping databases as defined in mysqldump-secure.conf. --conf Pass a different configuration file than the default one. E.g.: --conf=/etc/mysqldump-secure-alt.conf --cron Use for cron run. It will only output errors and warnings and will silence all info, debug and trace output. --test Test requirements and exit. Combine with -v or -vv for more verbose output. -v Show debug output. Specify twice (-vv) to also show trace output. Can be combined with --conf and --test -vv Show debug and trace output. Can be combined with --conf and --test --help Show this help screen. --version Show version information. Exit codes 0 All fine, no fatals, no errors and no warnings occured. 1 Warnings occured, but all dumps were successfull. 2 Errors occured, but all dumps were successfull. 3 Failed. Mysqldump encountered errors. 4 Abort. The program aborted, due to missing requirements, wrong arguments or a misconfiguration. Further reading See 'man mysqldump-secure' for more help. Visist http://mysqldump-secure.org and browse documentation.
4.2 默认设置
测试是否正确配置了所有设置
mysqldump-secure --test -vv
从命令行手动运行
mysqldump-secure -v
从cron中运行
mysqldump-secure --cron
4.3 自定义配置
通过不同的配置文件,可以在您的机器上拥有多个 mysqldump-secure
实例。想象一下您想加密一些敏感的转储,而其他应该以纯文本形式转储。您可以通过使用两个配置文件以及每个相应配置的 IGNORE
块来排除其他文件来实现这一点。
测试指定配置中是否正确配置了所有设置
mysqldump-secure --test --config=/etc/mysqldump-secure.encrypted.conf
从命令行手动运行
mysqldump-secure --config=/etc/mysqldump-secure.encrypted.conf
从cron中运行
mysqldump-secure --cron --config=/etc/mysqldump-secure.encrypted.conf
4.4 测试运行
$ mysqldump-secure --test -v
[INFO] (OPT): Logging enabled
[DEBUG] (OPT): Log level: 3
[DEBUG] (OPT): Logfile: /var/log/mysqldump-secure.log
[DEBUG] (CFG): Destination dir: /var/mysqldump-secure
[DEBUG] (CFG): Using file Prefix: 2016-03-09_10-07__
[INFO] (OPT): MySQL SSL connection enabled
[DEBUG] (OPT): MySQL SSL arguments: --ssl-ca=/etc/mysql.ca.pem.
[INFO] (OPT): Compression enabled
[DEBUG] (OPT): Compression arguments: gzip -9 --stdout
[INFO] (OPT): Encryption enabled
[DEBUG] (OPT): Encryption algorithm: -aes256
[INFO] (OPT): Deletion enabled
[DEBUG] (OPT): Deleting files older than 2 days. Using: tmpwatch
[INFO] (OPT): Nagios log enabled
[DEBUG] (OPT): Nagios logfile: /var/log/mysqldump-secure.nagios.log
[DEBUG] (SRV): MySQL server connection: 127.0.0.1 via TCP/IP
[DEBUG] (SRV): MySQL server connection: Using SSL (Cipher in use is DHE-RSA-AES256-GCM-SHA384)
[DEBUG] (SRV): MySQL server version: MariaDB 10.1.11-MariaDB-log Homebrew
[DEBUG] (SRV): MySQL server hostname: notebook.home.lan:3306
[DEBUG] (SRV): MySQL server rep type: master
4.5 示例运行
$ mysqldump-secure -v [INFO] (OPT): Logging enabled [DEBUG] (OPT): Log level: 3 [DEBUG] (OPT): Logfile: /var/log/mysqldump-secure.log [DEBUG] (CFG): Destination dir: /var/mysqldump-secure [DEBUG] (CFG): Using file Prefix: 2016-03-09_10-13__ [INFO] (OPT): MySQL SSL connection enabled [DEBUG] (OPT): MySQL SSL arguments: --ssl-ca=/etc/mysql.ca.pem. [INFO] (OPT): Compression enabled [DEBUG] (OPT): Compression arguments: gzip -9 --stdout [INFO] (OPT): Encryption enabled [DEBUG] (OPT): Encryption algorithm: -aes256 [INFO] (OPT): Deletion enabled [DEBUG] (OPT): Deleting files older than 2 days. Using: tmpwatch [INFO] (OPT): Nagios log enabled [DEBUG] (OPT): Nagios logfile: /var/log/mysqldump-secure.nagios.log [DEBUG] (SRV): MySQL server connection: 127.0.0.1 via TCP/IP [DEBUG] (SRV): MySQL server connection: Using SSL (Cipher in use is DHE-RSA-AES256-GCM-SHA384) [DEBUG] (SRV): MySQL server version: MariaDB 10.1.11-MariaDB-log Homebrew [DEBUG] (SRV): MySQL server hostname: notebook.home.lan:3306 [DEBUG] (SRV): MySQL server rep type: master [DEBUG] (SQL): Retrieving list of databases... 9 [INFO] (SQL): 1/9 Dumping: db_InnoDB_and_MyISAM (19.90 MB) (compressed) (encrypted) (--lock-tables) (--skip-quick) 0 sec [INFO] (SQL): 2/9 Dumping: db_InnoDB_only (10.52 MB) (compressed) (encrypted) (--single-transaction) (--skip-quick) 1 sec [INFO] (SQL): 3/9 Dumping: db_MyISAM_only (9.38 MB) (compressed) (encrypted) (--lock-tables) (--skip-quick) 0 sec [INFO] (SQL): 4/9 Skipping: information_schema (ignored) [INFO] (SQL): 5/9 Skipping: my_empty_db1 (DB is empty) [INFO] (SQL): 6/9 Skipping: my_empty_db2 (DB is empty) [INFO] (SQL): 7/9 Dumping: mysql (0.62 MB) (compressed) (encrypted) (--lock-tables) (--skip-quick) 0 sec [INFO] (SQL): 8/9 Skipping: performance_schema (ignored) [INFO] (SQL): 9/9 Skipping: test (DB is empty) [DEBUG] (RUN): Dumping finished (OK: 4 dbs, IGN: 5 dbs, ERR: 0, TOTAL: 9) [DEBUG] (RUN): Took 2 seconds [DEBUG] (RUN): Total size dumped: 40.42 MB [INFO] (RUN): Deleting files older than 2 days ... 4 [INFO] removing file /var/mysqldump-secure/2016-03-07_01-52__db_InnoDB_and_MyISAM.sql.gz.enc [INFO] removing file /var/mysqldump-secure/2016-03-07_01-52__db_InnoDB_only.sql.gz.enc [INFO] removing file /var/mysqldump-secure/2016-03-07_01-52__db_MyISAM_only.sql.gz.enc [INFO] removing file /var/mysqldump-secure/2016-03-07_01-52__mysql.sql.gz.enc [DEBUG] (RUN): Writing nagios logfile [OK] Finished successfully
5. 文档
6. 贡献
欢迎贡献者。
如果脚本在当前尚未包括在此文档顶部的操作系统产品上运行,请让我知道,以便我可以添加它供参考。
如果您使用此脚本,请给它加星或以某种方式让我知道。
如果您想查看 贡献指南 并看看是否有任何您想负责的事情。
7. 许可证
8. 版本
有关版本列表的完整列表,请参阅 变更日志