canary/roost

在 macOS 或 Linux 上处理数据库的辅助工具。

安装: 1

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:项目

1.3.0 2022-10-02 03:17 UTC

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+(具有运行 execpassthru 的权限)
  • 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

定义此类配置允许

  • 始终访问所有数据库和备份数据
  • 在从项目根目录运行命令时,无需指定项目密钥和/或数据库凭据
  • 将所有数据库备份数据存储在一个地方(存储文件夹)