安装依赖
代码语言:javascript复制yum install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel expect
创建用户和用户组
代码语言:javascript复制groupadd dbgrp
useradd -g dbgrp omm
passwd omm
使用 omm 用户登录服务器,解压 openGauss
代码语言:javascript复制mkdir /opt/software/openGauss /opt/huawei -p
cd /opt/software/openGauss/
tar xf openGauss-3.1.1-openEuler-64bit-all.tar.gz
tar xf openGauss-3.1.1-openEuler-64bit-om.tar.gz
chmod -R 775 /opt/software
chown -R omm.dbgrp /opt/huawei
chown -R omm.dbgrp /opt/software
配置
代码语言:javascript复制# 单节点配置文件
vim /opt/software/openGauss/script/gspylib/etc/conf/cluster_config_template.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="Cluster_template" /> # 数据库名称
<PARAM name="nodeNames" value="node01"/> # 数据库节点名称
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> # 数据库安装目录
<PARAM name="gaussdbLogPath" value="/var/log/omm" /> # 日志目录
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/> # 临时文件目录
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> # 数据库工具目录
<PARAM name="corePath" value="/opt/huawei/corefile"/> # 数据库 core 文件目录
<PARAM name="backIp1s" value="192.168.0.180"/> # 节点IP,与数据库节点名称列表一一对应
</CLUSTER>
# 每台服务器上的节点部署信息
<DEVICELIST>
<DEVICE sn="node01"> # 节点1上的部署信息
<PARAM name="name" value="node01"/> # 节点1的主机名称
<PARAM name="azName" value="AZ1"/> # 节点1所在的AZ及AZ优先级
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.0.180"/> # 节点1的IP,如果服务器只有一个网卡,把 backIp1 和 sshIp1 配置成同一个IP
<PARAM name="sshIp1" value="192.168.0.180"/>
<!-- dn -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
代码语言:javascript复制# 一主一备配置文件
vim /opt/software/openGauss/script/gspylib/etc/conf/cluster_config_template.xml
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<CLUSTER>
<PARAM name="clusterName" value="Cluster_template" /> # 数据库名称
<PARAM name="nodeNames" value="node01,node02"/> # 数据库节点名称
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> # 数据库安装目录
<PARAM name="gaussdbLogPath" value="/var/log/omm" /> # 日志目录
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/> # 临时文件目录
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> # 数据库工具目录
<PARAM name="corePath" value="/opt/huawei/corefile"/> # 数据库 core 文件目录
<PARAM name="backIp1s" value="192.168.0.180,192.168.0.190"/> # 节点IP,与数据库节点名称列表一一对应
</CLUSTER>
# 每台服务器上的节点部署信息
<DEVICELIST>
<DEVICE sn="node01"> # 节点1上的部署信息
<PARAM name="name" value="node01"/> # 节点1的主机名称
<PARAM name="azName" value="AZ1"/> # 节点1所在的AZ及AZ优先级
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.0.180"/> # 节点1的IP,如果服务器只有一个网卡,把 backIp1 和 sshIp1 配置成同一个IP
<PARAM name="sshIp1" value="192.168.0.180"/>
<!-- dn -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15400"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node02,/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
<DEVICE sn="node02"> # 节点2上的部署信息
<PARAM name="name" value="node02"/> # 节点2的主机名称
<PARAM name="azName" value="AZ1"/> # 节点2所在的AZ及AZ优先级
<PARAM name="azPriority" value="1"/>
<PARAM name="backIp1" value="192.168.0.190"/> # 节点2的IP,如果服务器只有一个网卡,把 backIp1 和 sshIp1 配置成同一个IP
<PARAM name="sshIp1" value="192.168.0.190"/>
</DEVICE>
</DEVICELIST>
</ROOT>
安装
代码语言:javascript复制# 预安装,需要使用 root 用户
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/gspylib/etc/conf/cluster_config_template.xml
# 安装
su - omm
cd /opt/software/openGauss/script
gs_install -X /opt/software/openGauss/gspylib/etc/conf/cluster_config_template.xml
# 修改配置
vim /opt/huawei/install/data/dn/pg_hba.conf
local all all trust
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
vim /opt/huawei/install/data/dn/postgresql.conf
listen_addresses = '*'
local_bind_address = '0.0.0.0'
password_encryption_type = 0
服务启停
代码语言:javascript复制# 停止服务
gs_om -t stop
# 启动服务
gs_om -t start
# 查看服务状态
gs_om -t status
# 查看 openGauss 各实例状态
gs_om -t status --detail
# 查询某主机上的实例状态
gs_om -t status -h node02
主备节点切换
代码语言:javascript复制# 当主备节点都正常时,以用户 omm 登录准备切换为主节点的备节点,执行如下命令:
gs_ctl switchover -D /opt/huawei/install/data/dn/
# 当主节点异常时,以用户 omm 登录准备切换为主节点的备节点,执行如下命令:
当主节点运行正常时,不要执行该切换命令,否则会导致两个节点都为主节点
gs_ctl failover -D /opt/huawei/install/data/dn/
# switchover 或 failover 切换成功后,执行如下命令保存数据库主备机器信息:
gs_om -t refreshconf
备份与还原
代码语言:javascript复制# 数据导出
su - omm
gs_dump -U omm -W xxxx -f /data/backup/all.sql - p 15400 postgres -F p
# 一次导出 openGauss 所有数据库
gs_dumpall -f /data/backup/all.sql -p 15400
数据库相关的命令
代码语言:javascript复制su - omm
gsql -d postgres -p 15400
# 列出所有可用的数据库
l
# 创建数据库用户,每次创建新用户时,系统会在当前登录的数据库中为新用户创建一个同名的 schema
create user 用户名 with password "密码";
# 删除数据库用户
drop user 用户名 cascade;
# 创建数据库,并指定所有者 owner
create database 数据库名 owner 用户名;
# 删除数据库
drop database 数据库名;
# 数据库重新命名
alter database 旧数据库名 rename to 新数据库名;
用户相关的命令
代码语言:javascript复制# 查看数据库用户列表
openGauss=# select * from pg_user;
# 查看用户属性
openGauss=# select * from pg_authid;
# 查看所有角色
openGauss=# select * from pg_roles;
# 切换用户
openGauss=# c - USERNAME
# 给用户授权对某数据库的所有权限
grant all privileges on database 数据库名 to 用户名;
# 为用户所加有创建角色的 CREATEROLE 权限
alter user 用户名 createrole;
# 把 sysadmin 权限授权给用户 cj
grant all privileges to cj;
# 查看当前用户
select * from current_user;
# 查看当前数据库编码
show server_encoding;
密码相关的命令
代码语言:javascript复制# 修改 omm 管理员密码
alter role omm identified by '新密码' replace '旧密码';