go 如何修改postgresql的配置参数
postgresql.conf与postgresql.auto.conf的区别
postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面,系统会先读postgresql.auto.conf的参数配置。
- 使用alter system set修改的是postgresql.auto.conf文件的内容,postgresql.conf则是通过文本编辑方式修改。比如执行alter system set max_wal_size=default将参数设回 default 时,postgresql.auto.conf文件里的max_wal_size这项配置会被删除,重新用回postgresql.conf文件的设置。
- postgresql.conf文件的参数后面有# (change requires restart),表示必须重启才能生效,使用select pg_reload_conf()或pg_ctl reload不行。
使用alter system set修改的是postgresql.auto.conf文件的内容,postgresql.conf则是通过文本编辑方式修改。比如执行alter system set max_wal_size=default将参数设回 default 时,postgresql.auto.conf文件里的max_wal_size这项配置会被删除,重新用回postgresql.conf文件的设置。
postgresql.conf文件的参数后面有# (change requires restart),表示必须重启才能生效,使用select pg_reload_conf()或pg_ctl reload不行。
执行alter system set max_wal_size=2500;
发现修改的是postgresql.auto.conf文件
执行select pg_reload_conf();同样的参数,优先加载的是postgresql.auto.conf文件里面的参数配置
重启postgresql后,同样的参数,优先使用的postgresql.auto.conf文件里面的参数配置
手工修改postgresql.auto.conf文件,执行select pg_reload_conf()会加载postgresql.auto.conf文件
手工修改postgresql.auto.conf文件,重启postgresql会加载postgresql.auto.conf文件
go的代码样例
func main() { // 连接到 PostgreSQL 数据库 dsn := "host=localhost user=user password=password dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai" db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal(err) } defer func() { sqlDB, err := db.DB() if err != nil { log.Fatal(err) } sqlDB.Close() }() cmd := "ALTER SYSTEM SET array_nulls= 'off' " _, err = db.Raw(cmd).Rows() if err != nil { return } cmdReload := "SELECT pg_reload_conf()" _, err = db.Raw(cmdReload).Rows() if err != nil { fmt.Printf("执行sql[%s]失败:%v", cmdReload, err) return } cfg, err := ini.LoadSources(ini.LoadOptions{AllowShadows: true}, "/var/lib/pgsql/12/data/postgresql.auto.conf") // 获取指定的 Section section, err := cfg.GetSection("DEFAULT") if err != nil { log.Fatal(err) } keyToCheck := "array_nulls" // 检查 key 是否存在 if section.HasKey(keyToCheck) { fmt.Printf("Key '%s' exists in the section.\n", keyToCheck) } else { fmt.Printf("Key '%s' does not exist in the section.\n", keyToCheck) } }
到此这篇关于go 修改postgresql的配置参数的文章就介绍到这了,更多相关go postgresql的配置参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
一文带你玩转Golang Prometheus Eexporter开发
本文分两大块,一是搞清楚prometheus四种类型的指标Counter,Gauge,Histogram,Summary用golang语言如何构造这4种类型对应的指标,二是搞清楚修改指标值的场景和方式,感兴趣的可以了解一下2023-02-02
最新评论