通过公网连接GaussDB数据库实例

Posted Gauss松鼠会

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过公网连接GaussDB数据库实例相关的知识,希望对你有一定的参考价值。

文章目录

本实验概览图

1. 通过公网连接GaussDB

1.1 实验介绍

1.1.1 关于本实验

本实验主要描述如何用Data Studio通过公网连接GaussDB实例。

1.1.2 实验目的

掌握使用Data Studio通过公网来连接GaussDB数据库实例。

1.2 购买GaussDB数据库(可选)

说明:如果已经购买好了GaussDB数据库可以跳过此章节,直接进入2.3章节,如果没有购买请参考GaussDB 数据库实验环境搭建指导购买GaussDB数据库进行购买。

1.3 公网IP绑定

1.3.1 购买弹性公网IP

步骤 1选择弹性公网IP服务。
在服务列表中选择弹性公网IP。单击进入弹性公网IP控制台。

步骤 2购买弹性公网IP。
单击购买,进入购买界面。

步骤 3配置弹性公网IP。
配置弹性公网IP如下(区域选择需与数据库实例所在区域一致):

单击“立即购买”。
在确认购买界面,再次确认信息无误。单击提交。

步骤 4购买成功。
等待一会,弹性公网IP购买成功。

1.3.2 绑定GaussDB数据库

步骤 1从服务列表中选择”云数据库 GaussDB”,进入云数据库GaussDB控制台,具体如下:

在控制台选择GaussDB进入如下页面,单击实例名称,进入基本信息页面。

下拉到连接信息,单击“绑定”,弹出“绑定弹性公网IP”的窗口。

在此窗口上选择购买的弹性公网IP地址,然后单击”绑定”。

绑定成功,请记录下此弹性公网IP,后面连接会用上此IP。

步骤 2修改安全组(可选)。
默认安全组并未打开8000端口,需要人为开放8000端口。如果已开放则无需操作。
在数据库实例基本信息界面中的连接信息部分中,单击“内网安全组”后面对应的名称。

在弹出界面中,单击入方向规则,单击添加规则。

优先级输入1,TCP下方的空白框中输入8000,然后单击确定。

完成后可以看到规则中多了一条8000端口的规则。

步骤 3远程连接GaussDB。
可以通过Data Studio完成远程连接GaussDB的连接。
Data Studio是一个集成开发环境(IDE),帮助数据库开发人员便捷地构建应用程序,以图形化界面形式提供数据库关键特性。
数据库开发人员仅需掌握少量的编程知识,即可使用该工具进行数据库对象操作。Data Studio提供丰富多样的特性,例如:
创建和管理数据库对象
执行SQL语句/脚本
编辑和执行PL/SQL语句
图形化查看执行计划和开销
导出表数据等
创建和管理数据库对象包括:
数据库
模式
函数
过程
表
序列
索引
视图
表空间
同义词
Data Studio还提供SQL助手用于在“SQL终端”和“PL/SQLViewer”中执行各种查询/过程/函数。
下载工具包:获取参考地址:
https://opengauss.org/zh/download/
选择最新版本。将工具包使用文档下载到本地。

下载后的文件名为:DataStudio_win_64.zip
将下载的软件包(DataStudio_win_64.zip)解压到自己指定的位置,比如解压至D盘,具体如下:

注:Data Studio的安装需要电脑安装JDK,如果电脑没有安装JDK,请按照附件一的步骤安装和部署JDK。

定位并双击Data Studio.exe,启动Data Studio客户端,输入相关信息,连接数据库:
注:如果没有弹出窗口,可以在Data Studio工具界面上,单击“文件”下的“新建连接”。

名称:自定义
主机:绑定数据库服务器的弹性公网IP
端口:8000
数据库:postgres
用户名:准备连接环境步骤中创建的用户
密码:准备连接环境步骤中创建的用户密码
启用SSL:不启用
设置完成后,单击“确定”按钮进行连接,单击“继续”。

连接成功后界面如下:

