开发者

go 如何修改postgresql的配置参数

开发者 https://www.devze.com 2024-01-17 08:57 出处:网络 作者: liuyunshengsir
目录PostgreSQL.conf与postgresql.auto.conf的区别postgresql.conf与postgresql.auto.conf的区别 postgresql.auto.conf的优先级高于postgresql.conf,如果一个参数同时存在postgresql.auto.conf和postgresql.conf里面
目录
  • PostgreSQL.conf与postgresql.auto.conf的区别

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后,同样的参数,优先使用的pjavascriptostgresql.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=userjs password=password  dbname=postgres port=5432 sslmode=disable jsTimeZone=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(http://www.devze.com"Key '%s' does not exist in the section.\n", keyToCheck)
	}
}

到此这篇关于go 修改postgresql的配置参数的文章就介绍到这了,更多相关go postgresql的配置参数内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.cpBFpMkApcns.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消