openEuler系统通过shell脚本安装openGauss 5.0.0企业版

上次提到的开机自启动的配置,获得了LD的称赞,然而LD的要求,都是“既得陇复望蜀”的,他又期望我们能实现openGauss安装的“自动化”,于是尝试了下用shell脚本部署,附件中的脚本实测有效,openEuler 20.03 LTS通过shell脚本建议操作部署openGauss 5.0.0企业版成功。

说明:除了安装openGauss的shell脚本外,还需要准备两个配置文件,一个是openGauss集群的配置文件:cluster_config.xml;另外一个是openeuler的repo文件,yum源需要用到。这两个并非安装脚本内容,因此不多做介绍。安装过程和手工安装基本类似,因此下面简单描述下脚本执行的过程,供参考和指正!

1. 执行前首先创建好安装包存放的路径,下载好安装包,并且把安装的shell脚本,以及cluster_config文件,以及openeuler的repo文件,都copy到系统中的某个文件夹下,如:/opt/software/opengaussshellinstall。当然也可以通过wget下载安装包,朋友们感兴趣可以自己调整脚本。

 其中的...zhaofeng.tar文件为安装成功后需要restore的备份数据。

2. 注意安装脚本copy后可能会没有执行权限,需要执行chmod +x shell test.sh(脚本文件名),修改权限。

3. 脚本通过变量读取安装包所在的位置,因此执行命令时需要附上安装包所在的路径:

./bin/shell test.sh /opt/software/opengaussshellinstall

4. 脚本大致分为下面几部分:

4.1 检查并修改python版本;

4.2 安装三方依赖件expect, libaio等,包括脚本中用到的tar以及net-tools;

4.3 修改performance.conf文件(本步可选);

4.4 修改profile文件,增加openGauss相关的环境变量;

4.5 创建openGauss安装路径,copy安装包,cluster配置文件等到openGauss安装路径,默认为/opt/software/opengauss,可根据需要修改脚本,也可以做成变量,感兴趣可以自行调整;

4.6 修改cluster文件,替换本机ip地址及hostname,替换app, log等路径;

4.7 解压安装包;

4.8 preinstall

4.9 install

4.10 修改postgresql.conf和pg_hba.conf文件,使数据库可以被远程连接;

4.11 创建数据库,创建用户,restore之前备份的数据。

4.12 重启数据库。

如此则整个过程完成。

4.5 创建openGauss安装路径,copy安装包、cluster配置文件等到openGauss安装路径,默认为/opt/software/opengauss,可根据需要修改脚本,也可以做成变量,感兴趣可以自行调整;

4.6 修改clusterconfig.xml文件,替换本机ip地址及hostname,替换app, log等路径;

4.7 解压安装包,脚本中解压安装包和修改xml文件放在一个方法中了,注意解压完后需要对路径重置权限。

4.8 preinstall,预安装需要输入omm用户的密码;

4.9 install,安装需要输入数据库的密码;

4.10 修改postgresql.conf和pg_hba.conf文件,使数据库可以被远程连接,此处为了简单起见,添加0.0.0.0/0以及‘*’;

4.11 创建数据库,创建用户,restore之前备份的数据。

4.12 重启数据库。

如此则整个过程完成。

以下为附件内容:

  • cluster_config.txt

<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"/><PARAM name="backIp1s" value="opengausshostip"/></CLUSTER><DEVICELIST><DEVICE sn="opengausshostname"><PARAM name="name" value="opengausshostname"/><PARAM name="azName" value="AZ1"/><PARAM name="azPriority" value="1"/><PARAM name="backIp1" value="opengausshostip"/><PARAM name="sshIp1" value="opengausshostip"/><!-- dn --><PARAM name="dataNum" value="1"/><PARAM name="dataPortBase" value="26100"/><PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/><PARAM name="dataNode1_syncNum" value="0"/></DEVICE></DEVICELIST>
</ROOT>

  • openGauss.sh

