云数据库 PostgreSQL 物理迁移检查项

这篇列出云数据库PostgreSQL物理迁移发起任务前的多项检查项,包括连接DB、版本、权限、空间、参数及插件冲突等,并给出修复方法,确保迁移成功。 版本检查:源和目标实例大版本需一致,且目标内核版本不低于指定值。 源实例权限检查:迁移账号需有LOGIN和REPLICATION权限,并正确配置pg_hba.conf。 参数冲突检查:多数参数不一致时默认使用目标实例值,部分参数需用户确认修改。

相关产品
云数据库 PostgreSQL 产品页,含版本规格、价格与购买入口。

云数据库 PostgreSQL 物理迁移发起任务前检查项具体如下:

一、连接 DB 检查

具体检查详情、原因及修复方法请参考 连接 DB 检查。

二、版本检查

源实例和目标实例的大版本需要保持一致,且目标实例的内核版本不能低于以下版本。

大版本 内核版本
10 v10.17_r1.5
11 v11.12_r1.5
12 v12.7_r1.5
13 v13.3_r1.4
14 v14.2_r1.11
15 v15.1_r1.4
16 v16.0_r1.2

四、检查详情

源实例迁移账号需要拥有 LOGIN、REPLICATION 权限。

源实例 pg_hba.conf 文件配置需要满足系统要求。

五、修复方法

请按照检查要求中的对应权限要求对用户进行授权,然后重新执行校验任务。

给账号 XXXX 增加 LOGIN 权限语句为 alter user XXXX login;给账号增加 REPLICATION 权限的语句为 alter user XXXX replication;

另外,如果迁移任务报错类似如下 connect source with replication failed: pq: no pg_hba.conf entry for replication connection from host "xx.xx.xxx.xx", user "xxx",说明源实例 pg_hba.conf 文件配置不满足迁移要求,可以在源实例 pg_hba.conf 文件中增加host replication all 0.0.0.0/0 md5配置后重启实例或者执行select pg_reload_conf();重新加载配置即可。

七、检查详情

检查目标实例是否为空。

注意:说明:

注意:目标实例可以有用户新建的数据库账号,但是不能有创建好的 database 或者对象。

八、修复方法

需要删除目标实例上已经存在的 database 或者对象。

十、检查详情

源实例 uid = 10 的用户名下有数据库对象会告警。

十一、修复方法

将 uid = 10 的用户名下的数据库对象更改 owner 为其他客户。

十三、检查详情

目标实例磁盘空间需要大于源端实例的磁盘占用空间大小的110%,否则会报错。

十四、修复方法

对目标端进行磁盘空间扩容,具体请参考 调整实例配置。

十六、检查详情

·源实例 wal_level 必须改为 replica 或者 logical。

·源和目标实例的 block_size 必须相同。

·PostgreSQL13以下版本实例,源实例 wal_keep_segments 必须大于或等于256。

·PostgreSQL13及以上版本,源实例 wal_keep_size/wal_segment_size 的值必须大于或等于256。

·源和目标实例的 wal_block_size 必须相同。

·源和目标实例的 segment_size 必须相同。

·目标实例的 max_connections 必须大于或等于源实例的 max_connections 。

·目标实例的 max_wal_senders 必须大于或等于源端的 max_wal_senders 。

·目标实例的 max_worker_processes 必须大于或等于源端的 max_worker_processes 。

十七、修复方法

需要按照检查详情中的要求来对应修改源或者目标实例的参数。

十九、检查详情

检查源实例安装的插件是否在目标实例支持的插件列表,如果不在,则系统报错。同时,如果源实例插件版本跟目标实例插件版本不一致,则系统发布警告。

20、修复方法

通过安装插件或者升级插件版本来保证源和目标实例的插件保持一致。

22、检查详情

原则上源和目标实例参数值需要保持一致,当系统检测到源和目标端参数值不一致时,通常的处理方式是使用目标实例的参数值并不提醒用户。不同处理方式的为如下几个参数:

参数名 迁移默认处理方式 校验动作
data_checksums 使用源实例参数值 参数值不一致时不提醒
enable_partitionwise_aggregate 使用源实例参数值 参数值不一致时不提醒
enable_partitionwise_join 使用源实例参数值 参数值不一致时不提醒
lc_ctype 使用源实例参数值 参数值不一致时不提醒
max_locks_per_transaction 使用源实例参数值 参数值不一致时不提醒
max_prepared_transactions 使用源实例参数值 参数值不一致时不提醒
random_page_cost 使用源实例参数值 参数值不一致时不提醒
max_connections 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_wal_senders 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_worker_processes 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
array_nulls 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
authentication_timeout 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_analyze_scale_factor 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_analyze_threshold 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_freeze_max_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_multixact_freeze_max_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_naptime 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_cost_delay 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_cost_limit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_insert_scale_factor 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_insert_threshold 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_scale_factor 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
autovacuum_vacuum_threshold 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
bytea_output 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
check_function_bodies 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
constraint_exclusion 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
cursor_tuple_fraction 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
DateStyle 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
deadlock_timeout 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
default_statistics_target 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
default_transaction_isolation 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
exit_on_error 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
extra_float_digits 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
from_collapse_limit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_effort 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_generations 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_pool_size 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_seed 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_selection_bias 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
geqo_threshold 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
idle_in_transaction_session_timeout 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
idle_session_timeout 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
IntervalStyle 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
jit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
jit_above_cost 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
jit_inline_above_cost 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
jit_optimize_above_cost 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
join_collapse_limit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
lc_monetary 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
lc_numeric 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
lc_time 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
local_preload_libraries 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
log_filename 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_logical_replication_workers 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_parallel_workers 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_replication_slots 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_standby_archive_delay 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
max_standby_streaming_delay 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
recursive_worktable_factor 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
search_path 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
statement_timeout 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
stats_fetch_consistency 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
TimeZone 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_cost_delay 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_cost_limit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_cost_page_dirty 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_cost_page_hit 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_cost_page_miss 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_freeze_min_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_freeze_table_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_multixact_freeze_min_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
vacuum_multixact_freeze_table_age 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式
wal_level 使用目标实例参数值 参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式

23、修复方法

请按照实际需要修改参数值。

25、检查详情

·目标实例不能开启 TDE 数据加密。

·目标实例可以有只读组但不能有关联的只读实例。

·目标实例当前不允许有用户连接。

注意:进行物理迁移时,需要保证源实例不是加密实例。

26、修复方法

暂不支持 TDE 实例和只读实例。

28、检查详情

检查源和目标实例 GLIBC 版本兼容问题。

注意:说明:

注意:GLIBC 2.28版本 UTF8 部分字符排序规则发生变化,版本不兼容时,数据排序规则不同,存在排序结果不符合预期的风险。

29、修复方法

升级 GLIBC 版本。

赞 (0)
上一篇 4天前
下一篇 4天前