华为云PG私有化版本适配NC Cloud部署配置指南

已邀请:

1、基础目录规划

私有化PG部署会自动将软件部署到 /var/lib/pgsql ,如计划采用独立数据盘安装数据库可选择如下方式:

方式一:挂载目录

#创建目录,并指定属主用户

useradd -d /var/lib/pgsql postgres

#将格式化好的磁盘挂载到目录

mount /var/lib/pgsql


方式二:软连接

#如已经进行了产品初始化,后来发现目录需要调整,可以如下操作

#停止数据库服务

su - postgres

pg_ctl -D ${postgresHOME}/data -l ${postgresHOME}/logfile stop

#将/var/lib/pgsql目录移动到数据盘,例如数据盘已挂载到/data

mv /var/lib/pgsql /data/

#创建软连接

ln -s /data/pgsql /var/lib/pgsql

#启动数据库

pg_ctl -D ${postgresHOME}/data -l ${postgresHOME}/logfile stop  


2、安装部署数据库

#上传安装包并解压赋权,例如软件包为postgres11.5-simple-console.tar.gz,上传到了/root,则执行如下

cd /root

tar -xvf postgres11.5-simple-console.tar.gz

/uploads/answer/20201208/1730d621d43c748c6aa62a3cc4523d3a.png

#进入解压后的文件夹路径

cd postgres11.5

/uploads/answer/20201208/6803f4bf4260242339c6d51cbc6a30e6.png

3、初始化实例

#进入脚本目录

cd script

# 创建单实例

sh create_instance.sh single


注意:如创建单实例,执行上述脚本即可。

数据库默认管理用户 rdsAdmin 密码均为 Huawei@yzh_max@163.com ,默认数据库为postgres,端口5432

 

数据库建库参考:http://nccloud.yytimes.com/q_34.html   (注意:此步可在下面数据库调整参数调整完毕后再操作,但必须在sysconfig配置数据源之前配置)







4、数据库配置调整

4.1 共享内存调整:调整文件/var/lib/pgsql/data/postgresql.conf,大约121行,如下

/uploads/answer/20201208/916a489e9f8d1596846f7f4d702815f3.png

默认 shared_buffers = 128MB ,调整128MB为当前数据库实例内存的25%(如数据库内存有富裕,可适当调大) 。调整后重启数据库方可生效。否则可能出现如下报错

/uploads/answer/20201208/14860b2f194787e28bfcb93500acece6.png

4.2连接数限制调整/var/lib/pgsql/data/postgresql.conf,大约64行,如下

/uploads/answer/20201208/a5108c4e12c7974cbf53973632262fd3.png

max_connections 适当调大,例如500-1000,至少大于sysconfig配置的数据库连接数限制


 4.3 连接限制调整:调整文件/var/lib/pgsql/data/pg_hba.conf,大约86行,如下

/uploads/answer/20201208/b9ff1bc673537e33acdb1229c738b7b2.png

增加一行 host all all 0.0.0.0/0 md5 

该行的意思是允许0.0.0.0/0(任意IP),通过密码连接数据库。

如基于实际项目部署,可调整为应用服务器的IP或IP段和允许连接数据库的客户端IP。

如不调整,默认本机可连数据库,其他IP包括局域网IP无法连接数据库。

该配置调整后,重启数据库方可生效。

  

5、升库前必须要配置的sysconfig参数、升库后,使用阶段,必须去掉重启

#在升库前必需修改sysconfig的数据库连接字段,增加参数配置如下图:

#增加参数为:?autosave=always

#另:升库完毕后,务必去掉该参数。并重启环境。

http://nccloud.yytimes.com/uploads/answer/20200928/3500cfc3f666cd3d2bbfec0476aff16d.png


单机版本配置及使用至此完成。

# 创建HA实例
## 创建主机(主机上执行)
sh create_instance.sh master 
## 创建备机(备机上执行)
sh create_instance.sh slave 
# 实例管理(pgadmin)
请在本地安装pgAdmin客户端数据库管理软件,下载、安装以及使用请参见《pgAdmin使用指南》
# HA管理(repmgr)
## 查询HA状态
su - postgres
repmgr -f repmgr.conf cluster show
psql -hnode1 -Urepmgr -drepmgr -c 'SELECT * FROM pg_stat_replication;'
## HA监控
主、备实例上已分别启动repmgrd守护进程,并配置了failover自动处理。
当主机状态异常时,备机会在一段时间内重连主机,如果没连接上主机,备机会自动升级为主机。
## 主备切换(在备机上执行)
#使用此功能需要配置免密访问。参考附录1
su - postgres
repmgr standby switchover -f /var/lib/pgsql/repmgr.conf
# 备份
请按如下格式执行备份脚本,脚本执行过程中会提示用户输入备份机器的密码。
输入参数说明:
username:指定备份机器的用户名
ip:指定备份机器的ip
path:指定存放备份文件的路径
sh full_backup.sh username ip path

如果使用自动定时备份功能,请先配置数据库实例机器到备份机器的免密访问。配置方法参考附录2。
然后执行如下脚本,执行完后就会每天在指定的时间点将数据库实例数据备份到目标机器上。
输入参数说明:
minute:定时备份的分钟
hour:定时备份的小时
username:指定备份机器的用户名
ip:指定备份机器的ip
path:指定存放备份文件的路径
sh backup_timing.sh minute hour username ip path
# 恢复
## 单实例恢复
请按如下格式执行恢复脚本,脚本执行过程中会提示用户输入备份机器的密码。
输入参数说明:
username:指定备份机器的用户名
ip:指定备份机器的ip
path:指定存放备份文件的路径
backup_filename: 指定用来做恢复的备份文件的名字
sh restore_master.sh username ip path backup_filename
## ha实例恢复
### 主机恢复(在原node1节点上执行)
同单实例恢复
### 备机恢复(在原node2节点上执行)
sh restore_slave.sh
------------------------
# 附录1
# --创建HA实例后,配置node1与node2之间免密访问的方法
## 登录node1节点上操作
passwd postgres
#输入密码(建议设为Huawei@123)
## 登录node2节点上操作
passwd postgres
#输入密码(建议设为Huawei@123)
## 登录node1节点上操作
su - postgres
ssh-keygen -t rsa -P ''
#一路回车
ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node2
#输入yes、输入密码
## 登录node2节点上操作
su - postgres
ssh-keygen -t rsa -P ''
#一路回车
ssh-copy-id -i ~/.ssh/id_rsa.pub postgres@node1
#输入yes、输入密码3

# 附录2
# --创建运行数据库服务机器到数据备份机器免密访问方法。
## 以root用户登录到数据库服务机器上操作
ssh-keygen -t rsa -P ''
#一路回车
ssh-copy-id -i ~/.ssh/id_rsa.pub 备份机用户名@备份机ip
#输入yes、输入密码
  

要回复问题请先登录注册