当前位置: 首页 > news >正文

openGauss手工配置主备

1、初始化

创建一个操作系统用户,例如postgres,为这个用户设置PATH和LD_LIBRARY_PATH环境变量,指向opengauss/bin和opengauss/lib

export GAUSSHOME=/mnt/disk01/opengauss

export PATH=$GAUSSHOME/bin:$PATH

export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH

注意,GAUSSHOME这个环境变量一定要设置,它指向openGauss软件的根目录。

下文的操作系统命令,都是以postgres操作系统用户执行的。

创建密码文件,例如,密码为Postgres@123,文件位置为/tmp/tmplk1xtqm1

echo Postgres@123> /tmp/tmplk1xtqm1

gs_ctl init -D _pg_root -o "--encoding=UTF8 --nodename=node1 --no-locale --username=postgres --pwfile=/tmp/tmplk1xtqm1"

-D _pg_root 是配置文件和数据库数据存放的目录,可以根据需要随意起名,不要放到opengauss目录下

--nodename 是节点名称,随便写

--username 初始超级用户名,也是随意,建议postgres

--pwfile 前一步创建的密码文件

初始化完成,启动数据库:

gs_ctl -D _pg_root start

启动后ps -ef|grep gaussdb可以看到一个进程,这就是openGauss数据库进程,注意,它只有一个进程:

登录:

gsql -U postgres -W Postgres@123 -d postgres -r

-U指定用户名

-W指定密码

-d指定数据库名

-r指定命令行中可以使用左右键

这个命令省略了主机IP和端口号,只能本机登录

-p指定端口号(默认5432)

-h指定IP

初始化也创建了名为postgres的默认初始数据库,各配置参数在_pg_root目录下的postgresql.conf中,上面的步骤使用默认参数,如果想修改监听端口、日志文件存储的位置等,需要修改postgresql.conf然后重启数据库。

2、配主备

如果初始化启动没有问题,则准备配置主备。

将opengauss目录复制到另一台机器上(备库),与主库路径可以不同,但建议最好相同,备库同样创建操作系统用户postgres,设置环境变量GAUSSHOME、PATH和LD_LIBRARY_PATH,但是不初始化。

在主库上,先停掉openGauss:

gs_ctl -D _pg_root stop

修改配置文件postgresql.conf:

port=5432

listen_addresses = '*'

修改replconninfo1参数:

对于一主一备(假设主库地址172.32.155.57,备库地址172.32.155.58),需要设置参数replconninfo1,其中localhost是自己的IP地址,localport、localheartbeatport、localservice是用来监听备库的端口,remotehost是备库的IP地址,remoteport、remoteheartbeatport、remoteservice是监听端口,这个信息是对称的,即格式上主备相同。注意port参数,localport要比port大1,其它端口没有限制,不要与已有服务器冲突。

replconninfo1 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

然后修改主库的_pg_root/pg_hba.conf,增加一行:(这是允许所有用户的远程连接,除了postgres)

host all all 0.0.0.0/0 sha256

然后作为主库启动:

gs_ctl -D _pg_root -M primary start

然后配置备库,注意,备库不需要初始化,也千万不能初始化,它的数据目录要用gs_basebackup从第一台机器拉取过来,在备库以操作系统用户postgres执行:

mkdir _pg_root

chmod 0700 _pg_root

gs_basebackup --pgdata=_pg_root -X stream --username=postgres --host=172.32.155.57 --port=5432

此时 _pg_root目录的内容与主库 _pg_root的内容完全一样,需要修改postgresql.conf里的replconninfo1:

replconninfo1 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

然后作为备库启动:

gs_ctl -D _pg_root -M standby start

查询主备状态,在备库或主库机器上执行:

gs_ctl -D _pg_root query

还可以配置一主两备,在第三个机器上创建postgres用户,复制opengauss目录,配置环境变量,执行gs_basebackup,这与前面配置备库的过程大致相同,不同点是replconninfoXX参数,一主两备的架构需要每个库配置replconninfo1和replconninfo2两个参数。

例如,主库的IP为172.32.155.57,两个备库的IP为172.32.155.58和172.32.155.59,则三台机器postgresql.conf中的replconninfo1和replconninfo2设置分别为:

172.32.155.57:

replconninfo1 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.59 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

172.32.155.58:

