|
最近在学习《postgres实战派》这本书,在搭建PG主从数据库复制时遇到一个报错如下。
我的实验环境如下:
主节点和备节点操作系统均为centos7,PG数据库版本均采用15版本。然后各个节点的/etc/hosts也做了主机名的配置。然后在从节点上做了基础备份,将主备的数据拉到备节点。192.168.200.108为主节点的IP地址,replicator为主库上面创建的流复制用户名。
[postgres@slave01 data]$ pg_basebackup -h 192.168.200.108 -p 5432 -U replicator --password -X stream -Fp --progress -D $PGDATA -R
Password:
2502536/2502536 kB (100%), 1/1 tablespace
[postgres@slave01 data]$ ls
autoprewarm.blocks log pg_multixact pg_stat_tmp pg_xact
backup_label pg_commit_ts pg_notify pg_subtrans postgresql.auto.conf
backup_manifest pg_dynshmem pg_replslot pg_tblspc postgresql.conf
base pg_hba.conf pg_serial pg_twophase standby.signal
current_logfiles pg_ident.conf pg_snapshots PG_VERSION
global pg_logical pg_stat pg_wal
在备节点上启动备库的数据库如下:
[postgres@slave01 data]$ cd ..
[postgres@slave01 pgsql]$ bin/pg_ctl -D data/ start
waiting for server to start....2025-05-19 09:50:42.909 CST [33622] FATAL: could not access file "file_fdw": No such file or directory
2025-05-19 09:50:42.909 CST [33622] LOG: database system is shut down
stopped waiting
pg_ctl: could not start server
Examine the log output.
从上面的报错信息看,说是无法访问file_fdw扩展。由于备库数据库数据目录的数据是从主库拉取的,是不是以前主库的数据库配置文件里面加载了file_fdw扩展?
登录主节点查看数据库的配置文件postgresql.conf,发现果然加载了file_fdw扩展。立即修改postgresql.conf,将预加载扩展选项内容设置为空,然后重启主数据库。重新在备库重新做基础备份,然后再启动备库,这次成功启动了备库。
总结:PG数据库的postgresql.conf文件非常重要,里面配置非常重要,有关于连接数量、日志归档、内存的使用、流复制、监听、查找优化、WAL日志等各个方面,里面的内容非常复杂。另外有相当一部分的参数修改了要生效,是要重启数据库的。在生产环境中,要重启数据库要有时间窗口的。在生产环境上线之初,大家最好就要将各项参数吃透,并且使设置的合理一些。有不少PG数据库的故障,可能要调整修改配置才能解决。
仔细学习配置文件的每一项参数的使用场景,了解各项参数名称和值,如何设置最佳配置,是我们学习PG数据库一项重要内容。
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com