#!/bin/bashgauss_home=$1echo "------$gauss_home -----------"
if [ ! -d $gauss_home ]; thenecho -e "\033[31m   请输入安装路径     \033[0m"exit
fipython_version=`python -V 2>&1|awk '{print $2}'|awk -F '.' '{print $1}'`function PythonVersionChange() {echo " ======= python version : ${python_version} ======== "if [ $python_version -eq 2 ]; thenecho -e "\e[32m ======== change python version  ======== \e[0m"cd /usr/binmv python python.bakln -s python3 /usr/bin/pythonnow_pyhton_version=`python -V 2>&1|awk '{print $2}'|awk -F '.' '{print $1}'`echo -e "\e[32m ======== now python version $now_pyhton_version ======== \e[0m"fi
}echo -e "\e[37m ======== install  3rd software(s)  ======== \e[0m"
echo "-------copy yum repo-------"
cp /opt/software/openEulerOS.repo /etc/yum.repos.d/
echo "-------install nettools & tar -------"
yum -y install tar
yum -y install net-tools
echo "-------install nettools & tar completed-------"
echo "-------install 3rd software(s)-------"
yum install libaio* -y
yum install -y bzip2 bzip2-devel curl libaio libaio-devel readline-devel
yum -y install expectecho -e "\e[37m ======== install 3rd software(s) completed ======== \e[0m"function PerformanceChange() {echo -e "\e[37m ======== sed performance  ======== \e[0m"sed -i "s/sysctl -w vm\.min_free_kbytes=112640/#sysctl -w vm\.min_free_kbytes=112640/" /etc/profile.d/performance.shecho -e "\e[37m ======== sed performance completed  ======== \e[0m"
}function ProfileChange() {echo "-------ProfileChange-------"echo "export packagePath=/opt/software/openGauss" >> /etc/profileecho 'export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$dddd' >> /etc/profileecho "-------ProfileChange completed-------"
}ip_add=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
arrar=(`echo $ip_add | tr '\n' ' '`)
ip=${arrar[0]}echo " ip is : $ip "if [ ! -d /opt/software/openGauss ]; thenmkdir -p /opt/software/openGausschmod 755 -R /opt/software/openGausscp /opt/software/openGauss-5.0.0-openEuler-64bit-all.tar.gz /opt/software/openGauss/
fichmod 755 -R /opt/softwarehost_name=`hostname`
#appPath=$gauss_home/openGauss/appappPath=/opt/gaussdb/appecho "host name is -------------------: $host_name"data_node=/openGauss/data/db1function CompressGauss() {cp /opt/software/clusterconfig.xml /opt/software/openGauss -R# app_path=$gauss_home/openGauss/applog_path=/var/log/gaussdb# core_path=$gauss_home/software/openGauss/corefile# tool_path=$gauss_home/software/openGauss/huawei/wisequerycore_path=/opt/opengauss/corefiletool_path=/opt/huawei/wisequeryecho "host name is -------------------: $appPath"sed -i "s/opengausshostip/$ip/g" /opt/software/openGauss/clusterconfig.xmlsed -i "s/opengausshostname/$host_name/g" /opt/software/openGauss/clusterconfig.xmlsed -i "s#gauss_db_app_path#$appPath#g" /opt/software/openGauss/clusterconfig.xmlsed -i "s#gauss_db_Log_Path#$log_path#g" /opt/software/openGauss/clusterconfig.xmlecho " -------------------: $tool_path"sed -i "s#gauss_db_Tool_Path#$tool_path#g" /opt/software/openGauss/clusterconfig.xmlsed -i "s#core_Path#$core_path#g" /opt/software/openGauss/clusterconfig.xmlsed -i "s#data_node#$data_node#g" /opt/software/openGauss/clusterconfig.xmlcd /opt/software/openGausstar -zxvf openGauss-5.0.0-openEuler-64bit-all.tar.gztar zxvf openGauss-5.0.0-openEuler-64bit-om.tar.gzchmod -R 755 /opt/software
}function preinstall() {chmod -R 755 /opt/softwarecd /opt/software/openGauss/scriptecho "----- pre install start  $(pwd)--------"#python gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xmlecho -e "yes\n1qazQAZ\n1qazQAZ\n" | python gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xmlsleep 2
}function install() {echo "-------install openGauss-------"chmod -R 755 /opt/software/openGauss/script/#$gauss_home/swanlink-cloud-aiot/bin/password_input.sh
su - omm <<EOFcd /opt/software/openGauss/scriptecho " current : "gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--encoding=UTF8" --dn-guc="max_process_memory=4GB" --dn-guc="shared_buffers=256MB" --dn-guc="bulk_write_ring_size=256MB" --dn-guc="cstore_buffers=16MB"
exit;
EOF
}function connectdb() {systemctl start firewalld.servicefirewall-cmd --zone=public --add-port=26000/tcp --permanentfirewall-cmd --reloadsed -i "s/listen_addresses.*/listen_addresses = '*'/" $data_node/postgresql.confsed -i "s#.*$ip.*#host    all    all    0.0.0.0/0    sha256#" $data_node/pg_hba.conf
}function createUserAndImportData() {su - omm <<EOFgsql -d postgres -p 26000 -r <<DBcreate user testuser identified by "!!$@#$ad1123";grant all privileges to testuser;create user clouduser identified by "!!$@#$ad1123";grant all privileges to clduser;create database clddb;
DB
EOFecho "connect"
}function restoreData() {cp /opt/software/zhaofeng.tar /home/omm/chown omm:dbgrp /home/omm/zhaofeng.tardata_path=$gauss_home/package/DatabaseBackup.sqlsu - omm <<EOFgs_restore /home/omm/zhaofeng.tar -p 26000 -d clddb
EOF
}function restartGSDB() {su - omm <<EOFgs_om -t restart
EOF
}PythonVersionChange
ProfileChange
PerformanceChange
CompressGauss
preinstall
install
connectdb
createUserAndImportData
restoreData
restartGSDB
  • openEulerOS.repo.txt


