canary / roost
在 macOS 或 Linux 上处理数据库的辅助工具。
1.3.0
2022-10-02 03:17 UTC
Requires
- php: ^8.0
- ext-pdo: *
- laravel-zero/framework: ^9.2
- league/flysystem-aws-s3-v3: ^3.5
- nunomaduro/laravel-console-menu: ^3.3
- symfony/yaml: ^6.0
- vaimo/composer-patches: ^5.1
This package is auto-updated.
Last update: 2024-09-30 01:34:54 UTC
README
Roost 是一个数据库备份管理器,旨在简化从一个环境备份数据库并将其移动到另一个环境的过程。它是为 Magento 2 开发的,但也可以在没有它的情况下使用。
主要功能
- 创建/删除数据库
- 导入数据库
- 支持
*.sql
、*.dump
、*.sql.gz
和*.sql.zip
导出文件 - 可以在 DEFINERs(包括过程和函数)和 ROW_FORMAT 上过滤数据库导出
- 支持
- 导出数据库
- 支持
*.sql
和*.sql.gz
导出文件 - 数据库导出始终导出过程和函数
- 可以在 DEFINERs(包括过程和函数)和 ROW_FORMAT 上过滤数据库导出
- 数据库导出可以被清除
- 支持
- 本地数据库导出存储文件夹
- 默认将数据库导出到存储
- 默认在存储中搜索数据库导出
- AWS S3 存储桶作为远程存储
- 可以上传数据库导出
- 可以下载数据库导出
- 可以删除数据库导出
- 支持清理(保留一个数据库的导出不超过一定数量)
- 在数据库导出命名中使用标签
要求
- PHP 8.0+(具有运行
exec
和passthru
的权限) - PHP 扩展:posix、simplexml、zlib、fileinfo、json、pdo、pcre
mysql
客户端在$PATH
pv
可选(在 macOS 上运行brew install pv
)
安装
下载最新版本并将其设置为可执行文件
curl -L https://github.com/findcanary/roost/releases/latest/download/roost.phar > /usr/local/bin/roost
chmod +x /usr/local/bin/roost
由于,目前最新的 macOS 中没有系统 PHP,我们需要通过 Brew 安装 PHP。Roost 的最新版本需要 PHP >= 8.0。为了能够在链接的 PHP 版本不限的情况下运行它,我们可以执行以下操作
- 将 ~/bin/roost 重命名为 ~/bin/bin-roost
- 创建一个具有以下内容的文本可执行 bash 文件
#!/usr/bin/env bash /usr/local/opt/php@8.0/bin/php "$HOME/bin/bin-roost" "$@"
可选:安装所有命令的自动完成功能
# BASH - Ubuntu / Debian
roost completion | sudo tee /etc/bash_completion.d/roost
# BASH - Mac OSX (with Homebrew "bash-completion")
roost completion > $(brew --prefix)/etc/bash_completion.d/roost
# ZSH - Config file
roost completion > ~/.roost_completion && echo "source ~/.roost_completion" >> ~/.zshrc
配置
配置可以通过配置文件(文件名 .roost.yml
)提供,也可以在执行命令时作为选项提供。
aws-region: The region in which the S3 buckets are located
aws-bucket: The bucket to store the database backups
aws-access-key: AWS Access Key
aws-secret-key: AWS Secret Key
db-host: MySQL DB host
db-port: MySQL DB post
db-username: MySQL DB username
db-password: MySQL DB password
db-name: MySQL DB name
project: Project key
storage: Local path where DB dumps are located
magento-directory: Default magento root directory
table-groups: Table groups for stripping databases during exporting
配置在多个地方进行搜索然后合并,如果在多个文件中找到配置键,则它们会被覆盖。以下是配置的位置和优先级(从低到高)
- 内部:
config/config.yml
配置包含导出 M2 数据库时的默认table-groups
- 主目录: 默认配置
- 后备: 从工作目录到主目录(或根目录,如果工作目录不在主目录中),因此工作目录中的配置比其父目录中的配置具有更高的优先级
- Magento2 env.php: 它尝试在相对于工作目录的位置(有后备到主目录)查找
app/etc/env.php
文件,如果找到则具有比所有配置更高的优先级,除了位于工作目录中的配置 - cli 选项: 可以通过命令选项覆盖任何配置值,它们具有最高的优先级
如果命令在 magneto 根目录外运行,但需要使用其配置,则可以传递 --magento-directory
(或 -m
)选项,带有完整的或相对于当前目录的路径。
使用示例
通用配置可以在主目录中定义(~/.roost.yml
)
aws-region: The region in which the S3 buckets are located
aws-bucket: The bucket to store the database backups
aws-access-key: AWS Access Key
aws-secret-key: AWS Secret Key
db-host: MySQL DB host
db-port: MySQL DB post
db-username: MySQL DB username
db-password: MySQL DB password
storage: Local path where DB dumps are located
特定项目的配置应在每个项目文件夹中定义(<project-folder>/.roost.yml
)
project: Project key
如果项目不是 Magento 2,则也可以定义数据库配置
project: Project key
db-name: MySQL DB name
定义此类配置允许
- 始终访问所有数据库和备份数据
- 在从项目根目录运行命令时,无需指定项目密钥和/或数据库凭据
- 将所有数据库备份数据存储在一个地方(存储文件夹)