通过一次性转储和恢复整个数据库来迁移较小的数据库。此方法最适用于小于 100 GB 的数据库。对于较大的数据库,请考虑分别迁移您的架构和数据

警告

根据您的数据库大小和网络速度,迁移可能需要很长时间。在此期间,您可以继续从源数据库读取数据,但性能可能会较慢。为了避免这个问题,请 fork 您的数据库并从 fork 迁移您的数据。如果您在迁移期间写入源数据库中的表,则新的写入可能不会传输到 Timescale。为了避免这个问题,请参阅实时迁移

在开始之前,请检查您是否拥有

  • 安装了 PostgreSQL pg_dumppg_restore 实用程序。
  • 安装了用于连接到 PostgreSQL 的客户端。这些说明使用 psql,但任何客户端都可以。
  • 在 Timescale 中创建了一个新的空数据库。有关更多信息,请参阅安装 Timescale 部分。为您的数据库预留足够的空间来容纳所有数据。
  • 检查您使用的任何其他 PostgreSQL 扩展是否与 Timescale 兼容。有关更多信息,请参阅兼容扩展列表。安装您的其他 PostgreSQL 扩展。
  • 检查您是否在目标数据库和源数据库上运行相同的主要 PostgreSQL 版本。有关升级源数据库上的 PostgreSQL 的信息,请参阅自托管 TimescaleDB 的升级说明
  • 检查您是否在目标数据库和源数据库上运行相同的主要 Timescale 版本。有关更多信息,请参阅升级 Timescale 部分
注意

为了加快迁移速度,请压缩您的数据。您可以压缩当前未插入、更新或删除数据的任何块。当您完成迁移后,您可以根据需要解压缩块以进行正常操作。有关压缩和解压缩的更多信息,请参阅压缩

  1. 使用您的源数据库连接详细信息,将源数据库中的所有数据转储到一个 dump.bak 文件中。如果系统提示您输入密码,请使用您的源数据库凭据

    pg_dump -U <SOURCE_DB_USERNAME> -W \
    -h <SOURCE_DB_HOST> -p <SOURCE_DB_PORT> -Fc -v \
    -f dump.bak <SOURCE_DB_NAME>
  2. 使用您的 Timescale 连接详细信息连接到您的 Timescale 数据库。当系统提示您输入密码时,请使用您的 Timescale 凭据

    psql “postgres://tsdbadmin:<PASSWORD>@<HOST>:<PORT>/tsdb?sslmode=require”
  3. 通过使用 timescaledb_pre_restore 停止后台工作进程,为数据恢复准备您的 Timescale 数据库

    SELECT timescaledb_pre_restore();
  4. 在命令提示符下,使用您的 Timescale 连接详细信息,将转储的数据从 dump.bak 文件恢复到您的 Timescale 数据库中。为了避免权限错误,请包含 --no-owner 标志

    pg_restore -U tsdbadmin -W \
    -h <CLOUD_HOST> -p <CLOUD_PORT> --no-owner \
    -Fc -v -d tsdb dump.bak
  5. psql 提示符下,通过使用 timescaledb_post_restore 命令,使您的 Timescale 数据库恢复正常运行

    SELECT timescaledb_post_restore();
  6. 通过在您的整个数据集上运行 ANALYZE 来更新您的表统计信息

    ANALYZE;

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面