[openEuler-source]
name=openEuler-source
baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler[openEuler-os]
name=openEuler-os
baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler[openEuler-everything]
name=openEuler-everything
baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler[openEuler-EPOL]
name=openEuler-epol
baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/
enabled=1
gpgcheck=0

本文作者

本文内容来自于数据库领域资深技术专家赵锋老师,希望我们的文章正好能解决你的问题。

欢迎技术交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图论(二)-图的建立

引言&#xff1a; 建图&#xff0c;将图放进内存的方法 常用的建图方式&#xff1a;邻接矩阵&#xff0c;邻接链表&#xff0c;链式前向星 一、邻接矩阵 通过一个二维数组即可将图建立&#xff0c;邻接矩阵&#xff0c;考虑节点集合 &#xff0c;用一个二维数组定义邻接矩…

迭代器模式(行为型)

目录 一、前言 二、迭代器模式 三、总结 一、前言 迭代器模式(Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;提供一种方法顺序访问一个聚合对象中各个元素&#xff0c;而又不暴露该对象的内部表示。总的来说就是分离了集合对象的遍历行为&#xff0c;抽象出…

gcc -m32 一堆报错:No such file or directory

问题&#xff1a;终端执行命令gcc -m32 *.c -o xxx.so 出现一堆缺失文件的报错。 解决办法&#xff1a;库没装全&#xff0c;终端执行下面的命令。 sudo apt install gcc-multilib

【设计模式】JAVA Design Patterns——Command(事务模式)

&#x1f50d;目的 将请求封装为对象&#xff0c;从而使你可以将具有不同请求的客户端参数化&#xff0c;队列或记录请求&#xff0c;并且支持可撤销操作。 &#x1f50d;解释 真实世界例子 有一个巫师在地精上施放咒语。咒语在地精上一一执行。第一个咒语使地精缩小&#xff0…

LabVIEW步开发进电机的串口控制程序

LabVIEW步开发进电机的串口控制程序 为了提高电机控制的精确度和自动化程度&#xff0c;开发一种基于LabVIEW的实时、自动化电机串口控制程序。利用LabVIEW软件的图形化编程特性&#xff0c;通过串口实时控制电机的运行参数&#xff0c;实现电机性能的精准控制与评估。 系统组…

nginx+nginx-http-flv-module在Linux服务器搭建

需求 在服务器搭建点播/视频平台的话需要在服务器搭建nginx和rtmp模块 rtmp模块 rtmp 模块有 nginx-rtmp-module &#xff0c;但是我们这里使用 nginx-http-flv-module 来替代。因为后者是基于前者开发的&#xff0c;前者拥有的功能后者都有&#xff0c;后者是国内的开发开…

基于PostGIS的mvt动态矢量切片的后台地图服务和前端调用

目录 一、背景 二、矢量切片 三、Mapbox的矢量切片格式 四、PostGIS生成矢量切片 ST_AsMVT: ST_AsMVTGeom: 五、导入试验数据 六、编写PostGIS函数 七:Java后端实现 八、Openlayers前端调用 一、背景 矢量切片技术目前已成为互联网地图的主流技术,无论是Mapbox还…

Vue.Draggable:强大的Vue拖放组件技术探索

一、引言 随着前端技术的不断发展&#xff0c;拖放&#xff08;Drag-and-Drop&#xff09;功能已经成为许多Web应用不可或缺的一部分。Vue.js作为现代前端框架的佼佼者&#xff0c;为开发者提供了丰富的生态系统和强大的工具链。Vue.Draggable作为基于Sortable.js的Vue拖放组件…

Slash后台管理系统源码阅读笔记 后面面板中的折线图统计卡片是怎么实现的?

之前的笔记发表在博客和公众号以后&#xff0c;得到了一部分同学的喜爱的认可&#xff0c;所以今天继续。 目前这个管理系统的代码已经处理了一小部分&#xff1a; 接下来&#xff0c;我们看看第二栏那三个折线图统计卡片是怎么实现的。 这三个卡片还是使用的 antd 一行三列…

2024年电工杯高校数学建模竞赛(A题) 建模解析| 园区微电网风光储协调优化配置

问题重述及方法概述 问题1&#xff1a;各园区独立运营储能配置方案及其经济性分析 经济性分析采用成本-效益分析方法&#xff0c;计算购电量、弃风弃光电量、总供电成本和单位电量平均供电成本等指标。 问题2&#xff1a;联合园区储能配置方案及其经济性分析 经济性分析采用成…

二叉搜索树与双向链表(C++)

文章目录 1. 题目描述2.题目解析 题目来源&#xff1a; 牛客网…二叉搜索树与双向链表 1. 题目描述 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范围&#xff1a;输入二叉树的节点数 0≤n≤1000&#xff0c;二叉树中每个节点的值…

klinecharts自定义覆盖物

import { registerFigure, registerOverlay } from "klinecharts";registerFigure({name: "custom_graphics",checkEventOn: (coordinate, attrs) => {// 当前鼠标坐标,判断事件是否可用const { x: px, y: py } = coordinate;const { x, y, r } = attr…

重生之while在鸣潮学习HTML标签

个人主页&#xff1a;终端 HTML标签 目录 2.1标题标签 2.2段落标签 2.3换行标签 2.4列表标签 2.5超链接标签 2.6图片标签 2.7表格标签 2.8-2.9表单标签&表单项 2.10布局相关标签 2.11特殊字符 2.1标题标签 标题标签 代码 <h1>鸣</h1> <h2>潮<…

高弹性架构的微服务设计模式

长期以来&#xff0c;开发人员一直使用单片架构&#xff0c;而且长期以来&#xff0c;这种架构一直有效。不幸的是&#xff0c;这些架构使用的部件较少&#xff0c;但体积较大&#xff0c;这意味着如果一个部件发生故障&#xff0c;它们更有可能整体失效。通常&#xff0c;这些…

golang session实现库 支持cookie, redis,mysql等多种存储方式

golang中官方是不支持session的&#xff0c; 如果想要实现session则需要自己动手来实现&#xff0c;或者使用第三方的go-session实现库&#xff0c; 今天就给大家介绍一个go语言的第三方session实现库 go-sessions&#xff0c;支持 的存储方式有 cookie, file, redis, mysql等众…

学习Java的日子 Day49 函数,DOM

Day48 1.流程控制语句 if else for for-in(遍历数组时&#xff0c;跟Java是否一样) While do while break 语句用于跳出循环 continue 用于跳过循环中的一个迭代 2.函数 2.1 JavaScript 函数语法 函数就是包裹在花括号中的代码块&#xff0c;前面使用了关键词 function funct…

图论(四)—最短路问题(Dijkstra)

一、最短路 概念&#xff1a;从某个点 A 到另一个点B的最短距离&#xff08;或路径&#xff09;。从点 A 到 B 可能有多条路线&#xff0c;多种距离&#xff0c;求其中最短的距离和相应路径。 最短路径分类&#xff1a; 单源最短路&#xff1a;图中的一个点到其余各点的最短路径…

(ICRA 2024) Diffusion-Based Point Cloud Super-Resolution for mmWave Radar Data

今天介绍一篇使用Diffusion模型来生成超分辨率雷达点云的方法。毫米波雷达传感器在不利的环境条件下可以保持稳定的性能&#xff0c;使其成为室外移动机器人全天候感知任务的一个有希望的解决方案。然而&#xff0c;雷达点云相对稀疏&#xff0c;包含大量鬼点&#xff0c;极大地…

【驱动】RS485收发控制、自动收发电路及波特率限制

1、芯片本身支持自动收发 RS485收发器芯片本身支持自动收发切换: 优点:简化硬件设计和软件编程,减少外部控制线;缺点:成本高,传输速率可能受限制。下面介绍几款支持自动收发切换的RS485/422芯片 1.1 MAX13487 MAX13487 是一款由 美信(Maxim) 生产的半双工 RS-485/RS…

旧衣回收小程序开发,互联网发展下的巨大商机

随着人们生活水平的提高&#xff0c;对衣物的要求也越来越高&#xff0c;因此推动了旧衣回收市场的发展&#xff0c;旧衣回收行业逐渐兴起。 而在互联网的持续发展下&#xff0c;旧衣回收行业也从传统的回收箱走向了线上旧衣回收小程序。在当下社会中&#xff0c;完善线上旧衣…