diff --git a/docs/MatrixOne/Maintain/backup-restore/backup-restore-overview.md b/docs/MatrixOne/Maintain/backup-restore/backup-restore-overview.md index 1643dadf03..4d1e149b2f 100644 --- a/docs/MatrixOne/Maintain/backup-restore/backup-restore-overview.md +++ b/docs/MatrixOne/Maintain/backup-restore/backup-restore-overview.md @@ -55,7 +55,7 @@ MatrixOne 数据库提供了多种备份工具,以满足不同场景和需求 2. **mo-backup**: 用于物理备份和恢复。`mo-backup` 是 MatrixOne 企业级服务的物理备份与恢复工具,帮助你保护其 MatrixOne 数据库,并在需要时进行可靠的恢复操作。 !!! note - **mo-backup** 企业级服务的物理备份与恢复工具,你需要联系你的 MatrixOne 客户经理,获取工具下载路径和使用说明。 + **mo-backup** 企业级服务的物理备份与恢复工具,你需要联系你的 MatrixOne 客户经理,获取工具下载路径。 ### 逻辑备份与恢复 @@ -76,3 +76,22 @@ MatrixOne 支持使用 `mo-dump` 工具进行逻辑备份,生成可用于重 MatrixOne 支持使用 `LOAD DATA` 命令将大量行插入数据库表,也支持使用 `SOURCE` 命令导入表结构和数据至整个数据库。 更多信息,参考[批量导入](../../Develop/import-data/bulk-load/bulk-load-overview.md) + +### 物理备份与恢复 + +#### 使用 `mo_br` 备份与恢复 + +MatrixOne 支持使用 `mo_br` 工具进行常规物理备份和快照备份。 + +操作步骤及示例,参见 [`mo-br 使用指南`](../backup-restore/mobr-backup-restore/mobr.md) + +#### 使用 SQL 备份与恢复 + +MatrixOne 支持使用 SQL 进行快照备份与恢复。 + +有关使用 SQL 进行快照备份与恢复的方法,请参考文档: + +- [CREATE SNAPSHOT](../../Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md) +- [DROP SNAPSHOT](../../Reference/SQL-Reference/Data-Definition-Language/drop-snapshot.md) +- [SHOW SNAPSHOTS](../../Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md) +- [RESTORE ACCOUNT](../../Reference/SQL-Reference/Data-Definition-Language/restore-account.md) diff --git a/docs/MatrixOne/Maintain/backup-restore/key-concepts.md b/docs/MatrixOne/Maintain/backup-restore/key-concepts.md index cf6c3bfda5..93d78e4fcc 100644 --- a/docs/MatrixOne/Maintain/backup-restore/key-concepts.md +++ b/docs/MatrixOne/Maintain/backup-restore/key-concepts.md @@ -1,20 +1,22 @@ # 备份与恢复相关概念 -## 物理备份与逻辑备份 +## 物理备份、快照备份与逻辑备份 ### 物理备份 物理备份是将数据库文件直接复制到备份介质(如磁带、硬盘等)上的过程。此方式将数据库的所有物理数据块复制到备份介质,包括数据文件、控制文件和重做日志文件等。备份的数据是实际存储在磁盘上的二进制数据,恢复操作通常迅速。 +### 快照备份 + +数据库快照备份为物理备份的一种形式,但区别于传统的物理备份,它通过捕捉数据库在特定时间点的只读静态视图来创建数据的即时副本。这种备份方式利用增量存储机制,仅记录自上一个快照以来发生变化的数据块,从而高效地使用存储空间。快照备份支持快速恢复,因为它们提供了数据库的完整一致性视图,适用于数据保护、报告生成、分析和其他需要数据一致性的场景。此外,它们通常依赖于底层存储系统的快照功能,能够在不影响数据库正常运行的情况下,为数据库提供一个安全的数据访问副本。 + ### 逻辑备份 逻辑备份是通过 SQL 语句备份数据库中的逻辑对象(如表、索引、存储过程等)。这种备份方式将逻辑对象的定义和数据导出至备份文件,但不涉及数据库文件的二进制数据。虽然恢复速度较慢,备份数据通常更易阅读和修改。 -### 物理备份与逻辑备份的区别 - -物理备份与逻辑备份在备份的数据形式方面存在主要区别。 +### 区别 -物理备份复制实际存储在磁盘上的二进制数据,而逻辑备份备份逻辑对象的定义和数据。备份速度、数据大小和备份灵活性等方面有所差异。 +数据物理备份、逻辑备份和快照备份是三种不同的数据保护策略:物理备份通过直接复制数据库的存储文件来创建数据库的一个完整副本,适用于快速恢复和大规模数据迁移;逻辑备份则导出数据库的逻辑结构,如 SQL 语句,以文本形式存储数据和结构,便于跨平台和版本的数据迁移;而快照备份是数据库在某一时刻的只读视图,利用增量存储技术记录变化,适用于快速恢复至特定时间点的状态,通常依赖于存储系统的支持。 ## 全量备份、增量备份与差异备份 diff --git a/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-backup-restore.md b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-backup-restore.md new file mode 100644 index 0000000000..158c2c29b2 --- /dev/null +++ b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-backup-restore.md @@ -0,0 +1,668 @@ +# mo_br 备份与恢复 + +对于企业而言,每天都会产生大量数据,那么对于数据库的备份就非常重要。在系统崩溃或者硬件故障,又或者用户误操作的情况下,你可以恢复数据并重启系统,不会造成数据丢失。 + +另外,数据备份也作为升级 MatrixOne 安装之前的保障,同时数据备份也可以用于将 MatrixOne 安装转移到另一个系统。 + +MatrixOne 支持通过 `mo_br` 实用工具进行物理备份。`mo_br` 是一个命令行实用程序,用于生成 MatrixOne 数据库的物理备份。它生成可用于重新创建数据库对象和数据的 SQL 语句。 + +我们将通过一个简单的示例来讲述如何使用 `mo_br` 实用程序完成数据备份和还原的过程。 + +## 创建备份 + +### 语法结构 + +``` +mo_br backup + --host + --port + --user + --password + --backup_dir s3|filesystem + //s3 oss minio + --endpoint + --access_key_id + --secret_access_key + --bucket + --filepath + --region + --compression + --role_arn + --is_minio + --parallelism + //filesystem + --path + --parallelism + --meta_path + //增量备份需要 + --backup_type + --base_id +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user| 用户| +|password | 用户的密码| +|backup_dir | 备份的目标路径类型。s3 或 filesystem| +|endpoint| 连接到备份到 s3 的服务的 URL| +|access_key_id| 备份到 s3 的 Access key ID| +|secret_access_key| 备份到 s3 的 Secret access key| +|bucket| 备份到的 s3 需要访问的桶| +|filepath| 备份到 s3 的相对文件路径| +|region| 备份到 s3 的对象存储服务区域| +|compression| 备份到 s3 的文件的压缩格式。| +|role_arn| 备份到 s3 的角色的资源名称。| +|is_minio| 指定备份到的 s3 是否为 minio| +|path| 本地文件系统备份路径| +|parallelism|并行度| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|backup_type|指定备份类型为增量备份,incremental。| +|base_id|上次一次备份的 ID,主要用于确定上次备份的时间戳。| + +### 示例 + +- 全量备份到本地文件系统 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "yourpath" +``` + +- 全量备份到 minio + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "s3" --endpoint "http://127.0.0.1:9000" --access_key_id "S0kwLuB4JofVEIAxWTqf" --secret_access_key "X24O7t3hccmqUZqvqvmLN8464E2Nbr0DWOu9Qs5A" --bucket "bucket1" --filepath "/backup1" --is_minio +``` + +- 增量备份到本地文件系统 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "yourpath" --backup_type "incremental" --base_id "xxx" +``` + +## 查看备份 + +### 语法结构 + +``` +mo_br list + -- ID + //要查询备份数据。如果备份在s3(oss minio)上时,需要指定 + --access_key_id + --secret_access_key + --not_check_data + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +| ID | 备份的 ID| +|access_key_id| 备份到的 s3 的 Access key ID| +|secret_access_key| 备份到的 s3 的 Secret access key| +|not_check_data | 只查看 meta 中的信息。不查看备份数据。默认不带这个参数的,就是会检查备份的文件。当前只会检查备份的文件是否存在。| +|meta_path | 指定 meta 文件位置。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +### 示例 + +- 查看所有备份列表 + +``` +./mo_br list ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| 4d21b228-10dd-11ef-9497-26dd28356ef2 | 586 kB | BackupDir: filesystem Path: | 2024-05-13 12:00:12 +0800 | 1.700945333s | 2024-05-13 12:00:13 +0800 | +| | | /Users/admin/soft/backup | | | | +| 01108122-10f9-11ef-9359-26dd28356ef2 | 8.3 MB | BackupDir: filesystem Path: | 2024-05-13 15:18:28 +0800 | 3.394437375s | 2024-05-13 15:18:32 +0800 | +| | | /Users/admin/soft/backup | | | | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +``` + +- 查看指定 ID 备份列表,list 确定的 ID 时,会检测备份的文件。 + +``` +./mo_br list 4d21b228-10dd-11ef-9497-26dd28356ef2 ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| 4d21b228-10dd-11ef-9497-26dd28356ef2 | 586 kB | BackupDir: filesystem Path: | 2024-05-13 12:00:12 +0800 | 1.700945333s | 2024-05-13 12:00:13 +0800 | +| | | /Users/admin/soft/backup | | | | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ + +Checking the backup data(currently,no checksum)... + +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/log.toml_018f70d1-3100-7762-b28b-8f85ac4ed3cd +check: config/tn.toml_018f70d1-310e-78fc-ac96-aa5e06981bd7 +... +``` + +## 删除备份 + +### 语法结构 + +``` +mo_br delete ID + //要删除备份数据。如果备份在s3(oss minio)上时,需要指定 + --access_key_id + --secret_access_key + --not_delete_data + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +| ID | 要删除的备份的 ID| +|access_key_id| 备份到的 s3 的 Access key ID| +|secret_access_key| 备份到的 s3 的 Secret access key| +|not_delete_data|只删除 meta 中的信息。不删除备份数据。| +|meta_path|指定 meta 文件位置。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +### 示例 + +- 删除本地文件系统备份 + +``` +./mo_br delete e4cade26-3139-11ee-8631-acde48001122 +``` + +- 删除 minio 上的一个备份。 + +``` +./mo_br delete e4cade26-3139-11ee-8631-acde48001122 --access_key_id "S0kwLuB4JofVEIAxWTqf" --secret_access_key "X24O7t3hccmqUZqvqvmLN8464E2Nbr0DWOu9Qs5A" +``` + +## 恢复备份 + +### 语法结构 + +- 恢复指定 ID 的备份 + +``` +mo_br restore ID + //读取指定ID的备份数据。如果备份在s3(oss minio)上时,需要指定 + --backup_access_key_id + --backup_secret_access_key + + //恢复的目标路径 restore_directory + --restore_dir s3|filesystem + //s3 + --restore_endpoint + --restore_access_key_id + --restore_secret_access_key + --restore_bucket + --restore_filepath + --restore_region + --restore_compression + --restore_role_arn + --restore_is_minio + //filesystem + --restore_path + --dn_config_path + --meta_path + --checksum + --parallelism +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|ID | 要恢复的 ID| +|backup_access_key_id|备份在 s3 的 Access key ID| +|backup_secret_access_key |备份在 s3 的 Secret access key| +|restore_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3|filesystem| +|restore_endpoint| 连接到恢复到 S3 服务的 URL| +|restore_access_key_id| 恢复到 s3 的 Access key ID| +|restore_secret_access_key| 恢复到 s3 的 Secret access key| +|restore_bucket| 恢复到 s3 需要访问的桶| +|restore_filepath|恢复到 s3 的相对文件路径| +|restore_region| 恢复到 s3 的对象存储服务区域| +|restore_compression|恢复到 s3 的 S3 文件的压缩格式。| +|restore_role_arn| 恢复到 s3 的角色的资源名称。| +|restore_is_minio|指定恢复到的 s3 是否是 minio| +|restore_path|恢复到本地的路径| +|dn_config_path| dn 配置路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|checksum |恢复的时候 tae 文件复制的并行度,默认是 1| +|parallelism|并行度| + +- 不指定恢复备份 ID + +``` +//恢复。 +mo_br restore + --backup_dir s3|filesystem 备份的目标路径类型。指定备份的目标路径时使用。 + //s3 + --backup_endpoint + --backup_access_key_id + --backup_secret_access_key + --backup_bucket + --backup_filepath + --backup_region + --backup_compression + --backup_role_arn + --backup_is_minio + //filesystem + --backup_path + //恢复的目标路径 restore_directory + --restore_dir s3|filesystem 恢复的目标路径类型。指定恢复的目标路径时使用。 + //s3 + --restore_endpoint + --restore_access_key_id + --restore_secret_access_key + --restore_bucket + --restore_filepath + --restore_region + --restore_compression + --restore_role_arn + --restore_is_minio + //filesystem + --restore_path + --dn_config_path + --meta_path + --checksum + --parallelism +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3|filesystem| +|backup_endpoint| 连接到备份在 s3 的的 URL| +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|backup_bucket| 备份在 s3 的桶| +|backup_filepath| 备份在 s3 的相对文件路径| +|backup_region| 备份在 s3 的服务区域| +|backup_compression| 备份在 s3 的文件的压缩格式。| +|backup_role_arn| 备份在 s3 的角色的资源名称。| +|backup_is_minio| 指定备份的 s3 是否是 minio| +|backup_path| 本地备份的路径| +|restore_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3 或 filesystem| +|restore_endpoint| 连接到恢复到 S3 服务的 URL| +|restore_access_key_id| 恢复到 s3 的 Access key ID| +|restore_secret_access_key| 恢复到 s3 的 Secret access key| +|restore_bucket| 恢复到 s3 需要访问的桶| +|restore_filepath|恢复到 s3 的相对文件路径| +|restore_region| 恢复到 s3 的对象存储服务区域| +|restore_compression|恢复到 s3 的 S3 文件的压缩格式。| +|restore_role_arn| 恢复到 s3 的角色的资源名称。| +|restore_is_minio|指定恢复到的 s3 是否是 minio| +|restore_path|恢复到本地 matrixone 的路径| +|dn_config_path| dn 配置路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|checksum |恢复的时候 tae 文件复制的并行度,默认是 1| +|parallelism|并行度| + +### 示例 + +从文件系统恢复到文件系统 + +**步骤一:**停止 mo,删除 mo-data + +**步骤二:**执行以下恢复命令 + +``` +./mo_br restore fb26fd88-41bc-11ee-93f8-acde48001122 --restore_dir filesystem --restore_path "your_mopath" +``` + +恢复后会在 matrixone 生成新的 mo-data 文件 + +**步骤三:**启动 mo + +## 校验备份的校验码 + +读取备份文件夹中的每个文件及其 sha256 文件。计算文件的 sha256 值并与 sha256 文件值对比。sha256 文件是在文件创建或更新时,创建的。 + +### 语法结构 + +- 校验某个 ID 的备份 + +``` +mo_br check ID + //校验指定ID的备份数据。如果备份在s3(oss minio)上时,需要指定 + --backup_access_key_id string + --backup_secret_access_key string + --meta_path string 指定meta文件位置。如果不指定,默认是同一目录下的mo_br.meta文件。 +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +- 校验备份,指定备份的 path + +``` +mo_br check + --backup_dir s3|filesystem + //s3 + --backup_endpoint + --backup_access_key_id + --backup_secret_access_key + --backup_bucket + --backup_filepath + --backup_region + --backup_compression + --backup_role_arn + --backup_is_minio + //filesystem + --backup_path + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_dir | 备份所在的路径类型,在没有指定 ID 时,必须要指定。s3 或 filesystem| +|backup_endpoint| 连接到备份在 s3 的的 URL| +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|backup_bucket| 备份在 s3 的桶| +|backup_filepath| 备份在 s3 的相对文件路径| +|backup_region| 备份在 s3 的服务区域| +|backup_compression| 备份在 s3 的文件的压缩格式。| +|backup_role_arn| 备份在 s3 的角色的资源名称。| +|backup_is_minio| 指定备份的 s3 是否是 minio| +|backup_path| 本地备份的路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +### 示例 + +- 校验某个 ID 的备份 + +``` +./mo_br check 1614f462-126c-11ef-9af3-26dd28356ef3 ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ +| 1614f462-126c-11ef-9af3-26dd28356ef3 | 126 MB | BackupDir: filesystem Path: | 2024-05-15 11:34:28 +0800 | 22.455633916s | 2024-05-15 11:34:50 +0800 | +| | | /Users/admin/soft/incbackup/back2 | | | | ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ + +Checking the backup data... + +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/launch.toml_018f7a50-d300-7017-8580-150edf08733e +... +``` + +- 校验某个备份目录中的备份 + +``` +(base) admin@admindeMacBook-Pro mo-backup % ./mo_br check --backup_dir filesystem --backup_path /Users/admin/soft/incbackup/back2 +2024/05/15 11:40:30.011160 +0800 INFO malloc/malloc.go:42 malloc {"max buffer size": 1073741824, "num shards": 16, "classes": 23, "min class size": 128, "max class size": 1048576, "buffer objects per class": 23} +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/launch.toml_018f7a50-d300-7017-8580-150edf08733e +check: config/log.toml_018f7a50-d30c-7ed0-85bc-191e9f1eb753 +... +``` + +## 最佳实践 + +下面我们将通过几个简单的示例来讲述如何使用 mo_br 进行数据的备份与还原 + +## 示例 1 全量备份恢复 + +- 连接 mo 创建数据库 db1、db2。 + +```sql +create database db1; +create database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 创建全量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback1" + +Backup ID + 25536ff0-126f-11ef-9902-26dd28356ef3 + +./mo_br list ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | BACKUPTS | BACKUPTYPE | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +| 25536ff0-126f-11ef-9902-26dd28356ef3 | 65 MB | BackupDir: filesystem Path: | 2024-05-15 11:56:44 +0800 | 8.648091083s | 2024-05-15 11:56:53 +0800 | 1715745404915410000-1 | full | +| | | /Users/admin/soft/backuppath/syncback1 | | | | | | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +``` + +- 连接 mo 删除数据库 db1 并建立数据库 db3。 + +```sql +drop database db1; +create database db3; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db2 | +| db3 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 停止 mo 服务,删除 mo-data,恢复备份 + +``` +mo_ctl stop +rm -rf /Users/admin/soft/matrixone/mo-data + +./mo_br restore 25536ff0-126f-11ef-9902-26dd28356ef3 --restore_dir filesystem --restore_path "/Users/admin/soft/matrixone" +From: + BackupDir: filesystem + Path: /Users/admin/soft/backuppath/syncback1 + +To + BackupDir: filesystem + Path: /Users/admin/soft/matrixone + +TaePath + ./mo-data/shared +restore tae file path ./mo-data/shared, parallelism 1, parallel count num: 1 +restore file num: 1, total file num: 733, cost : 549µs +Copy tae file 1 + 018f7a41-1881-7999-bbd6-858c3d4acc18_00000 => mo-data/shared/018f7a41-1881-7999-bbd6-858c3d4acc18_00000 + ... +``` + +- 启动 mo,检查恢复情况 + +``` +mo_ctl start +``` + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +可以看到,恢复成功。 + +## 示例 2 增量备份恢复 + +- 连接 mo 创建数据库 db1、db2 + +```sql +create database db1; +create database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 创建全量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback2" + +Backup ID + 2289638c-1284-11ef-85e4-26dd28356ef3 +``` + +- 创建基于上述全量备份的增量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback2" --backup_type "incremental" --base_id "2289638c-1284-11ef-85e4-26dd28356ef3" + +Backup ID + 81531c5a-1284-11ef-9ba3-26dd28356ef3 + +./mo_br list ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | BACKUPTS | BACKUPTYPE | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +| 2289638c-1284-11ef-85e4-26dd28356ef3 | 70 MB | BackupDir: filesystem Path: | 2024-05-15 14:26:59 +0800 | 9.927034917s | 2024-05-15 14:27:09 +0800 | 1715754419668571000-1 | full | +| | | /Users/admin/soft/backuppath/syncback2 | | | | | | +| 81531c5a-1284-11ef-9ba3-26dd28356ef3 | 72 MB | BackupDir: filesystem Path: | 2024-05-15 14:29:38 +0800 | 2.536263666s | 2024-05-15 14:29:41 +0800 | 1715754578690660000-1 | incremental | +| | | /Users/admin/soft/backuppath/syncback2 | | | | | | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +``` + +对比增量备份和全量备份的的耗时 (Duration),可以看到增量备份耗时较少。 + +- 连接 mo 删除数据库 db1 并建立数据库 db3。 + +```sql +drop database db1; +create database db3; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db2 | +| db3 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 停止 mo 服务,删除 mo-data,恢复备份 + +``` +mo_ctl stop +rm -rf /Users/admin/soft/matrixone/mo-data + +./mo_br restore 81531c5a-1284-11ef-9ba3-26dd28356ef3 --restore_dir filesystem --restore_path "/Users/admin/soft/matrixone" +2024/05/15 14:35:27.910925 +0800 INFO malloc/malloc.go:43 malloc {"max buffer size": 2147483648, "num shards": 8, "classes": 23, "min class size": 128, "max class size": 1048576, "buffer objects per class": 22} +From: + BackupDir: filesystem + Path: /Users/admin/soft/backuppath/syncback2 + +To + BackupDir: filesystem + Path: /Users/admin/soft/matrixone + +TaePath + ./mo-data/shared +... +``` + +- 启动 mo,检查恢复情况 + +``` +mo_ctl start +``` + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +可以看到,恢复成功。 diff --git a/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-physical-backup-restore.md b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-physical-backup-restore.md new file mode 100644 index 0000000000..f135afffcf --- /dev/null +++ b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-physical-backup-restore.md @@ -0,0 +1,254 @@ +## 原理概述 + +数据库常规物理备份是直接复制数据库的物理存储文件,包括数据文件、日志文件和控制文件等,以创建数据库的一个独立副本。这一过程通常在文件系统级别进行,可以通过操作系统的命令实现,生成的备份是数据库的完整备份,包含了所有的数据和对象。备份文件可以存储在多种介质上,并可通过压缩和加密来节省空间和提高安全性。在恢复时,可以直接将这些文件复制到需要的位置,从而快速地恢复整个数据库。此外,物理备份支持跨平台迁移,适用于灾难恢复和数据库迁移场景,但可能需要较多的存储空间和时间。 + +全量备份是指备份数据库中所有数据的备份过程。它创建了一个数据库的完整副本,这通常需要更多的存储空间和更长的时间来完成。由于包含了所有数据,全量备份在恢复时较为简单,可以直接恢复到备份时的状态。 + +增量备份是指备份自上次备份以来发生变化的数据。它只复制在两次备份之间有修改的数据块或数据文件,因此备份集通常较小,备份速度较快。增量备份可以节省存储空间和备份时间,但在数据恢复时可能更复杂,因为需要依次应用一系列增量备份来恢复到最新状态。 + +MatrixOne 支持使用 `mo_br` 进行增量和全量物理备份恢复: + +!!! note + mo_br 企业级服务的备份与恢复工具,你需要联系你的 MatrixOne 客户经理,获取工具下载路径。 + +## 示例 + +### 示例 1 全量备份恢复 + +- 连接 mo 创建数据库 db1、db2。 + +```sql +create database db1; +create database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 创建全量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback1" + +Backup ID + 25536ff0-126f-11ef-9902-26dd28356ef3 + +./mo_br list ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | BACKUPTS | BACKUPTYPE | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +| 25536ff0-126f-11ef-9902-26dd28356ef3 | 65 MB | BackupDir: filesystem Path: | 2024-05-15 11:56:44 +0800 | 8.648091083s | 2024-05-15 11:56:53 +0800 | 1715745404915410000-1 | full | +| | | /Users/admin/soft/backuppath/syncback1 | | | | | | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+------------+ +``` + +- 连接 mo 删除数据库 db1 并建立数据库 db3。 + +```sql +drop database db1; +create database db3; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db2 | +| db3 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 停止 mo 服务,删除 mo-data,恢复备份 + +``` +mo_ctl stop +rm -rf /Users/admin/soft/matrixone/mo-data + +./mo_br restore 25536ff0-126f-11ef-9902-26dd28356ef3 --restore_dir filesystem --restore_path "/Users/admin/soft/matrixone" +From: + BackupDir: filesystem + Path: /Users/admin/soft/backuppath/syncback1 + +To + BackupDir: filesystem + Path: /Users/admin/soft/matrixone + +TaePath + ./mo-data/shared +restore tae file path ./mo-data/shared, parallelism 1, parallel count num: 1 +restore file num: 1, total file num: 733, cost : 549µs +Copy tae file 1 + 018f7a41-1881-7999-bbd6-858c3d4acc18_00000 => mo-data/shared/018f7a41-1881-7999-bbd6-858c3d4acc18_00000 + ... +``` + +- 启动 mo,检查恢复情况 + +``` +mo_ctl start +``` + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +可以看到,恢复成功。 + +### 示例 2 增量备份恢复 + +- 连接 mo 创建数据库 db1、db2 + +```sql +create database db1; +create database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 创建全量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback2" + +Backup ID + 2289638c-1284-11ef-85e4-26dd28356ef3 +``` + +- 创建基于上述全量备份的增量备份 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "/Users/admin/soft/backuppath/syncback2" --backup_type "incremental" --base_id "2289638c-1284-11ef-85e4-26dd28356ef3" + +Backup ID + 81531c5a-1284-11ef-9ba3-26dd28356ef3 + +./mo_br list ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | BACKUPTS | BACKUPTYPE | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +| 2289638c-1284-11ef-85e4-26dd28356ef3 | 70 MB | BackupDir: filesystem Path: | 2024-05-15 14:26:59 +0800 | 9.927034917s | 2024-05-15 14:27:09 +0800 | 1715754419668571000-1 | full | +| | | /Users/admin/soft/backuppath/syncback2 | | | | | | +| 81531c5a-1284-11ef-9ba3-26dd28356ef3 | 72 MB | BackupDir: filesystem Path: | 2024-05-15 14:29:38 +0800 | 2.536263666s | 2024-05-15 14:29:41 +0800 | 1715754578690660000-1 | incremental | +| | | /Users/admin/soft/backuppath/syncback2 | | | | | | ++--------------------------------------+-------+----------------------------------------+---------------------------+--------------+---------------------------+-----------------------+-------------+ +``` + +对比增量备份和全量备份的的耗时 (Duration),可以看到增量备份耗时较少。 + +- 连接 mo 删除数据库 db1 并建立数据库 db3。 + +```sql +drop database db1; +create database db3; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db2 | +| db3 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +- 停止 mo 服务,删除 mo-data,恢复备份 + +``` +mo_ctl stop +rm -rf /Users/admin/soft/matrixone/mo-data + +./mo_br restore 81531c5a-1284-11ef-9ba3-26dd28356ef3 --restore_dir filesystem --restore_path "/Users/admin/soft/matrixone" +2024/05/15 14:35:27.910925 +0800 INFO malloc/malloc.go:43 malloc {"max buffer size": 2147483648, "num shards": 8, "classes": 23, "min class size": 128, "max class size": 1048576, "buffer objects per class": 22} +From: + BackupDir: filesystem + Path: /Users/admin/soft/backuppath/syncback2 + +To + BackupDir: filesystem + Path: /Users/admin/soft/matrixone + +TaePath + ./mo-data/shared +... +``` + +- 启动 mo,检查恢复情况 + +``` +mo_ctl start +``` + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +9 rows in set (0.00 sec) +``` + +可以看到,恢复成功。 diff --git a/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-snapshot-backup-restore.md b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-snapshot-backup-restore.md new file mode 100644 index 0000000000..a4f8a2ede8 --- /dev/null +++ b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-snapshot-backup-restore.md @@ -0,0 +1,288 @@ +# mo_br 工具进行快照备份恢复 + +## 快照备份恢复实现原理 + +数据库快照备份恢复通过创建数据库在特定时间点的只读静态视图,这个视图被称为快照。快照利用存储系统的写时复制(COW)技术,仅在原始数据页被修改前复制并存储该页,从而生成数据库在快照创建时刻的状态副本。在需要恢复数据时,可以选取快照中的数据并将其复制或恢复到新的或现有的数据库中。快照文件最初很小,随着源数据库的更改而逐渐增长,因此需要监控其大小并在必要时进行管理。快照必须与源数据库位于同一服务器实例,并且由于它们是只读的,不能直接在其上进行写操作。要注意的是,快照恢复操作会覆盖当前数据,因此需要谨慎操作。 + +## 应用场景 + +数据库快照是一种强大的工具,可以在多种场景下提高数据库的可用性和性能。以下为快照的一些应用场景: + +- **数据备份与恢复**:快照可以作为数据库备份的一种方式,它允许在不停止数据库服务的情况下创建数据库的只读副本,用于数据备份和恢复。 + +- **报表和数据分析**:在需要数据库保持静态状态进行报表生成或数据分析时,可以使用快照来避免影响在线事务处理。 + +- **开发和测试**:在开发新功能或测试系统前,可以通过快照创建数据库的一个副本,以便测试可以在不影响生产环境的情况下进行。 + +- **数据迁移**:在数据迁移过程中,可以使用快照来确保数据的一致性,避免迁移过程中的数据变更。 + +- **高危操作保护**:在执行可能对数据库稳定性造成影响的操作(如数据库升级、结构变更等)之前,可以创建快照,以便在操作失败时能够快速恢复。 + +## MatrixOne 对快照的支持 + +MatrixOne 支持以下两种方式进行租户级别的快照备份恢复: + +- sql 语句 +- mo_br 工具 + +本篇文档主要介绍如何使用 `mo_br` 进行租户级别快照备份恢复。 + +!!! note + mo_br 企业级服务的备份与恢复工具,你需要联系你的 MatrixOne 客户经理,获取工具下载路径。 + +## 开始前准备 + +- 已完成[单机部署 MatrixOne](../../../Get-Started/install-standalone-matrixone.md) + +- 已完成 mo_br 工具部署 + +## 示例 + +## 示例 1 表级别的恢复 + +- 连接 Matrixone 系统租户执行建表语句 + +```sql +create db if not exists snapshot_read; +use snapshot_read; +create table test_snapshot_read (a int); +INSERT INTO test_snapshot_read (a) VALUES(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), (39), (40),(41), (42), (43), (44), (45), (46), (47), (48), (49), (50),(51), (52), (53), (54), (55), (56), (57), (58), (59), (60),(61), (62), (63), (64), (65), (66), (67), (68), (69), (70),(71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90),(91), (92), (93), (94), (95), (96), (97), (98), (99), (100); + +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 100 | ++----------+ +``` + +- 创建快照 + +``` +./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "dump" --password "111" --level "account" --sname "sp_01" --account "sys" + +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +sp_01 2024-05-10 02:06:08.01635 account sys +``` + +- 连接 Matrixone 系统租户按删除表中部分数据。 + +```sql +delete from snapshot_read.test_snapshot_read where a <= 50; + +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 50 | ++----------+ +``` + +- 表级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --db "snapshot_read" --table "test_snapshot_read" --sname "sp_01" +``` + +- 连接 Matrixone 系统租户查询恢复情况 + +```sql +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 100 | ++----------+ +``` + +## 示例 2 数据库级别恢复 + +- 连接 Matrixone 系统租户执行 sql 语句 + +```sql +create db if not exists snapshot_read; +use snapshot_read; +create table test_snapshot_read (a int); +INSERT INTO test_snapshot_read (a) VALUES(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), (39), (40),(41), (42), (43), (44), (45), (46), (47), (48), (49), (50),(51), (52), (53), (54), (55), (56), (57), (58), (59), (60),(61), (62), (63), (64), (65), (66), (67), (68), (69), (70),(71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90),(91), (92), (93), (94), (95), (96), (97), (98), (99), (100); +create table test_snapshot_read_1(a int); +INSERT INTO test_snapshot_read_1 (a) VALUES(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), (39), (40),(41), (42), (43), (44), (45), (46), (47), (48), (49), (50),(51), (52), (53), (54), (55), (56), (57), (58), (59), (60),(61), (62), (63), (64), (65), (66), (67), (68), (69), (70),(71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90),(91), (92), (93), (94), (95), (96), (97), (98), (99), (100); + +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 200 | ++----------+ +1 row in set (0.00 sec) + +mysql> select count(*) from snapshot_read.test_snapshot_read_1; ++----------+ +| count(*) | ++----------+ +| 100 | ++----------+ +1 row in set (0.01 sec) +``` + +- 创建快照 + +``` +./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "dump" --password "111" --level "account" --sname "sp_02" --account "sys" + +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +sp_02 2024-05-10 02:47:15.638519 account sys +``` + +- 连接 Matrixone 系统租户删除部分数据 + +```sql +delete from snapshot_read.test_snapshot_read where a <= 50; +delete from snapshot_read.test_snapshot_read_1 where a >= 50; + +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 100 | ++----------+ +1 row in set (0.00 sec) + +mysql> select count(*) from snapshot_read.test_snapshot_read_1; ++----------+ +| count(*) | ++----------+ +| 49 | ++----------+ +1 row in set (0.01 sec) +``` + +- 数据库级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --db "snapshot_read" --sname "sp_02" +``` + +- 连接 Matrixone 系统租户查询恢复情况 + +```sql +mysql> select count(*) from snapshot_read.test_snapshot_read; ++----------+ +| count(*) | ++----------+ +| 200 | ++----------+ +1 row in set (0.00 sec) + +mysql> select count(*) from snapshot_read.test_snapshot_read_1; ++----------+ +| count(*) | ++----------+ +| 100 | ++----------+ +1 row in set (0.00 sec) +``` + +## 示例 3 租户级别恢复 + +租户级别恢复 + +- 连接 Matrixone 系统租户执行 sql 语句 + +```sql +create database if not exists snapshot_read; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| snapshot_read | +| system | +| system_metrics | ++--------------------+ +8 rows in set (0.00 sec) +``` + +- 创建快照 + +``` +./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "dump" --password "111" --level "account" --sname "sp_03" --account "sys" + +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "dump" --password "111" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +sp_03 2024-05-11 03:20:16.065685 account sys +``` + +- 连接 Matrixone 系统租户删除数据库 + +```sql +drop database snapshot_read; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| system | +| system_metrics | ++--------------------+ +7 rows in set (0.01 sec) +``` + +- 租户级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --sname "sp_03" +``` + +- 租户级别恢复到新租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --sname "sp_03" --new_account "acc2" --new_admin_name "admin" --new_admin_password "111"; +``` + +- 连接 Matrixone 系统租户查询恢复情况 + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mo_debug | +| mo_task | +| mysql | +| snapshot_read | +| system | +| system_metrics | ++--------------------+ +8 rows in set (0.00 sec) +``` + +- 连接新租户 acc2 查询恢复情况 + +```sql +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| snapshot_read | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.00 sec) +``` \ No newline at end of file diff --git a/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr.md b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr.md new file mode 100644 index 0000000000..c6a643211d --- /dev/null +++ b/docs/MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr.md @@ -0,0 +1,673 @@ +# mo_br 备份与恢复 + +数据库物理备份和快照备份是两种重要的数据保护策略,它们在很多场景下都发挥着重要的作用。物理备份通过复制数据库的物理文件,如数据文件和日志文件,能够实现快速和完整的数据库恢复,特别适合于数据库整体迁移或灾难恢复的情况。另一方面,快照备份通过记录数据在特定时间点的状态,提供了一种快速且存储效率高的备份方式,适用于需要进行时间点恢复或只读查询操作的场景,如生成报告或进行数据分析。物理备份的恢复可能需要较长时间,而快照备份则可以提供快速的数据访问,两者结合使用,可以为数据库提供全面的保护,确保数据的安全性和业务的连续性。 + +MatrixOne 支持通过 `mo_br` 实用工具进行常规物理备份和快照备份。本章节将介绍 `mo_br` 的使用方法。 + +!!! note + mo_br 企业级服务的物理备份与恢复工具,你需要联系你的 MatrixOne 客户经理,获取工具下载路径。 + +## 参考命令指南 + +help - 打印参考指南 + +``` +./mo_br help +the backup and restore tool for the matrixone + +Usage: + mo_br [flags] + mo_br [command] + +Available Commands: + backup backup the matrixone data + check check the backup + completion Generate the autocompletion script for the specified shell + delete delete the backup + help Help about any command + list search the backup + restore restore the matrixone data + snapshot Manage snapshots + +Flags: + --config string config file (default "./mo_br.toml") + -h, --help help for mo_br + --log_file string log file (default "console") + --log_level string log level (default "error") + +Use "mo_br [command] --help" for more information about a command. +``` + +## 物理备份 + +### 创建备份 + +#### 语法结构 + +``` +mo_br backup + --host + --port + --user + --password + --backup_dir s3|filesystem + //s3 oss minio + --endpoint + --access_key_id + --secret_access_key + --bucket + --filepath + --region + --compression + --role_arn + --is_minio + --parallelism + //filesystem + --path + --parallelism + --meta_path + //增量备份需要 + --backup_type + --base_id +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user| 用户| +|password | 用户的密码| +|backup_dir | 备份的目标路径类型。s3 或 filesystem| +|endpoint| 连接到备份到 s3 的服务的 URL| +|access_key_id| 备份到 s3 的 Access key ID| +|secret_access_key| 备份到 s3 的 Secret access key| +|bucket| 备份到的 s3 需要访问的桶| +|filepath| 备份到 s3 的相对文件路径| +|region| 备份到 s3 的对象存储服务区域| +|compression| 备份到 s3 的文件的压缩格式。| +|role_arn| 备份到 s3 的角色的资源名称。| +|is_minio| 指定备份到的 s3 是否为 minio| +|path| 本地文件系统备份路径| +|parallelism|并行度| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|backup_type|指定备份类型为增量备份,incremental。| +|base_id|上次一次备份的 ID,主要用于确定上次备份的时间戳。| + +#### 示例 + +- 全量备份到本地文件系统 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "yourpath" +``` + +- 全量备份到 minio + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "s3" --endpoint "http://127.0.0.1:9000" --access_key_id "S0kwLuB4JofVEIAxWTqf" --secret_access_key "X24O7t3hccmqUZqvqvmLN8464E2Nbr0DWOu9Qs5A" --bucket "bucket1" --filepath "/backup1" --is_minio +``` + +- 增量备份到本地文件系统 + +``` +./mo_br backup --host "127.0.0.1" --port 6001 --user "dump" --password "111" --backup_dir "filesystem" --path "yourpath" --backup_type "incremental" --base_id "xxx" +``` + +### 查看备份 + +#### 语法结构 + +``` +mo_br list + -- ID + //要查询备份数据。如果备份在s3(oss minio)上时,需要指定 + --access_key_id + --secret_access_key + --not_check_data + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +| ID | 备份的 ID| +|access_key_id| 备份到的 s3 的 Access key ID| +|secret_access_key| 备份到的 s3 的 Secret access key| +|not_check_data | 只查看 meta 中的信息。不查看备份数据。默认不带这个参数的,就是会检查备份的文件。当前只会检查备份的文件是否存在。| +|meta_path | 指定 meta 文件位置。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +#### 示例 + +- 查看所有备份列表 + +``` +./mo_br list ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| 4d21b228-10dd-11ef-9497-26dd28356ef2 | 586 kB | BackupDir: filesystem Path: | 2024-05-13 12:00:12 +0800 | 1.700945333s | 2024-05-13 12:00:13 +0800 | +| | | /Users/admin/soft/backup | | | | +| 01108122-10f9-11ef-9359-26dd28356ef2 | 8.3 MB | BackupDir: filesystem Path: | 2024-05-13 15:18:28 +0800 | 3.394437375s | 2024-05-13 15:18:32 +0800 | +| | | /Users/admin/soft/backup | | | | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +``` + +- 查看指定 ID 备份列表,list 确定的 ID 时,会检测备份的文件。 + +``` +./mo_br list 4d21b228-10dd-11ef-9497-26dd28356ef2 ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ +| 4d21b228-10dd-11ef-9497-26dd28356ef2 | 586 kB | BackupDir: filesystem Path: | 2024-05-13 12:00:12 +0800 | 1.700945333s | 2024-05-13 12:00:13 +0800 | +| | | /Users/admin/soft/backup | | | | ++--------------------------------------+--------+--------------------------------+---------------------------+--------------+---------------------------+ + +Checking the backup data(currently,no checksum)... + +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/log.toml_018f70d1-3100-7762-b28b-8f85ac4ed3cd +check: config/tn.toml_018f70d1-310e-78fc-ac96-aa5e06981bd7 +... +``` + +### 删除备份 + +#### 语法结构 + +``` +mo_br delete ID + //要删除备份数据。如果备份在s3(oss minio)上时,需要指定 + --access_key_id + --secret_access_key + --not_delete_data + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +| ID | 要删除的备份的 ID| +|access_key_id| 备份到的 s3 的 Access key ID| +|secret_access_key| 备份到的 s3 的 Secret access key| +|not_delete_data|只删除 meta 中的信息。不删除备份数据。| +|meta_path|指定 meta 文件位置。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +#### 示例 + +- 删除本地文件系统备份 + +``` +./mo_br delete e4cade26-3139-11ee-8631-acde48001122 +``` + +- 删除 minio 上的一个备份。 + +``` +./mo_br delete e4cade26-3139-11ee-8631-acde48001122 --access_key_id "S0kwLuB4JofVEIAxWTqf" --secret_access_key "X24O7t3hccmqUZqvqvmLN8464E2Nbr0DWOu9Qs5A" +``` + +### 恢复备份 + +#### 语法结构 + +- 恢复指定 ID 的备份 + +``` +mo_br restore ID + //读取指定ID的备份数据。如果备份在s3(oss minio)上时,需要指定 + --backup_access_key_id + --backup_secret_access_key + + //恢复的目标路径 restore_directory + --restore_dir s3|filesystem + //s3 + --restore_endpoint + --restore_access_key_id + --restore_secret_access_key + --restore_bucket + --restore_filepath + --restore_region + --restore_compression + --restore_role_arn + --restore_is_minio + //filesystem + --restore_path + --dn_config_path + --meta_path + --checksum + --parallelism +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|ID | 要恢复的 ID| +|backup_access_key_id|备份在 s3 的 Access key ID| +|backup_secret_access_key |备份在 s3 的 Secret access key| +|restore_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3|filesystem| +|restore_endpoint| 连接到恢复到 S3 服务的 URL| +|restore_access_key_id| 恢复到 s3 的 Access key ID| +|restore_secret_access_key| 恢复到 s3 的 Secret access key| +|restore_bucket| 恢复到 s3 需要访问的桶| +|restore_filepath|恢复到 s3 的相对文件路径| +|restore_region| 恢复到 s3 的对象存储服务区域| +|restore_compression|恢复到 s3 的 S3 文件的压缩格式。| +|restore_role_arn| 恢复到 s3 的角色的资源名称。| +|restore_is_minio|指定恢复到的 s3 是否是 minio| +|restore_path|恢复到本地的路径| +|dn_config_path| dn 配置路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|checksum |恢复的时候 tae 文件复制的并行度,默认是 1| +|parallelism|并行度| + +- 不指定恢复备份 ID + +``` +//恢复。 +mo_br restore + --backup_dir s3|filesystem 备份的目标路径类型。指定备份的目标路径时使用。 + //s3 + --backup_endpoint + --backup_access_key_id + --backup_secret_access_key + --backup_bucket + --backup_filepath + --backup_region + --backup_compression + --backup_role_arn + --backup_is_minio + //filesystem + --backup_path + //恢复的目标路径 restore_directory + --restore_dir s3|filesystem 恢复的目标路径类型。指定恢复的目标路径时使用。 + //s3 + --restore_endpoint + --restore_access_key_id + --restore_secret_access_key + --restore_bucket + --restore_filepath + --restore_region + --restore_compression + --restore_role_arn + --restore_is_minio + //filesystem + --restore_path + --dn_config_path + --meta_path + --checksum + --parallelism +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3|filesystem| +|backup_endpoint| 连接到备份在 s3 的的 URL| +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|backup_bucket| 备份在 s3 的桶| +|backup_filepath| 备份在 s3 的相对文件路径| +|backup_region| 备份在 s3 的服务区域| +|backup_compression| 备份在 s3 的文件的压缩格式。| +|backup_role_arn| 备份在 s3 的角色的资源名称。| +|backup_is_minio| 指定备份的 s3 是否是 minio| +|backup_path| 本地备份的路径| +|restore_dir | 恢复的目标路径类型。指定恢复的目标路径时使用。s3 或 filesystem| +|restore_endpoint| 连接到恢复到 S3 服务的 URL| +|restore_access_key_id| 恢复到 s3 的 Access key ID| +|restore_secret_access_key| 恢复到 s3 的 Secret access key| +|restore_bucket| 恢复到 s3 需要访问的桶| +|restore_filepath|恢复到 s3 的相对文件路径| +|restore_region| 恢复到 s3 的对象存储服务区域| +|restore_compression|恢复到 s3 的 S3 文件的压缩格式。| +|restore_role_arn| 恢复到 s3 的角色的资源名称。| +|restore_is_minio|指定恢复到的 s3 是否是 minio| +|restore_path|恢复到本地 matrixone 的路径| +|dn_config_path| dn 配置路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| +|checksum |恢复的时候 tae 文件复制的并行度,默认是 1| +|parallelism|并行度| + +#### 示例 + +从文件系统恢复到文件系统 + +**步骤一:**停止 mo,删除 mo-data + +**步骤二:**执行以下恢复命令 + +``` +./mo_br restore fb26fd88-41bc-11ee-93f8-acde48001122 --restore_dir filesystem --restore_path "your_mopath" +``` + +恢复后会在 matrixone 生成新的 mo-data 文件 + +**步骤三:**启动 mo + +### 校验备份的校验码 + +读取备份文件夹中的每个文件及其 sha256 文件。计算文件的 sha256 值并与 sha256 文件值对比。sha256 文件是在文件创建或更新时,创建的。 + +#### 语法结构 + +- 校验某个 ID 的备份 + +``` +mo_br check ID + //校验指定ID的备份数据。如果备份在s3(oss minio)上时,需要指定 + --backup_access_key_id string + --backup_secret_access_key string + --meta_path string 指定meta文件位置。如果不指定,默认是同一目录下的mo_br.meta文件。 +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +- 校验备份,指定备份的 path + +``` +mo_br check + --backup_dir s3|filesystem + //s3 + --backup_endpoint + --backup_access_key_id + --backup_secret_access_key + --backup_bucket + --backup_filepath + --backup_region + --backup_compression + --backup_role_arn + --backup_is_minio + //filesystem + --backup_path + --meta_path +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|backup_dir | 备份所在的路径类型,在没有指定 ID 时,必须要指定。s3 或 filesystem| +|backup_endpoint| 连接到备份在 s3 的的 URL| +|backup_access_key_id| 备份在 s3 的 Access key ID| +|backup_secret_access_key| 备份在 s3 的 Secret access key| +|backup_bucket| 备份在 s3 的桶| +|backup_filepath| 备份在 s3 的相对文件路径| +|backup_region| 备份在 s3 的服务区域| +|backup_compression| 备份在 s3 的文件的压缩格式。| +|backup_role_arn| 备份在 s3 的角色的资源名称。| +|backup_is_minio| 指定备份的 s3 是否是 minio| +|backup_path| 本地备份的路径| +|meta_path|指定 meta 文件位置。只能是文件系统中的路径。如果不指定,默认是同一目录下的 mo_br.meta 文件。| + +#### 示例 + +- 校验某个 ID 的备份 + +``` +./mo_br check 1614f462-126c-11ef-9af3-26dd28356ef3 ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ +| ID | SIZE | PATH | AT TIME | DURATION | COMPLETE TIME | ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ +| 1614f462-126c-11ef-9af3-26dd28356ef3 | 126 MB | BackupDir: filesystem Path: | 2024-05-15 11:34:28 +0800 | 22.455633916s | 2024-05-15 11:34:50 +0800 | +| | | /Users/admin/soft/incbackup/back2 | | | | ++--------------------------------------+--------+-----------------------------------+---------------------------+---------------+---------------------------+ + +Checking the backup data... + +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/launch.toml_018f7a50-d300-7017-8580-150edf08733e +... +``` + +- 校验某个备份目录中的备份 + +``` +(base) admin@admindeMacBook-Pro mo-backup % ./mo_br check --backup_dir filesystem --backup_path /Users/admin/soft/incbackup/back2 +2024/05/15 11:40:30.011160 +0800 INFO malloc/malloc.go:42 malloc {"max buffer size": 1073741824, "num shards": 16, "classes": 23, "min class size": 128, "max class size": 1048576, "buffer objects per class": 23} +check: /backup_meta +check: /mo_meta +check: hakeeper/hk_data +check: tae/tae_list +check: tae/tae_sum +check: config/launch.toml_018f7a50-d300-7017-8580-150edf08733e +check: config/log.toml_018f7a50-d30c-7ed0-85bc-191e9f1eb753 +... +``` + +## 快照备份 + +### 创建快照 + +#### 语法结构 + +``` +mo_br snapshot create + --host + --port + --user + --password + --level + --account + --sname +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user | 用户| +|password | 用户的密码| +|level | 快照备份的范围,暂只支持 account| +|account| 快照备份的租户对象名| +|sname | 快照名称| + +#### 示例 + +- 为系统租户 sys 创建快照: + +``` +./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "dump" --password "111" --level "account" --sname "snapshot_01" --account "sys" +``` + +- 系统租户为普通租户 acc1 创建快照: + +``` + ./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "dump" --password "111" --level "account" --sname "snapshot_02" --account "acc1" +``` + +- 普通租户创建快照: + + - 创建普通租户 acc1 + + ```sql + create account acc1 admin_name admin IDENTIFIED BY '111'; + ``` + + - acc1 创建快照 + + ``` + ./mo_br snapshot create --host "127.0.0.1" --port 6001 --user "acc1#admin" --password "111" --level "account" --account "acc1" --sname "snapshot_03" + ``` + +### 查看快照 + +#### 语法结构 + +``` +mo_br snapshot show + --host + --port + --user + --password + --account + --db + --table + --sname + --beginTs + --endTs +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user | 用户| +|password | 用户的密码| +|account| 要筛选的租户名,仅限 sys 管理员使用| +|db | 要筛选的数据库名| +|table | 要筛选的表名| +|sname | 要筛选的快照名称| +|beginTs |要筛选的快照时间戳的开始时间| +|endTs | 要筛选的快照时间戳的结束时间| + +#### 示例 + +- 查看系统租户下创建的快照: + +``` +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "dump" --password "111" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +snapshot_02 2024-05-11 02:29:23.07401 account acc1 +snapshot_01 2024-05-11 02:26:03.462462 account sys +``` + +- 查看 acc1 下创建的快照: + +``` +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "acc1#admin" --password "111" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +snapshot_03 2024-05-11 02:29:31.572512 account acc1 +``` + +- 查看系统租户下为租户 acc1 创建的快照,并对开始时间进行筛选: + +``` +./mo_br snapshot show --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "acc1" --beginTs "2024-05-11 00:00:00" +SNAPSHOT NAME TIMESTAMP SNAPSHOT LEVEL ACCOUNT NAME DATABASE NAME TABLE NAME +snapshot_02 2024-05-11 02:29:23.07401 account acc1 +``` + +### 删除快照 + +#### 语法结构 + +``` +mo_br snapshot drop + --host + --port + --user + --password + --sname +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user | 用户| +|password | 用户的密码| +|sname | 要筛选的快照名称| + +#### 示例 + +- 删除系统租户创建的快照: + +``` +./mo_br snapshot drop --host "127.0.0.1" --port 6001 --user "dump" --password "111" --sname "snapshot_01" +``` + +- 删除普通租户创建的快照: + +``` +./mo_br snapshot drop --host "127.0.0.1" --port 6001 --user "acc1#admin" --password "111" --sname "snapshot_03" +``` + +### 恢复快照 + +#### 语法结构 + +``` +mo_br snapshot restore + --host + --port + --user + --password + --sname + --account + --db + --table + --newaccount + --newaccountadmin + --newaccountpwd +``` + +**参数说明** + +| 参数 | 说明 | +| ---- | ---- | +|host | 目标 MatrixOne 的 IP| +|port|端口号| +|user | 用户| +|password | 用户的密码| +|sname | 要恢复的快照名称| +|account| 要恢复的租户名,仅限 sys 管理员使用| +|db | 要恢复的数据库名| +|table | 要恢复的表名| +|newaccount | 新创建的租户名| +|newaccountadmin | 租户管理员| +|newaccountpwd | 租户管理员密码| + +__NOTE__: 只有系统租户才可以执行恢复数据到新租户,且只允许租户级别的恢复。 + +#### 示例 + +- 表级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --db "snapshot_read" --table "test_snapshot_read" --sname "sp_01" +``` + +- 数据库级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --db "snapshot_read" --sname "sp_02" +``` + +- 租户级别恢复到本租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --sname "sp_03" +``` + +- 租户级别恢复到新租户 + +``` +./mo_br snapshot restore --host "127.0.0.1" --port 6001 --user "dump" --password "111" --account "sys" --sname "sp_03" --new_account "acc2" --new_admin_name "admin" --new_admin_password "111"; +``` \ No newline at end of file diff --git a/docs/MatrixOne/Overview/matrixone-feature-list.md b/docs/MatrixOne/Overview/matrixone-feature-list.md index 99bafbcf5f..53d21f3b7f 100644 --- a/docs/MatrixOne/Overview/matrixone-feature-list.md +++ b/docs/MatrixOne/Overview/matrixone-feature-list.md @@ -198,6 +198,7 @@ MatrixOne 的完整函数列表可以参见[该函数总表](../Reference/Functi | ------------ | ---------------------------------- | | 逻辑备份恢复 | Y,仅支持 mo-dump 工具 | | 物理备份恢复 | Y,仅支持 mobackup 工具 | +| 快照备份恢复 | Y,支持 mobackup 工具 和 SQL | | CDC 同步 | N(MatrixOne 作为源端不支持) | ## 管理工具 diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md new file mode 100644 index 0000000000..7fcd4fc3a3 --- /dev/null +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md @@ -0,0 +1,46 @@ +# CREATE SNAPSHOT + +## 语法说明 + +`CREATE SNAPSHOT` 命令用于创建快照。系统租户可以给自己也可以给普通租户创建快照,但是普通租户只能给自己创建快照。租户创建的快照仅本租户可见。 + +## 语法结构 + +```sql +> CREATE SNAPSHOT snapshot_name FOR ACCOUNT account_name +``` + +## 示例 + +```sql +--在系统租户 sys 下执行 +create snapshot sp1 for account sys; +create snapshot sp2 for account acc1; + +mysql> show snapshots; ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| SNAPSHOT_NAME | TIMESTAMP | SNAPSHOT_LEVEL | ACCOUNT_NAME | DATABASE_NAME | TABLE_NAME | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| sp2 | 2024-05-10 09:49:08.925908 | account | acc1 | | | +| sp1 | 2024-05-10 09:48:50.271707 | account | sys | | | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +2 rows in set (0.00 sec) + +--在租户 acc1 下执行 +mysql> create snapshot sp3 for account acc2;--普通租户只能为自己建立快照 +ERROR 20101 (HY000): internal error: only sys tenant can create tenant level snapshot for other tenant + +create snapshot sp3 for account acc1; + +mysql> show snapshots; ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| SNAPSHOT_NAME | TIMESTAMP | SNAPSHOT_LEVEL | ACCOUNT_NAME | DATABASE_NAME | TABLE_NAME | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| sp3 | 2024-05-10 09:53:09.948762 | account | acc1 | | | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +1 row in set (0.00 sec) +``` + +## 限制 + +- 目前只支持创建租户级别的快照,不支持创建集群级别、数据库级别和表级别的快照。 \ No newline at end of file diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-snapshot.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-snapshot.md new file mode 100644 index 0000000000..2bd2a5f62c --- /dev/null +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-snapshot.md @@ -0,0 +1,30 @@ +# DROP SNAPSHOT + +## 语法说明 + +`DROP SNAPSHOT` 用于删除当前租户下创建的快照。 + +## 语法结构 + +``` +> DROP SNAPSHOT snapshot_name; +``` + +## 示例 + +```sql +create snapshot sp1 for account sys; + +mysql> show snapshots; ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| SNAPSHOT_NAME | TIMESTAMP | SNAPSHOT_LEVEL | ACCOUNT_NAME | DATABASE_NAME | TABLE_NAME | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| sp1 | 2024-05-10 09:55:11.601605 | account | sys | | | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +1 row in set (0.01 sec) + +drop snapshot sp1; + +mysql> show snapshots; +Empty set (0.01 sec) +``` diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/restore-account.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/restore-account.md new file mode 100644 index 0000000000..fa01a9ed6d --- /dev/null +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/restore-account.md @@ -0,0 +1,281 @@ +# RESTORE ACCOUNT + +## 语法说明 + +`RESTORE ACCOUNT` 根据当前租户下创建的快照将租户/数据库/表恢复到某个时间戳对应的状态。 + +## 语法结构 + +``` +> RESTORE ACCOUNT account_name [DATABASE database_name [TABLE table_name]] FROM SNAPSHOT snapshot_name [TO ACCOUNT account_name]; +``` + +## 示例 + +- 示例 1:恢复租户到本租户 + +```sql +--在租户 acc1 下执行 +CREATE database db1; +CREATE database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +7 rows in set (0.00 sec) + +create snapshot acc1_snap1 for account acc1;--创建快照 +drop database db1;--删除数据库 db1,db2 +drop database db2; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +5 rows in set (0.01 sec) + +restore account acc1 FROM snapshot acc1_snap1;--恢复租户级别快照 + +mysql> show databases;--恢复成功 ++--------------------+ +| Database | ++--------------------+ +| db1 | +| db2 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +7 rows in set (0.01 sec) +``` + +- 示例 2:恢复数据库到本租户 + +```sql +--在租户 acc1 下执行 +CREATE database db1; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +7 rows in set (0.00 sec) + +create snapshot acc1_db_snap1 for account acc1;--创建快照 +drop database db1;--删除数据库 db1 + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) + +restore account acc1 database db1 FROM snapshot acc1_db_snap1;--恢复数据库级别快照 + +mysql> show databases;--恢复成功 ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +7 rows in set (0.00 sec) +``` + +- 示例 3:恢复表到本租户 + +```sql +--在租户 acc1 下执行 +CREATE TABLE t1(n1 int); +INSERT INTO t1 values(1); + +mysql> SELECT * FROM t1; ++------+ +| n1 | ++------+ +| 1 | ++------+ +1 row in set (0.00 sec) + +create snapshot acc1_tab_snap1 for account acc1;--创建快照 +truncate TABLE t1;--清空 t1 + +mysql> SELECT * FROM t1; +Empty set (0.01 sec) + +restore account acc1 database db1 TABLE t1 FROM snapshot acc1_tab_snap1;--恢复快照 + +mysql> SELECT * FROM t1;--恢复成功 ++------+ +| n1 | ++------+ +| 1 | ++------+ +1 row in set (0.00 sec) +``` + +- 示例 4:系统租户恢复普通租户到普通租户本租户 + +```sql +--在租户 acc1 下执行 +create database db1; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) + +--在系统租户 sys 下执行 +create snapshot acc1_snap1 for account acc1;--为 acc1 创建快照 + +--在租户 acc1 下执行 +drop database db1;--删除数据库 db1 + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) + +--在系统租户 sys 下执行 +restore account acc1 FROM snapshot acc1_snap1 TO account acc1;--在系统租户下对 acc1 进行快照恢复 + +--在租户 acc1 下执行 +mysql> show databases;--恢复成功 ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) +``` + +- 示例 5:系统租户恢复普通租户到新租户 + +```sql +--在租户 acc1 下执行 +create database db1; + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) + +--在系统租户 sys 下执行 +create snapshot acc1_snap1 for account acc1;--为 acc1 创建快照 + +--在租户 acc1 下执行 +drop database db1;--删除 db1 + +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) + +--在系统租户 sys 下执行 +create account acc2 ADMIN_NAME admin IDENTIFIED BY '111';--需要提前创建要目标新租户 +restore account acc1 FROM snapshot acc1_snap1 TO account acc2;--在系统租户下对 acc1 进行快照恢复,恢复至 acc2 + +--在租户 acc1 下执行 +mysql> show databases; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +5 rows in set (0.00 sec) + +--在租户 acc2 下执行 +mysql> show databases;--恢复至 acc2 ++--------------------+ +| Database | ++--------------------+ +| db1 | +| information_schema | +| mo_catalog | +| mysql | +| system | +| system_metrics | ++--------------------+ +6 rows in set (0.01 sec) +``` + +## 限制 + +- 目前只支持租户/数据库/表级别的恢复,暂不支持集群的。 + +- 系统租户恢复普通租户到新租户只允许租户级别的恢复。 + +- 只有系统租户才可以执行恢复数据到新租户,且只允许租户级别的恢复。新租户需提前创建,为了避免对象冲突,新租户最好为新建租户。 \ No newline at end of file diff --git a/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-snapshots.md b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-snapshots.md new file mode 100644 index 0000000000..12be29e70b --- /dev/null +++ b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-snapshots.md @@ -0,0 +1,36 @@ +# SHOW SNAPSHOTS + +## 语法说明 + +`SHOW SNAPSHOTS` 返回当前租户下创建的快照的信息,包括快照名、创建时间戳(UTC 时间)、快照级别、租户名称、数据库名、表名。 + +## 语法结构 + +``` +> SHOW SNAPSHOTS [WHERE expr] +``` + +## 示例 + +```sql +create account acc1 admin_name admin identified by '111'; +create snapshot sp1 for account acc1; +create snapshot sp2 for account sys; + +mysql> show snapshots; ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| SNAPSHOT_NAME | TIMESTAMP | SNAPSHOT_LEVEL | ACCOUNT_NAME | DATABASE_NAME | TABLE_NAME | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| sp2 | 2024-05-10 09:58:55.602263 | account | sys | | | +| sp1 | 2024-05-10 09:58:55.212365 | account | acc1 | | | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +2 rows in set (0.01 sec) + +mysql> show snapshots where account_name="acc1"; ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| snapshot_name | timestamp | snapshot_level | account_name | database_name | table_name | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +| sp1 | 2024-05-10 09:58:55.212365 | account | acc1 | | | ++---------------+----------------------------+----------------+--------------+---------------+------------+ +1 row in set (0.01 sec) +``` diff --git a/mkdocs.yml b/mkdocs.yml index d7f9f40400..69b0b6aee9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -207,6 +207,10 @@ nav: - MatrixOne 备份与恢复概述: MatrixOne/Maintain/backup-restore/backup-restore-overview.md - 备份与恢复相关概念: MatrixOne/Maintain/backup-restore/key-concepts.md - mo-dump 备份与恢复: MatrixOne/Maintain/backup-restore/modump-backup-restore.md + - mo_br 备份与恢复: + - mo_br 使用指南: MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr.md + - mo_br 常规物理备份恢复: MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-physical-backup-restore.md + - mo_br 快照备份恢复: MatrixOne/Maintain/backup-restore/mobr-backup-restore/mobr-snapshot-backup-restore.md - 数据挂载: - 挂载目录到 Docker 容器: MatrixOne/Maintain/mount-data-by-docker.md - 数据迁移: @@ -298,6 +302,7 @@ nav: - CREATE OR REPLACE VIEW: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-replace-view.md - CREATE SOURCE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-source.md - CREATE DYNAMIC TABLE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-dynamic-table.md + - CREATE SNAPSHOT: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-snapshot.md - ALTER TABLE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/alter-table.md - ALTER TABLE ... ALTER REINDEX: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/alter-reindex.md - ALTER PUBLICATION: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/alter-publication.md @@ -310,9 +315,11 @@ nav: - DROP PUBLICATION: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-publication.md - DROP SEQUENCE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-sequence.md - DROP STAGE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-stage.md + - DROP SNAPSHOT: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-snapshot.md - DROP VIEW: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-view.md - DROP FUNCTION: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/drop-function.md - TRUNCATE TABLE: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/truncate-table.md + - RESTORE ACCOUNT: MatrixOne/Reference/SQL-Reference/Data-Definition-Language/restore-account.md - 数据修改语言(DML): - INSERT: MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/insert.md - INSERT INTO SELECT: MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/insert-into-select.md @@ -380,6 +387,7 @@ nav: - SHOW PUBLICATIONS: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-publications.md - SHOW ROLES: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-roles.md - SHOW SEQUENCES: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-sequences.md + - SHOW SNAPSHOTS: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-snapshots.md - SHOW STAGE: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-stage.md - SHOW SUBSCRIPTIONS: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-subscriptions.md - SHOW VARIABLES: MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-variables.md @@ -621,6 +629,7 @@ nav: - MatrixOne 文件目录结构: MatrixOne/Maintain/mo-directory-structure.md - MatrixOne 工具: - mo_ctl 工具: MatrixOne/Maintain/mo_ctl.md + - mo_br 工具: MatrixOne/Maintain/mo_br.md - 故障诊断: - 慢查询: MatrixOne/Troubleshooting/slow-queries.md - 常用统计数据查询: MatrixOne/Troubleshooting/common-statistics-query.md