> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 允许以只读模式从备份中即时附加表/数据库。

# Backup

Backup 数据库引擎允许以只读模式从[备份](/zh/concepts/features/backup-restore/overview)中即时附加表/数据库。

Backup 数据库引擎同时支持增量备份和非增量备份。

<div id="creating-a-database">
  ## 创建数据库
</div>

```sql theme={null}
CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', 'backup_destination')
```

备份目标可以是任何有效的备份[destination](/zh/concepts/features/backup-restore/local-disk#configure-backup-destinations-for-disk)，例如 `Disk`、`S3`、`File`。

使用 `Disk` 备份目标时，用于从备份创建数据库的查询如下：

```sql theme={null}
CREATE DATABASE backup_database
ENGINE = Backup('database_name_inside_backup', Disk('disk_name', 'backup_name'))
```

**引擎参数**

* `database_name_inside_backup` — 备份中数据库的名称。
* `backup_destination` — 备份目标。

<div id="usage-example">
  ## 使用示例
</div>

下面以 `Disk` 备份目标为例。首先在 `storage.xml` 中配置用于备份的磁盘：

```xml theme={null}
<storage_configuration>
    <disks>
        <backups>
            <type>local</type>
            <path>/home/ubuntu/ClickHouseWorkDir/backups/</path>
        </backups>
    </disks>
</storage_configuration>
<backups>
    <allowed_disk>backups</allowed_disk>
    <allowed_path>/home/ubuntu/ClickHouseWorkDir/backups/</allowed_path>
</backups>
```

使用示例。下面创建测试数据库和表，插入一些数据，然后再创建备份：

```sql theme={null}
CREATE DATABASE test_database;

CREATE TABLE test_database.test_table_1 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_1 VALUES (0, 'test_database.test_table_1');

CREATE TABLE test_database.test_table_2 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_2 VALUES (0, 'test_database.test_table_2');

CREATE TABLE test_database.test_table_3 (id UInt64, value String) ENGINE=MergeTree ORDER BY id;
INSERT INTO test_database.test_table_3 VALUES (0, 'test_database.test_table_3');

BACKUP DATABASE test_database TO Disk('backups', 'test_database_backup');
```

现在我们已经有了 `test_database_backup` 备份，接下来创建 Backup 数据库：

```sql theme={null}
CREATE DATABASE test_database_backup ENGINE = Backup('test_database', Disk('backups', 'test_database_backup'));
```

现在我们可以查询该数据库中的任意表：

```sql theme={null}
SELECT id, value FROM test_database_backup.test_table_1;

┌─id─┬─value──────────────────────┐
│  0 │ test_database.test_table_1 │
└────┴────────────────────────────┘

SELECT id, value FROM test_database_backup.test_table_2;

┌─id─┬─value──────────────────────┐
│  0 │ test_database.test_table_2 │
└────┴────────────────────────────┘

SELECT id, value FROM test_database_backup.test_table_3;

┌─id─┬─value──────────────────────┐
│  0 │ test_database.test_table_3 │
└────┴────────────────────────────┘
```

也可以像使用任何普通数据库一样使用这个 Backup 数据库。例如，可以查询其中的表：

```sql theme={null}
SELECT database, name FROM system.tables WHERE database = 'test_database_backup':

┌─database─────────────┬─name─────────┐
│ test_database_backup │ test_table_1 │
│ test_database_backup │ test_table_2 │
│ test_database_backup │ test_table_3 │
└──────────────────────┴──────────────┘
```