步骤 4使用Data Studio客户端
Data Studio主界面包括:

  1. 主菜单:提供使用Data Studio的基本操作;
  2. 工具栏:提供常用操作入口;
  3. “SQL终端”页签:在该窗口,可以执行SQL语句和函数/过程;
  4. “PL/SQL Viewer”页签:显示函数/过程信息;
  5. 编辑区域用于进行编辑操作;
  6. “调用堆栈”窗格:显示执行栈;
    7.“断点“窗格:显示断点信息;
  7. “变量”窗格:显示变量及其变量值;
  8. “SQL助手”页签:显示“SQL终端”和“PL/SQL Viewer”页签中输入信息的建议或参考;
  9. “结果”页签:显示所执行的函数/过程或SQL语句的结果;
  10. “消息”页签:显示进程输出。显示标准输入、标准输出和标准错误;
  11. “对象浏览器”窗格:显示数据库连接的层级树形结构和用户有权访问的相关数据库对象;除公共模式外,所有默认创建的模式均分组在“系统模式”下,用户模式分组在相应数据库的“用户模式”下;
  12. “最小化窗口窗格”:用于打开“调用堆栈”和“变量”窗格。该窗格仅在“调用堆栈”、“变量”窗格中的一个或多个窗格最小化时显示。
  13. 搜索工具栏:用于在“对象浏览器”窗格中搜索对象。
    有些项不可见,除非触发特定功能。下图以openGauss界面为例说明:

2 附录一:安装和配置JDK

2.1 下载并安装JDK

步骤 1下载JDK。选择最新版本即可。
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

步骤 2双击jdk-8u261-windows-x64.exe进行安装。
默认设置即可,出现安装进度。

如下显示表示安装成功:

步骤 3查看安装目录。

2.2 配置JDK环境变量

步骤 1右击“此电脑”选择“属性”,单击“高级系统设置”。

步骤 2单击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录。



“C:\\Program Files\\Java\\jdk1.8.0_261”为JDK安装目录。
步骤 3编辑系统变量“path”。

在变量值最后输入 %JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)。
步骤 4新建系统变量“CLASSPATH”变量,输入“.”即可。

步骤 5系统变量配置完毕,查询检验是否配置成功,运行cmd 输入java -version(java和 -version之间有空格)。如下所示,显示版本信息,则说明安装和配置成功。

C:\\Users\\xxxxx>java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

通过公网连接GaussDB实验结束。

实例解读丨关于GaussDB ETCD服务异常

摘要:本文通过对ETCD服务异常问题分析,代码展示解决方案。

本文分享自华为云社区《【实例状态】GaussDB ETCD服务异常》,作者:酷哥。

首先确认是否是虚拟机、网络故障

虚拟机故障导致ETCD服务异常告警

问题现象

管控面上报etcd服务异常告警,虚拟机发生重启,热迁移、冷迁移,HA等动作。

问题分析及界定

在告警信息中找到实例ID、节点ID、虚拟机ID,在管控面查看虚拟机状态是否正常,能否正常登录,

如果虚拟机异常无法登录,联系IaaS技术支持修复虚拟机。

检查虚拟机是否发生过重启,热迁移、冷迁移、HA等动作,例如内存、网卡等问题引起热迁移。

处理步骤

联系IaaS技术支持修复虚拟机,确认虚拟机故障原因,例如内存、网卡等问题引起热迁移。

网络故障导致ETCD服务异常告警

问题现象

管控面上报etcd服务异常告警,虚拟机无法登录或ping通其他节点IP, 或者监控显示网络有异常。

问题分析及界定

在该节点上ping其他节点IP,测试是否ping通。

如果ping不通,执行步骤(1)(2),检查该节点网络、IP配置、防火墙配置等。

如果ping通,执行步骤(3)确认告警时间点网络是否断开。

(1)检查IP是否正常:

ifconfig查看etcd使用的IP是否存在,如果不存在,排查IP配置丢失原因,常见原因是虚拟机重启后IP没有重新配置,导致丢失。

(2)检查防火墙是否正常

在Ruby用户下查看etcd的IP和端口: ps ux | grep etcd

在root用户下iptables -L命令检查防火墙是否限制了IP和端口,如果有限制,去掉防火墙限制。

(3) 查看etcd日志

进入Ruby用户

cd $GAUSSLOG/cm/etcd

查看对应时间点的etcd_xxx.log日志,如果有如下日志,可能是etcd节点间网络断开, 或者对端的etcd进程down,导致本端etcd连接断开。

排查网络原因或对端的etcd进程是否重启,网络原因可能是网络断开,网卡故障,也有可能是虚拟机故障。

grpc: Server.processUnaryRPC failed to write status: connection error: desc = "transport is closing"

rafthttp: lost the TCP streaming connection with peer c797ab3a61e2ea55 (stream MsgApp v2 reader)

