麻烦问下,针对数据库分表,我这样写,对于postgre数据库是创建了几个订阅?flink一直报“max_wal_senders”配置不够//schema-name支持正则表达式" 'schema-name' = 'sdms_accrual_(ap|emea|la|na|default){1}',\n" +//table-name支持正则表达式" 'table-name' = 'biz_sdms_accrual_billing_init_(2021|2022|9999){1}_[1-4]{1}',\n" +" 'decoding.plugin.name' = 'pgoutput',\n" +" 'debezium.slot.name' = 'biz_sdms_accrual_billing_init_to_es_slot'" +
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您的描述,您正在使用正则表达式配置Flink作业以订阅PostgreSQL数据库中特定模式和表名的变更。配置示例如下:
'schema-name' = 'sdms_accrual_(ap|emea|la|na|default){1}',
'table-name' = 'biz_sdms_accrual_billing_init_(2021|2022|9999){1}_[1-4]{1}',
'decoding.plugin.name' = 'pgoutput',
'debezium.slot.name' = 'biz_sdms_accrual_billing_init_to_es_slot'
从这个配置来看,您并没有直接创建数据库订阅(在PostgreSQL中通常指的是REPLICATION
相关的设置,比如max_wal_senders
和logical_replication_workers
),而是通过Debezium这样的数据捕获工具来监听数据库的变化。具体到您的问题,“max_wal_senders”配置不够,这意味着PostgreSQL服务器端需要调整以允许更多并发的复制连接。
问题分析: - max_wal_senders
配置项 控制着可以同时连接到PostgreSQL实例并接收WAL(Write-Ahead Log)流的并发客户端数量。当您使用Debezium或其他逻辑复制工具时,每个订阅(或任务)都会占用一个WAL发送器槽位。 - 正则表达式配置 您的配置表明您试图匹配多个模式(如sdms_accrual_ap
, sdms_accrual_emea
等)下的多个表(如biz_sdms_accrual_billing_init_2021_1
至biz_sdms_accrual_billing_init_9999_4
)。这并不直接影响max_wal_senders
的数量需求,但确实指出了您希望监控的表范围广泛。
解决建议: 1. 增加max_wal_senders
配置:您需要登录到PostgreSQL数据库服务器,编辑postgresql.conf
文件,增加max_wal_senders
的值。例如,如果当前是10,而您预计需要支持更多的订阅,则可能需要将其设置为一个更大的数字,如50或更高,具体取决于您的实际需求。修改后,需要重启PostgreSQL服务使更改生效。
# 在postgresql.conf中
max_wal_senders = 50 # 或者根据需要设定的更大值
检查logical_decoding_work_mem
:对于大量并发解码操作,考虑适当增加logical_decoding_work_mem
配置,以避免解码过程中的内存不足问题。
监控与调优:在调整后,持续监控数据库的资源使用情况,确保这些更改没有对其他数据库操作产生负面影响,并根据实际情况进一步微调。
注意事项: - 资源评估:增加max_wal_senders
会消耗更多的系统资源,特别是内存和CPU。务必根据服务器的实际硬件能力进行合理配置。 - 并发度管理:理解您的应用程序确切需要多少并发复制连接,避免过度配置导致资源浪费。 - 备份与恢复策略:调整这类参数前,确保有完整的数据库备份,以防配置不当导致的服务中断。
综上所述,您遇到的问题并非直接由SQL查询引起,而是与数据库的复制和日志发送配置相关。通过调整PostgreSQL的相应配置项,即可解决“max_wal_senders”不足的问题。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。