本页面介绍了从运行 9.6 之前 PostgreSQL 版本的源实例进行迁移时,如何启用复制延迟监控。如需了解完整的源数据库配置步骤,请参阅 配置源数据库。
对于运行 9.6 之前的 PostgreSQL 版本的源实例,复制延迟指标默认不可用。如果您想监控此类来源的复制延迟时间,可以使用以下方法。
创建安全定义器函数
对于运行 9.6 之前 PostgreSQL 版本的来源,建议您创建安全定义器函数,以允许 Database Migration Service 查询复制延迟,从而跟踪复制延迟。请按照以下步骤操作:
- 使用超级用户账号定义以下函数:
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 <USER>;
对于自管理实例:使用 SUPERUSER 权限
对于自行管理的实例,您可以直接向专用迁移 USER 授予 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 WHERE application_name LIKE 'cloudsql%';
后续步骤
如需查看完整的逐步迁移演示,请参阅 开始使用 Cloud SQL for PostgreSQL 迁移。
如需规划源实例和目标实例之间的网络连接,请参阅 网络概览。