replconninfo1 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.59 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

172.32.155.59:

replconninfo1 = 'localhost=172.32.155.59 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.59 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

3、主备切换

在需要设置为主库的机器上执行:

gs_ctl switchover -D _pg_root

如果成功,备库会变为主库,主库会变为备库

查看状态主备状态:

gs_ctl -D _pg_root query

4、备升主

当主库故障时,人为将备库切换为主库称为failover,与swithover的区别是,不会交换主备。在需要升为主库的机器上执行:

gs_ctl failover -D _pg_root

failover之后是单机的可读写的库。

5、故障库重新加入

在需要重新加入的机器上,执行:

gs_ctl build -D _pg_root -b auto

它会同步主库的数据目录_pg_root并且作为备机启动。

有个前提,就是故障库上,原来的_pg_root还在,只是数据陈旧了,如果_pg_root不在了,或是同步失败,就需要删除_pg_root,按照前面gs_basebackup的过程走一遍了,即执行gs_basebackup后修改postgresql.conf里的replconninfo1、replconninfo2,再作为standby启动。

6、参数修改

配置参数在postgresql.conf,访问控制配置在pg_hba.conf,可以先在主库修改,然后在备库上执行:

gs_ctl build -D _pg_root -b auto

这个操作会同步postgresql.conf和pg_hba.conf中的配置(replconninfo1、replconninfo2不会同步)。

否则需要同时手动修改主备库的postgresql.conf和pg_hba.conf

postgresql.conf中的参数分为sighup类型和postmaster类型,sighup类型参数不需要重启数据库实例就可以生效,postmaster类型需要重启数据库实例才能生效。

可以用命令 gs_guc修改postgresql.conf 文件,例如,设置参数 audit_enabled:

gs_guc -D _pg_root/ set -c audit_enabled=on

查看参数 audit_enabled:

gs_guc check -D _pg_root/ -c audit_enabled

gs_guc -D _pg_root/ set 只是修改了postgresql.conf,正在运行的openGauss中并没有生效,对于sighup类型的参数,可以用gs_guc reload 修改并加载:

gs_guc reload -D _pg_root/ -c audit_enabled=on

但是对于postmaster类型的参数,gs_guc reload也不能使之生效,只能重启openGauss。

http://www.xdnf.cn/news/144937.html

相关文章:

  • Java大师成长计划之第3天:Java中的异常处理机制
  • 神经网络基础[损失函数,bp算法,梯度下降算法 ]
  • Linux 内核网络协议栈中 inet_stream_ops 与 tcp_prot 的深度解析
  • 搜索一个冷门搜索不到可以搜索专栏
  • 回归测试:保障软件质量的重要防线
  • A Comprehensive Survey of Spoken Language Models
  • 《AI大模型趣味实战》构建基于Flask和Ollama的AI助手聊天网站:分布式架构与ngrok内网穿透实现
  • 什么是测试驱动开发(TDD)?
  • C# 综合示例 库存管理系统7 主界面(FormMain)
  • 38 python random
  • 唯创安全:从传统到智能,工厂智能叉车AI防撞系统解决方案
  • 什么是非关系型数据库
  • 如何避免IDEA每次打开新项目都重复配置Maven?
  • 【交互式数据仪表板】Plotly Dash完全指南:从零搭建到部署全流程 | Python数据可视化必备
  • CSS Position 属性完全指南
  • 02.05、链表求和
  • 10前端项目----商品详情页/滚轮行为
  • 第七章.干货干货!!!Langchain4j开发智能体-文生图文生视频
  • QT窗口相关控件及其属性
  • 大模型——快速部署和使用 Deep Research Web UI
  • linux安装单节点Elasticsearch(es),安装可视化工具kibana
  • 如何创建极狐GitLab 私密议题?
  • 【MySQL】(8) 联合查询
  • 常见网络安全攻击类型深度剖析(二):SQL注入攻击——原理、漏洞利用演示与代码加固方法
  • MySQL 存储过程:解锁数据库编程的高效密码
  • 抓包工具Wireshark的应用解析
  • 期货有哪些种类?什么是股指、利率和外汇期货?
  • 日本企业突破机器人感知技术:人形机器人获嗅觉能力
  • 华硕NUC产品闪耀第31届中国国际广播电视信息网络展览会
  • websheet 之 HTML使用入门