Main Content

备份 Polyspace Access 数据库

要创建 Polyspace® Access™ 数据库的备份,请使用 pg_dumpall PostgreSQL® 实用工具。此实用工具可创建数据库的转储。这样,您就可以从转储创建时的时间点还原数据库的状态。pg_dumpall 实用工具可在 Polyspace Access 的 polyspace-access-db-0-main 容器中找到。

注意

如果运行的是 Polyspace Access 版本 R2021b 或更早版本,则 Docker 容器名称可能有所不同。要查看当前正在运行的容器的名称,请使用 docker ps --format '{{.Names}}' 命令。

您需要根据数据库的大小和使用频率来确定创建备份的频率。在执行数据库备份或还原时,用户无法与 Polyspace Access 交互。在开始备份或还原操作之前,请通知用户。

创建数据库备份

创建数据库备份时,pg_dumpall 实用工具会生成一系列在重建数据库时会用到的 SQL 命令。备份操作需要超级用户特权。这些特权是通过 PostgreSQL 设置的,并且与您的系统上的用户特权是分开的。例如,要生成数据库转储并将其保存为 backup_db.sql,请在托管 Polyspace Access Database 服务的计算机上打开一个终端,然后按以下步骤操作。此工作流假定所有 Polyspace Access 服务都运行正常。

  1. 为防止备份包含不完整或已损坏的数据,请在启动备份操作之前停止 Polyspace Access ETLPolyspace Access Web Server 服务。在终端中,输入以下命令:

    docker stop polyspace-access-etl-0-main polyspace-access-web-server-0-main

  2. 生成数据库备份并将其保存到 backup_db.sql

    docker exec polyspace-access-db-0-main pg_dumpall -U postgres > backup_db.sql
    docker exec 命令在 polyspace-access-db-0-main 容器内运行 pg_dumpall 实用工具。-U 用于指定超级用户 postgres。然后,将 pg_dumpall 的输出保存为 backup_db.sql

    您还可以压缩生成的备份文件。例如,要创建一个备份并使用 gzip 对其进行压缩,请输入以下命令:

    docker exec polyspace-access-db-0-main pg_dumpall -U postgres | gzip > backup_db.gz

    注意

    对大型数据库使用 pg_dumpall 时可能会生成超出某些操作系统最大文件大小限制的文件,并且可能会很耗时。

  3. 完成备份后,使用以下命令重新启动 Polyspace Access ETLPolyspace Access Web Server 服务。

    docker start polyspace-access-etl-0-main polyspace-access-web-server-0-main

从备份还原数据库

要从数据库备份恢复数据,请使用 psql 实用工具。此实用工具可在 polyspace-access-db-main 容器中找到。此操作可用于还原 Polyspace Access 工程的数据和用户权限。例如,您可以从存储在 backup_db.sql 文件中的备份还原数据库。某些步骤可在 Cluster Admin 界面中完成。其他步骤需要使用托管 Polyspace Access Database 服务的服务器上的终端。在 Linux® 上,您可能需要具有超级用户特权才能完成此操作。

  1. 停止 Polyspace Access ETLPolyspace Access Web Server 服务。在终端中,输入以下命令:

    docker stop polyspace-access-etl-0-main polyspace-access-web-server-0-main

  2. 删除存储 Polyspace Access 数据库的文件夹,然后重新启动 Polyspace Access Database 服务。

    sudo rm -rf databaseFolderPath docker restart polyspace-access-db-0-main
    databaseFolderPath 是您在 Polyspace Access Database 服务(位于 Admin Cluster Settings 中)的 Data volume 字段中指定的文件夹,例如:

    /local/Polyspace/R2020b/appdata/polyspace-access/db

    如果在 Data volume 字段中指定卷名称而非文件夹路径(例如,polyspace-data),则请使用以下命令停止数据库服务、删除卷、创建新卷,然后重新启动数据库服务:

    docker stop polyspace-access-db-0-main docker volume rm polyspace-data docker volume create polyspace-data docker restart polyspace-access-db-0-main

  3. backup_db.sql 还原数据库。在终端中,输入以下命令:

    docker exec -i polyspace-access-db-0-main psql -U postgres postgres <backup_db.sql
    如果您将备份存储在了一个压缩文件中,请解压缩该文件,然后通过使用管道符号将其内容传递给 docker exec 命令。例如,如果您使用 gzip,请使用以下命令从 backup_db.gz 文件还原数据库。
    gzip -cd backup_db.gz | docker exec -i polyspace-access-db-0-main psql -U postgres postgres

  4. Cluster Admin 界面中,点击 Restart Apps 以启动所有服务。

服务启动后,在 Web 浏览器中打开 Polyspace Access 界面,查看截至备份创建时数据库中存储的工程。

另外,您还可以依赖预写日志 (WAL) 文件来执行数据库的增量备份和恢复。WAL 会记录对数据库所做的所有更改。系统仅存储少量 WAL 文件并且会回收较旧的文件。

通过创建一个基础备份并存储所有后续 WAL 文件,您可以将 WAL 序列重播至基础备份创建时间与当前时间之间的任意时间点来恢复数据库。有关如何创建增量备份的示例,请参阅持续存档和时间点恢复 (PITR)

相关主题