本页面介绍了从运行 9.6 之前 PostgreSQL 版本的源实例迁移到 AlloyDB for PostgreSQL 时,如何启用复制延迟监控。如需查看完整的源数据库配置说明,请参阅 配置源数据库。
对于运行 9.6 之前 PostgreSQL 版本的源实例,复制延迟指标默认不可用,因为非超级用户无法访问 pg_stat_replication 视图中的复制统计信息。如果您想监控此类来源的复制延迟,可以使用以下方法。
创建安全定义器函数
对于运行 9.6 之前 PostgreSQL 版本的来源,建议通过创建安全定义器函数来跟踪复制延迟,以便 Database Migration Service 查询复制延迟统计信息。请按照以下步骤操作:
- 使用超级用户账号连接到源数据库,并定义
pg_stat_replication_user()函数:CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer, usesysid oid, username name, application_name text, client_addr inet, client_hostname text, client_port integer, backend_start timestamp with time zone, backend_xmin xid, state text, sent_location pg_lsn, write_location pg_lsn, flush_location pg_lsn, replay_location pg_lsn, sync_priority integer, sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
- 撤消函数的公开执行权限,并仅向专用迁移用户账号授予执行权限:
REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public; GRANT EXECUTE ON FUNCTION pg_stat_replication_user() TO "MIGRATION_USER_ACCOUNT_NAME";
对于自托管实例:使用 SUPERUSER 权限
对于自托管 PostgreSQL 实例,您可以直接向专用迁移用户账号授予 SUPERUSER 权限:
ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH SUPERUSER;
手动监控复制延迟
您还可以使用以下查询在源实例上手动监控复制延迟时间:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication;
后续步骤
如需查看完整的迁移分步演示,请参阅 开始使用 AlloyDB for PostgreSQL 迁移。
如需规划源实例和目标实例之间的网络连接,请参阅 网络注意事项。