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 就不存問題。
希望本文對您有所幫助。