CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)

Mysql 在面对大数据量的时候,还是表现有些吃力,所以产品中需要扩展能支持海量数据的数据库,这里选择的数据库为 Greenplum6 ,Greenplum 底层使用的是开源数据库 PostgreSQL 。本文会介绍怎样在 CentOS 7 中安装 Greenplum6,并使用 dotNET Core 程序进行连接访问。

环境

  • CentOS:7.6

  • Greenplum:6.15

  • dotNET Core:3.1

  • NpgSql:5.0.4

安装 Greenplum

1、执行命令 vi /etc/selinux/config 修改配置文件来禁用 SELinux ,如下图:

修改配置文件后,需要重启服务器生效。

2、执行命令 vi /etc/sysctl.conf 修改 OS 参数,在配置文件最后累加下面内容:

# kernel.shmall = _PHYS_PAGES / 2 # See Note 1
kernel.shmall = 4000000000
# kernel.shmmax = kernel.shmall * PAGE_SIZE # See Note 1
kernel.shmmax = 500000000
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95 # See Note 2
net.ipv4.ip_local_port_range = 10000 65535 # See Note 3
# kernel.sem = 500 1024000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0 # See Note 5
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
net.ipv4.ip_forward = 0
net.ipv4.tcp_tw_recycle = 1
kernel.sem = 500 1024000 200 4096

修改配置文件后,执行 sysctl -p 使其生效。

3、执行命令  vi /etc/security/limits.conf 修改配置,内容如下:

* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072

4、执行命令 vi /etc/security/limits.d/20-nproc.conf 修改配置,内容如下:

* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072

修改完成后,重启系统使其生效。执行 ulimit -u 查看每个用户可用的最大进程数,如果返回值为 131072 说明正确。

5、执行下面的命令来设置预读块、I/O调度程序:

/sbin/blockdev --setra 16384 /dev/sda*
echo deadline > /sys/block/sda/queue/scheduler
echo deadline > /sys/block/sr0/queue/scheduler

6、修改配置文件 /etc/systemd/logind.conf ,将 RemoveIPC 设置为 no ,如下图:

修改完后,执行命令 service systemd-logind restart 重启服务。

7、执行下面命令添加用户 gpadmin :

groupadd gpadmin
useradd gpadmin -r -m -g gpadmin
passwd gpadmin # 修改gpadmin账户的密码

8、修改配置文件 /etc/sudoers ,允许 gpadmin 用户无密码使用 sudo 命令,添加内容如下图:

gpadmin ALL=(ALL) NOPASSWD:ALL

9、安装 Greenplum

从 https://github.com/greenplum-db/gpdb/releases 下载对应的 rpm 文件, 如下图:

在目录 /usr/local 目录中创建 greenplum 目录,将下载好的 rpm 文件复制到该目录中。

执行 rpm -ivh /usr/local/greenplum/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm 进行 Greenplum 6 的安装。执行命令时可能会出现下面的错误提示:

原因是有些依赖项没有被安装,依次执行下面的命令进行依赖项的安装:

yum install -y apr
yum install -y apr-util
yum install -y bzip2
yum install -y krb5-devel
yum install -y libyaml
yum install -y perl
yum install -y rsync
yum install -y zip
yum install -y net-tools
yum install -y ibevent

依赖安装成功后,重新执行 rpm -ivh /usr/local/greenplum/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm 进行安装。成功安装后执行 chown -R gpadmin:gpadmin /usr/local/greenplum-db* 进行账户 gpadmin 的权限的设置。

10、执行命令 hostnamectl set-hostname gpdb 将主机名修改为 gpdb 。

11、修改 hosts 文件

执行 vi /etc/hosts 进行 hosts 文件的修改,如下图:

11、设置 gpadmin 账户的 ssh 免密登录

首先执行命令 su - gpadmin 切换到 gpadmin 账户。

/home/gpadmin 目录中创建文件 all_hosts ,内容为上面修改的主机名 gpdb ,然后执行下面命令:

source /usr/local/greenplum-db/greenplum_path.sh
gpssh-exkeys -f /home/gpadmin/all_hosts

12、执行下面命令使变量生效,在 gpadmin 账户下执行:

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh 

13、执行命令 vi /home/gpadmin/.bashrc 编辑该文件进行环境变量的配置,下面内容追加在文件最后:

source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=postgres

14、执行下面命令进行数据目录的创建:

mkdir -p /home/gpadmin/master
mkdir -p /home/gpadmin/data/gp1
mkdir -p /home/gpadmin/data/gp2
mkdir -p /home/gpadmin/data/gp3
mkdir -p /home/gpadmin/data/gp4

