物理迁移检查项

最近更新时间:2024-07-11 17:06:12

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

连接 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 文件配置需要满足系统要求。

修复方法

用户可能不具备操作权限,请按照检查要求中的对应权限要求对用户进行授权,然后重新执行校验任务。
如果报错类似 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();重新加载配置即可。
注意:
当源和目标实例数据库账号存在权限和密码冲突时,系统默认使用源实例账号配置。
如果源实例为其他云厂商的 PostgreSQL 实例,请使用最高权限账号,方式迁移任务校验失败。

目标实例表存在性检查

检查详情

检查目标实例是否为空。
说明:
目标实例可以有用户新建的数据库账号,但是不能有创建好的 database 或者对象。

修复方法

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

目标实例空间检查

检查详情

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

修复方法

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

实例关键参数检查

检查详情

源实例 wal_level 必须为 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 。

修复方法

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

插件冲突检查

检查详情

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

修复方法

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

参数冲突检查

检查详情

原则上源和目标实例的参数值需要保持一致,当系统检测到源和目标端参数值不一致时,通常的处理方式是使用目标实例的参数值不提醒用户。不同处理方式的为如下几个参数:
参数名
迁移默认处理方式
校验动作
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
使用目标实例参数值
参数值不一致时提醒用户修改,如未修改,则采用迁移默认处理方式

修复方法

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

目标端实例状态检查

检查详情

目标实例不能开启 TDE 数据加密。
目标实例可以有只读组但不能有关联的只读实例。
目标实例当前不允许有用户连接。
注意:
进行物理迁移时,需要保证源实例不是加密实例。

修复方法

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

GLIBC版本兼容性检查

检查详情

检查源和目标实例 GLIBC 版本兼容问题。
说明:
GLIBC 2.28版本 UTF8 部分字符排序规则发生变化,版本不兼容时,数据排序规则不同,存在排序结果不符合预期的风险。

修复方法

升级 GLIBC 版本。