小型数据库迁移

对于可以容忍一点停机时间的较小环境,请使用简单的 pg_dump/pg_restore 进程。以下是步骤。

  1. 从您的开发数据库中保存数据库结构:

    pg_dump \
       --format=plain \
       --no-owner \
       --schema-only \
       --file=schema.sql \
       --schema=target_schema \
       postgres://user:pass@host:5432/db
    
  2. 使用 psql 连接到 Citus 集群并创建 schema:

    \i schema.sql
    
  3. 运行您的 create_distributed_tablecreate_reference_table 语句。如果您收到有关外键的错误,通常是由于操作顺序所致。在分发表之前删除外键,然后重新添加它们。

  4. 将应用程序置于维护模式,并禁用对旧数据库的任何其他写入。

  5. 使用 pg_dump 将原始生产数据库中的数据保存到磁盘:

    pg_dump \
       --format=custom \
       --no-owner \
       --data-only \
       --file=data.dump \
       --schema=target_schema \
       postgres://user:pass@host:5432/db
    
  6. 使用 pg_restore 导入 Citus:

    # remember to use connection details for Citus,
    # not the source database
    pg_restore  \
       --host=host \
       --dbname=dbname \
       --username=username \
       data.dump
    
    # it'll prompt you for the connection password
    
  7. 测试应用。

  8. 运行。