执行命令 chown -R gpadmin:gpadmin /home/gpadmin/* 进行目录的授权。

15、初始化 Greenplum

首先复制配置文件到 /home/gpadmin 目录中:


su - gpadmin # 切换到 gpadmin 账户
mkdir /home/gpadmin/gpconfigs  # 创建配置文件目录
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config # 复制配置文件

修改所需参数,执行命令 vi /home/gpadmin/gpconfigs/gpinitsystem_config 修改配置文件,在文件最后追加下面内容:

declare -a DATA_DIRECTORY=(/home/gpadmin/data/gp1 /home/gpadmin/data/gp2 /home/gpadmin/data/gp3 /home/gpadmin/data/gp4)
MASTER_HOSTNAME=gpdb  #gpdb 为上面设置的主机名称
MASTER_DIRECTORY=/home/gpadmin/master

执行下面命令进行初始化操作:

gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h all_hosts

执行过程中会出现交互,输入 y 继续即可,正常如下图:

16、设置远程连接配置

执行命令 vi /home/gpadmin/master/gpseg-1/postgresql.conf 修改配置,将 #listen_addresses = '*' 前面的 # 取消,如下图:

执行命令 vi /home/gpadmin/master/gpseg-1/pg_hba.conf 修改配置,在文件最后追加下面内容:

host all gpadmin  0.0.0.0/0  md5

17、修改密码和测试连接,在 gpadmin 账户下执行 

su - gpadmin # 切换到 gpadmin 账户
psql -d postgres # 进入到数据库命令行模式
alter user gpadmin with password '123456'; # 修改gpadmin 账户的密码为 123456

使用 Navicat 进行连接测试:

dotNET Core 示例

1、使用 VS2019 创建控制台项目  GreenplumDemo 。

2、安装 NuGet 包 NpgSql 。

3、使用 Navicat 连接上数据库,执行下面的 SQL 脚本进行表和数据的创建:

CREATE TABLE user_test(user_name varchar(100));
insert into user_test(user_name) values('oec2003')

4、GreenplumDemo 控制台项目添加如下代码:

using System;
using Npgsql;
namespace PostgreSqlDemo
{class Program{static void Main(string[] args){var connString = "Host=10.15.3.111;Username=gpadmin;Password=123456;Database=postgres;Port=5432";using (var conn = new NpgsqlConnection(connString)){conn.Open();using (var cmd = new NpgsqlCommand("select * from user_test", conn))using (var reader = cmd.ExecuteReader())while (reader.Read())Console.WriteLine(reader["user_name"]);}Console.ReadKey();}}
}

只要你会使用 ADO.NET ,那么使用 Npgsql 就不存问题。

希望本文对您有所帮助。

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

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

相关文章

linux系统故障实验,Linux常见系统故障排除

导读: 前言 运维人员经常会遇到各式各样的系统故障,如何根据故障特征锁定问题根源,需要的不仅仅是技巧,还有遇到故障时的思路,和对系统内部的理解,本文列出了一些常见的系统故障和处理方法,在那…

MIT正式发布编程语言Julia 1.0:Python、R、C++三合一

MIT 开发的 Julia 语言是全球热度上升最快的编程语言之一,下载量超过 200 万次,下载者包括谷歌、Facebook、FAA 和美国能源部等各个部门的开发者。近日,MIT CSAIL 实验室正式发布了 Julia 1.0,该语言期望结合 C 的速度、Matlab 的…

EFCore3.1+编写自定义的EF.Functions扩展方法

前言本文主要是讲解EF Core3.0 如何实现自定义的数据库扩展函数,虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密..。这样的话 我们就需要自己扩展这些数据库函数 从而达到调用的目的.本文以达梦数据库为例(其他数据库都一样)..上篇文章推荐: EF …

WSUS2.0数据导入、导出(备份、还原)

以前我们做的WSUS实验都是让WSUS服务器通过互联网连接到微软网站去下 载更新补丁,但是现实的生活中有些网络是与互联网隔绝的,这种情况下可以采用导入导出WSUS数据的方法来解决WSUS的更新问题。先在一台能联网的 WSUS服务器上下载所需更新,然…

linux perl模块检测,Linux有问必答:如何用Perl检测Linux的发行版本

提问:我需要写一个Perl程序,它会包含Linux发行版相关的代码。为此,Perl程序需要能够自动检测运行中的Linux的发行版(如Ubuntu、CentOS、Debian、Fedora等等),以及它是什么版本号。如何用Perl检测Linux的发行版本?如果要用Perl脚本…

借助TensorFlow框架,到底能做什么?

谷歌在七月份正式推出了深度学习框架TensorFlow 1.9 版本,那么TensorFlow框架到底是什么?TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。最初由Google大脑小组的研究员和工程师们开发…

在c语言中如何屏蔽一段程序,如何在用C语言关闭TCP程序中的Nagle算法

TCP为了防止在网络中过多的小分组会导致阻塞,因此提供了Nagle算法:要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来…

CCNP课堂练习四:frame-relay traffic-shaping(帧中继流量×××)

帧中继(Frame Relay)是一种网络与数据终端设备(DTE)接口标准。它可以减少结点的处理时间,提高网络的吞吐量。帧中继提供的是数据链路层和物理层的协议规范,任何高层协议都独立于帧中继协议,因此,大大地简化了帧中继的实现。目前帧中继的主要应用之一是局域网互联,特别是在局域网…

百度内部培训PPT流出:数据分析的道与术

这是一份来自百度内部的数据分析学习PPT,非常经典的入门教材。主要内容1、什么是数据分析(道)1.1 数据分析是什么?1.2 什么是做好数据分析的关键?1.3 分析要思考业务,尤其是接地气1.4 分析要言之有物&#…

VS2010 C++下编译调试MongoDB“.NET研究”源码

考虑到mongodb使用了boost库源码,参考mongodb官方文档后,下载编译boost版本是1.42(时间为2010-2-2)或更新版本:boost版本1.42:http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download 下载boost源码之后…

有了这15款编程游戏,谁都可以学编程!

1、Coding Games一边玩游戏,一边挑战编程难题。Coding games支持包括PHP、C、JavaScript在内的20多种编程语言。用户界面功能强大,可以定制。例如,你可以选择你的代码编辑器的风格: Emacs、Vim、Classic。如果你想提升编程技能&am…

毕业的那天,程序员师兄竟然让我去做这一行

给大家看一份最新的数据:(薪资表)2018年最新数据:python、大数据、人工智能从业者工资为什么人工智能行业的工资那么高?无论是科研院所,商业巨头还是初创企业,各行各业都在大力开发或者引进人工…

Python 分析《爱情公寓》电影,让我十年情怀一瞬间都喂了狗

深陷抄袭之名、诉讼纠纷的《爱情公寓》终于上映了。情怀粉们的力量不容小觑,截止到8月12,《爱情公寓》票房已经突破3.72亿大关,稳坐票房冠军的宝座,院线排片占比高达40.0%。和超高票房背道而驰的,是各大社交平台上一边…

银行背景下分库分表技术选型

业务持续增长带来的单表数据量过大,必然影响到数据库的读写性能,那到底要不要分库分表呢?阿里巴巴P3C规范给出一个推荐:【推荐】单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。说明:如果预计…

单片机矩阵消抖延时c语言,单片机矩阵按键定时器消抖程序源码

芯片是采用的stc89c51单片机.下面是矩阵键盘的电路图,矩阵键盘是接在p2口的.下面是单片机部分的图,数码管显示等完整的原理图可以从http://www.51hei.com/f/ks51.pdf 这里下载本文引用地址:http://www.eepw.com.cn/article/201612/324612.htm下面是程序源…

资料分享 | R语言资料分享来袭

小编从大学开始,便开启资料收集功能。R作为一种统计分析软件,广泛应用于生物、医学、电商、新闻等数据相关行业,并已成为主流数据应用软件之一,经过近几年的积累和沉淀,再加上日常的深入研究,小编收集整理了…

google code for xbmc addons2

2019独角兽企业重金招聘Python工程师标准>>> http://code.google.com/p/xbmc-skin-convergence/downloads/list 转载于:https://my.oschina.net/u/174445/blog/33955

我们需要什么样的开源教育?

点击上方“开源社”关注我们| 作者:庄表伟| 编辑:沈于蓝| 设计:宋传琪‍文章缘起‍写这篇文章的原因,是和几个朋友的闲聊。再之前,是因为看到了几篇文章2020-12-18 《欢迎加入!开放原子大学首批开源讲师认证…

谷歌十年,我的认知被彻底颠覆

这个问题是提给自己的,算是对我 Google 十年的一个小结。强调“不装逼”,主要是提醒自己不要陷入下列俗套:离职后靠黑前雇主、八卦前雇主、揭秘前雇主搏出位(这条是恶行)满足大众猎奇心理吹嘘自己,贬低他人…

redis灵魂拷问:19图+11题带你面试通关

又到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套redis面试题,助力大家通关。1 redis为什么响应快1.1数据保存在内存中redis数据保存在内存中,读写操作只要访问内存,不需要磁盘IO。1.2.底层数…