CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)
Mysql 在面對大數(shù)據(jù)量的時(shí)候,還是表現(xiàn)有些吃力,所以產(chǎn)品中需要擴(kuò)展能支持海量數(shù)據(jù)的數(shù)據(jù)庫,這里選擇的數(shù)據(jù)庫為 Greenplum6 ,Greenplum 底層使用的是開源數(shù)據(jù)庫 PostgreSQL 。本文會介紹怎樣在 CentOS 7 中安裝 Greenplum6,并使用 dotNET Core 程序進(jìn)行連接訪問。
環(huán)境
CentOS:7.6
Greenplum:6.15
dotNET Core:3.1
NpgSql:5.0.4
安裝 Greenplum
1、執(zhí)行命令 vi /etc/selinux/config 修改配置文件來禁用 SELinux ,如下圖:
修改配置文件后,需要重啟服務(wù)器生效。
2、執(zhí)行命令 vi /etc/sysctl.conf 修改 OS 參數(shù),在配置文件最后累加下面內(nèi)容:
#?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修改配置文件后,執(zhí)行 sysctl -p 使其生效。
3、執(zhí)行命令 ?vi /etc/security/limits.conf 修改配置,內(nèi)容如下:
*?soft?nofile?524288 *?hard?nofile?524288 *?soft?nproc?131072 *?hard?nproc?1310724、執(zhí)行命令 vi /etc/security/limits.d/20-nproc.conf 修改配置,內(nèi)容如下:
*?soft?nofile?524288 *?hard?nofile?524288 *?soft?nproc?131072 *?hard?nproc?131072修改完成后,重啟系統(tǒng)使其生效。執(zhí)行 ulimit -u 查看每個(gè)用戶可用的最大進(jìn)程數(shù),如果返回值為 131072 說明正確。
5、執(zhí)行下面的命令來設(shè)置預(yù)讀塊、I/O調(diào)度程序:
/sbin/blockdev?--setra?16384?/dev/sda* echo?deadline?>?/sys/block/sda/queue/scheduler echo?deadline?>?/sys/block/sr0/queue/scheduler6、修改配置文件 /etc/systemd/logind.conf ,將 RemoveIPC 設(shè)置為 no ,如下圖:
修改完后,執(zhí)行命令 service systemd-logind restart 重啟服務(wù)。
7、執(zhí)行下面命令添加用戶 gpadmin :
groupadd?gpadmin useradd?gpadmin?-r?-m?-g?gpadmin passwd?gpadmin?#?修改gpadmin賬戶的密碼8、修改配置文件 /etc/sudoers ,允許 gpadmin 用戶無密碼使用 sudo 命令,添加內(nèi)容如下圖:
gpadmin?ALL=(ALL)?NOPASSWD:ALL9、安裝 Greenplum
從 https://github.com/greenplum-db/gpdb/releases 下載對應(yīng)的 rpm 文件, 如下圖:
在目錄 /usr/local 目錄中創(chuàng)建 greenplum 目錄,將下載好的 rpm 文件復(fù)制到該目錄中。
執(zhí)行 rpm -ivh /usr/local/greenplum/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm 進(jìn)行 Greenplum 6 的安裝。執(zhí)行命令時(shí)可能會出現(xiàn)下面的錯(cuò)誤提示:
原因是有些依賴項(xiàng)沒有被安裝,依次執(zhí)行下面的命令進(jìn)行依賴項(xiàng)的安裝:
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依賴安裝成功后,重新執(zhí)行 rpm -ivh /usr/local/greenplum/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm 進(jìn)行安裝。成功安裝后執(zhí)行 chown -R gpadmin:gpadmin /usr/local/greenplum-db* 進(jìn)行賬戶 gpadmin 的權(quán)限的設(shè)置。
10、執(zhí)行命令 hostnamectl set-hostname gpdb 將主機(jī)名修改為 gpdb 。
11、修改 hosts 文件
執(zhí)行 vi /etc/hosts 進(jìn)行 hosts 文件的修改,如下圖:
11、設(shè)置 gpadmin 賬戶的 ssh 免密登錄
首先執(zhí)行命令 su - gpadmin 切換到 gpadmin 賬戶。
在 /home/gpadmin 目錄中創(chuàng)建文件 all_hosts ,內(nèi)容為上面修改的主機(jī)名 gpdb ,然后執(zhí)行下面命令:
source?/usr/local/greenplum-db/greenplum_path.sh gpssh-exkeys?-f?/home/gpadmin/all_hosts12、執(zhí)行下面命令使變量生效,在 gpadmin 賬戶下執(zhí)行:
su?-?gpadmin source?/usr/local/greenplum-db/greenplum_path.sh?13、執(zhí)行命令 vi /home/gpadmin/.bashrc 編輯該文件進(jìn)行環(huán)境變量的配置,下面內(nèi)容追加在文件最后:
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=postgres14、執(zhí)行下面命令進(jìn)行數(shù)據(jù)目錄的創(chuàng)建:
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執(zhí)行命令 chown -R gpadmin:gpadmin /home/gpadmin/* 進(jìn)行目錄的授權(quán)。
15、初始化 Greenplum
首先復(fù)制配置文件到 /home/gpadmin 目錄中:
su?-?gpadmin?#?切換到?gpadmin?賬戶 mkdir?/home/gpadmin/gpconfigs??#?創(chuàng)建配置文件目錄 cp?$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config?/home/gpadmin/gpconfigs/gpinitsystem_config?#?復(fù)制配置文件修改所需參數(shù),執(zhí)行命令?vi /home/gpadmin/gpconfigs/gpinitsystem_config 修改配置文件,在文件最后追加下面內(nèi)容:
declare?-a?DATA_DIRECTORY=(/home/gpadmin/data/gp1?/home/gpadmin/data/gp2?/home/gpadmin/data/gp3?/home/gpadmin/data/gp4) MASTER_HOSTNAME=gpdb #gpdb 為上面設(shè)置的主機(jī)名稱 MASTER_DIRECTORY=/home/gpadmin/master執(zhí)行下面命令進(jìn)行初始化操作:
gpinitsystem?-c?/home/gpadmin/gpconfigs/gpinitsystem_config?-h?all_hosts執(zhí)行過程中會出現(xiàn)交互,輸入 y 繼續(xù)即可,正常如下圖:
16、設(shè)置遠(yuǎn)程連接配置
執(zhí)行命令 vi /home/gpadmin/master/gpseg-1/postgresql.conf 修改配置,將 #listen_addresses = '*' 前面的 # 取消,如下圖:
執(zhí)行命令 vi /home/gpadmin/master/gpseg-1/pg_hba.conf 修改配置,在文件最后追加下面內(nèi)容:
host?all?gpadmin??0.0.0.0/0??md517、修改密碼和測試連接,在 gpadmin 賬戶下執(zhí)行?
su?-?gpadmin?#?切換到?gpadmin?賬戶 psql?-d?postgres?#?進(jìn)入到數(shù)據(jù)庫命令行模式 alter?user?gpadmin?with?password?'123456';?#?修改gpadmin?賬戶的密碼為?123456使用 Navicat 進(jìn)行連接測試:
dotNET Core 示例
1、使用 VS2019 創(chuàng)建控制臺項(xiàng)目 ?GreenplumDemo 。
2、安裝 NuGet 包 NpgSql 。
3、使用 Navicat 連接上數(shù)據(jù)庫,執(zhí)行下面的 SQL 腳本進(jìn)行表和數(shù)據(jù)的創(chuàng)建:
CREATE?TABLE?user_test(user_name?varchar(100)); insert?into?user_test(user_name)?values('oec2003')4、GreenplumDemo 控制臺項(xiàng)目添加如下代碼:
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 就不存問題。
希望本文對您有所幫助。
總結(jié)
以上是生活随笔為你收集整理的CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6 HotReload的试用
- 下一篇: EFCore3.1+编写自定义的EF.F