上一篇杜老师分享了 MySQL 备份脚本,在留言中,有小伙伴推荐了 GoBackup 数据库备份工具。简单了解之后发现这款工具确实不错,简单易用,一次部署后能持续运行数年无需任何维护,存储成本低且安全可靠。
工具特性 {#工具特性}
-
没有依赖关系。
-
多数据库支持。
-
支持多种存储类型。
-
将路径或文件归档到压缩包。
-
将大型备份文件拆分为多个部分。
-
作为守护程序运行以按计划进行备份。
-
用于管理备份的 Web UI。
支持类型 {#支持类型}
支持的数据库类型如下:
| 编号 | 名称 | |----|----------------------| | 1 | MySQL | | 2 | PostgreSQL | | 3 | Redis | | 4 | MongoDB | | 5 | SQLite | | 6 | Microsoft SQL Server | | 7 | InfluxDB | | 8 | MariaDB |
存储类型 {#存储类型}
支持存储类型如下:
| 编号 | 名称 | |----|----------------------------| | 1 | 本地 | | 2 | FTP | | 3 | SFTP | | 4 | SCP - Upload via SSH copy | | 5 | Amazon S3 | | 6 | Aliyun OSS | | 7 | Google Cloud Storage | | 8 | Azure Blob Storage | | 9 | Backblaze B2 Cloud Storage | | 10 | Cloudflare R2 | | 11 | DigitalOcean Spaces | | 12 | QCloud COS | | 13 | UCloud US3 | | 14 | Qiniu Kodo | | 15 | Baidu BOS | | 16 | MinIO | | 17 | Huawei OBS | | 18 | Volcengine TOS | | 19 | UpYun | | 20 | WebDAV |
通知途径 {#通知途径}
备份通知类型如下:
| 编号 | 名称 | |----|---------------------------| | 1 | Mail (SMTP) | | 2 | Webhook | | 3 | Discord | | 4 | Slack | | 5 | Feishu | | 6 | DingTalk | | 7 | GitHub (Comment on Issue) | | 8 | Telegram | | 9 | AWS SES | | 10 | Postmark | | 11 | SendGrid |
安装配置 {#安装配置}
执行下面安装命令,即可使用 gobackup
进行数据库备份:
|-----------|-----------------------------------------------------------|
| 1
| curl -sSL https://gobackup.github.io/install | sh
|
创建并编辑配置文件/etc/gobackup/gobackup.yml
,模板内容如下:
|---------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| models: gitlab_app: databases: gitlab_db: type: postgresql database: gitlab_production username: gitlab password: gitlab_redis: type: redis mode: sync rdb_path: /var/db/redis/dump.rdb invoke_save: true storages: s3: type: s3 bucket: my_app_backup region: us-east-1 path: backups access_key_id: $S3_ACCESS_KEY_Id secret_access_key: $S3_SECRET_ACCESS_KEY compress_with: type: tgz
|
使用方法 {#使用方法}
如需备份,使用下面命令即可:
|-----------|--------------------------|
| 1
| gobackup perform
|
如需命令完整路径,可调用/usr/local/bin/gobackup
。分享一个实例配置文件:
|------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| models: my_backup: before_script: | echo "Before script" after_script: | echo "After script" schedule: # At 04:05 on Sunday. cron: "5 4 * * sun" storages: local: type: local path: /path/to/backups databases: mysql: type: mysql host: localhost port: 3306 database: my_database username: root password: password other_backup: # At 04:05 on every day. schedule: every: "1day", at: "04:05" storages: local: type: local path: /path/to/backups databases: mysql: type: mysql host: localhost port: 3306 database: my_database username: root password: password
|
该工具支持 Web UI,如需启动可执行下面的命令:
|-----------|------------------------|
| 1
| gobackup start
|