etcdserver: failed to reach the peerURL(https:// X.X.X.X:X) of member c797ab3a61e2ea55 (Get "https://X.X.X.X:X/version": dial tcp X.X.X.X:X: i/o timeout)

rafthttp: health check for peer c797ab3a61e2ea55 could not connect: dial tcp X.X.X.X:X: i/o timeout (prober "ROUND_TRIPPER_RAFT_MESSAGE")

处理步骤

处理步骤同上,已说明。

负载过重导致ETCD服务异常警告

问题现象

管控面上报etcd服务异常告警, 磁盘IO/CPU/内存 很高.

问题分析及界定

进入Ruby用户

cd $GAUSSLOG/cm/etcd

查看对应时间点的etcd_xxx.log日志,告警时间点有如下日志,说明etcd节点负载过重, 磁盘IO、CPU等压力大。

2021-04-09 10:57:40.112936 W | wal: sync duration of 2.00201804s, expected less than 1s ===通常这个表示磁盘IO压力大。

2021-04-09 10:57:40.112993 W | etcdserver: failed to send out heartbeat on time (exceeded the 1s timeout for 2.124414ms, to c8eccd97bed22939)

2021-04-09 10:57:40.112999 W | etcdserver: server is likely overloaded

2021-04-09 10:57:43.126444 W | etcdserver: read-only range request "key:\\"/Ruby/ignoreNodeNumKey\\" " with result "error:context canceled" took too long (1.999877971s) to execute

cd $GAUSSLOG/cm/cm_agent

搜索对应时间点的cm_agent-xxx.log, 如果有如下日志,表示当时磁盘io比较高, io util 100 表示磁盘io 达到100%

2021-04-09 11:06:24.047 tid=15822 LOG: device vdb1, tot_ticks 889640579, cputime 1798651342, io util 100

处理步骤

1、在管控面查看该节点当时磁盘IO、CPU、内存监控指标是否很高,

示例1:数据盘写延时在16:00左右升高,影响etcd状态。

示例2: etcd故障时刻,cpu、内存、磁盘写延时都有增长,尤其是磁盘写延时很明显,需要分析磁盘写延时升高的原因。

2、如果故障现场还在: iostat -mx 1 查看磁盘IO状态,top和free命令查看cpu、内存使用情况, 分析磁盘IO高、CPU高,内存高的原因。

3、root用户查看该节点的系统日志, cd /var/log, 查看该时间点message日志是否有异常记录。例如:节点内存耗尽了,分析占用内存的原因,是否内存泄漏等。

如果仍无法确认原因,联系华为工程师。

etcd进程故障导致ETCD服务异常告警

问题现象

etcd进程down、重启,管控面上报etcd服务异常告警

问题分析及界定

登陆故障etcd节点, 进入Ruby用户,执行命令ps ux | grep etcd, 查看etcd进程是否在运行。

如果进程在,查看etcd进程启动时间,告警时是否重启过,联系华为工程师确认重启原因。

如果进程不在,查看etcd无法启动原因:

(1)cd $GAUSSLOG/bin, 查看目录下是否有cluster_manual_start 和 etcd_manual_start 两个文件,

如果有表示集群被停止,确认停止集群的原因,之后启动集群,定位结束。

(2)cd $GAUSSHOME/bin 查看目录下是否存在etcd这个文件,文件权限是否正确,确认文件不存在或权限不正确的原因。

(3)检查etcd的数据目录所在磁盘是否满了或者故障,etcd目录如下:cm_ctl query -Cvipd查看

检查etcd的数据目录所在磁盘是否满了或者目录权限不正确(正确是700)或者故障,

如果磁盘满,检查占用磁盘的文件并清除或者转存到其他盘,如果是etcd本身的文件占满,联系华为工程师分析原因。

如果目录权限不正确,修改为正确的目录权限。如果是磁盘故障,联系IaaS技术支持分析定位。

处理步骤

参照上述处理,如果不是以上原因,请联系华为工程师

OM接口无法正确返回结果导致ETCD服务异常告警

问题现象

管控面上报etcd服务异常告警, 管控无法获取集群状态

问题分析及界定

查看管控面是否获取集群状态成功,是否获取空消息,联系华为工程师分析定位。

cd $GAUSSLOG/om/

查看gs_om-xxx.log,是否有如下异常日志

例如: The status file does not exist. Path: /usr/local/temp/local_status_1611355718.58.dat.

处理步骤

参照上面描述步骤。

点击关注,第一时间了解华为云新鲜技术~

以上是关于通过公网连接GaussDB数据库实例的主要内容,如果未能解决你的问题,请参考以下文章

华为GaussDB 100 体系架构是怎么样的?

GaussDB CN服务异常实例分析

oracle数据库可以用公网IP配置数据连接吗

GaussDB CN服务异常实例分析

急~~外网连接不上有公网IP的SQL2000数据库

python公网连接阿里云mongo服务器