Linux環(huán)境下PG 14的安裝部署
安裝 PostgreSQL 14
常用方法
下載PG
https://www.postgresql.org/
https://yum.postgresql.org/rpmchart.php
https://yum.postgresql.org/14/redhat/rhel-7-x86_64/repoview/postgresqldbserver14.group.html
https://www.postgresql.org/ftp/source/
打開 PostgreSQL 官網(wǎng) https://www.postgresql.org/,點擊菜單欄上的 Download ,可以看到這里包含了很多平臺的安裝包,包括 linux、Windows、Mac OS等 ;也可以直接訪問:https://www.postgresql.org/download/ 進行下載。
yum在線安裝
https://www.postgresql.org/download
https://yum.postgresql.org/repopackages.php
文檔:https://www.postgresql.org/download/linux/redhat/
rpm下載:https://yum.postgresql.org/rpmchart/
docker rm -f lhrpgccc docker run -d --name lhrpgccc -h lhrpgccc \ -p 25432-25439:5432-5439 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true lhrbest/lhrcentos76:8.8 \ /usr/sbin/init docker exec -it lhrpgccc bash -- 一些依賴包 yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel \ python36 tcl openssl ncurses-devel openldap pam flex -- 刪除已存在的PG yum remove -y postgresql* && rm -rf /var/lib/pgsql && rm -rf /usr/pgsql* && userdel -r postgres && groupdel postgres yum install -y sysbench -- 安裝yum源 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum repolist all | grep pgdg yum repolist enabled | grep pgdg -- 安裝pg,注意:postgresql14-contrib是安裝插件的 yum install -y postgresql14 postgresql14-server postgresql14-libs postgresql14-contrib -- 驗證 [root@lhrpgccc /]# rpm -aq| grep postgres postgresql14-14.2-1PGDG.rhel7.x86_64 postgresql14-contrib-14.2-1PGDG.rhel7.x86_64 postgresql14-libs-14.2-1PGDG.rhel7.x86_64 postgresql14-server-14.2-1PGDG.rhel7.x86_64 -- 環(huán)境變量 echo "export PATH=/usr/pgsql-14/bin:$PATH" >> /etc/profile -- 初始化PG /usr/pgsql-14/bin/postgresql-14-setup initdb systemctl enable postgresql-14 systemctl start postgresql-14 systemctl status postgresql-14 -- 本地登陸 su - postgres psql -- 安裝插件 create extension pageinspect; create extension pg_stat_statements; select * from pg_extension ; select * from pg_available_extensions order by name; -- 修改postgres密碼 alter user postgres with encrypted password 'lhr'; 或 \password select * from pg_tables limit 10; select version(); firewall-cmd --add-port=5432/tcp --permanent firewall-cmd --reload firewall-cmd --list-port -- 配置允許PG遠程登錄,注意版本: cat >> /var/lib/pgsql/14/data/postgresql.conf <<"EOF" listen_addresses = '*' port=5432 unix_socket_directories='/var/lib/pgsql/14/data' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on EOF cat > /var/lib/pgsql/14/data/pg_hba.conf << EOF # TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 trust EOF systemctl restart postgresql-14 -- 遠程登陸 psql -U postgres -h 192.168.66.35 -d postgres -p25432 -- 從Postgresql 9.2開始,還可以使用URI格式進行連接:psql postgresql://myuser:mypasswd@myhost:5432/mydb psql postgresql://postgres:lhr@192.168.66.35:25432/postgres \l CREATE DATABASE lhrdb WITH OWNER=postgres ENCODING='UTF-8'; \c lhrdb create table student ( id integer not null, name character(32), number char(5), constraint student_pkey primary key (id) ); \d student INSERT INTO student (id, name, number) VALUES (1, '張三', '1023'); SELECT * FROM student WHERE id=1;
其中-h參數(shù)指定服務器地址,默認為127.0.0.1,默認不指定即可,-d指定連接之后選中的數(shù)據(jù)庫,默認也是postgres,-U指定用戶,默認是當前用戶,-p 指定端口號,默認是"5432",其它更多的參數(shù)選項可以執(zhí)行: ./bin/psql --help 查看
docker安裝
Docker Hub的官網(wǎng)地址:https://hub.docker.com/_/postgres
GitHub的地址:https://github.com/docker-library/postgres
-- 拉取所有鏡像 docker pull postgres:9.4.26 docker pull postgres:9.6.24 docker pull postgres:10.20 docker pull postgres:11.15 docker pull postgres:12.10 docker pull postgres:13.6 docker pull postgres:14.2 -- 創(chuàng)建各個版本的Docker容器 docker rm -f lhrpg94 lhrpg96 lhrpg10 lhrpg11 lhrpg12 lhrpg13 lhrpg14 docker run --name lhrpg94 -h lhrpg94 -d -p 54321:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:9.4.26 docker run --name lhrpg96 -h lhrpg96 -d -p 54322:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:9.6.24 docker run --name lhrpg10 -h lhrpg10 -d -p 54323:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:10.20 docker run --name lhrpg11 -h lhrpg11 -d -p 54324:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:11.15 docker run --name lhrpg12 -h lhrpg12 -d -p 54325:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:12.10 docker run --name lhrpg13 -h lhrpg13 -d -p 54326:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:13.6 docker run --name lhrpg14 -h lhrpg14 -d -p 54327:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:14.2 docker exec -it lhrpg14 psql -U postgres -d postgres select * from pg_tables ; select version(); psql -U postgres -h 172.17.0.12 -d postgres psql -U postgres -h 192.168.66.35 -p 54324 -d postgres
二進制安裝
https://www.enterprisedb.com/download-postgresql-binaries
從11開始,不再支持Linux版本的二進制,但是Windows依然支持。
解壓,并且配置環(huán)境變量即可使用:
cat >> /root/.bashrc <<"EOF" export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH export PATH=$PATH:/usr/local/pgsql/bin EOF
注意:psql和gsql的lib庫不兼容,參考:https://www.xmmup.com/guzhangchulipsqlkehuduanlianjiepgbaocuopsql-error-expected-authentication-request-from-serv.html
源碼安裝(生產(chǎn)庫建議源碼安裝)
https://www.postgresql.org/ftp/source/
http://postgres.cn/docs/13/install-procedure.html
以下方法已在9.6到14版本測試過:
-- 下載源碼包 wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz --no-check-certificate wget https://ftp.postgresql.org/pub/source/v13.3/postgresql-13.3.tar.gz wget https://ftp.postgresql.org/pub/source/v12.7/postgresql-12.7.tar.gz wget https://ftp.postgresql.org/pub/source/v11.12/postgresql-11.12.tar.gz wget https://ftp.postgresql.org/pub/source/v10.17/postgresql-10.17.tar.gz wget https://ftp.postgresql.org/pub/source/v9.6.22/postgresql-9.6.22.tar.gz wget https://ftp.postgresql.org/pub/source/v9.4.26/postgresql-9.4.26.tar.gz -- 一些依賴包 yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel \ python36 tcl openssl ncurses-devel openldap pam flex -- 創(chuàng)建用戶 useradd pgsql echo "lhr" | passwd --stdin pgsql -- 創(chuàng)建目錄 mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg14,soft} chown -R pgsql:pgsql /postgresql chmod -R 775 /postgresql -- 編譯 su - pgsql cd /postgresql/soft tar zxvf postgresql-14.2.tar.gz cd postgresql-14.2 ./configure --prefix=/postgresql/pg14 make -j 16 && make install # 編譯完成,最后一行顯示:All of PostgreSQL successfully made. Ready to install. -- 如果你希望編譯所有能編譯的東西,包括文檔(HTML和手冊頁)以及附加模塊(contrib),這樣鍵入: make world -j 16 && make install-world #最后一行顯示:PostgreSQL, contrib, and documentation successfully made. Ready to install. -- 源碼安裝postgresql時,而make時又沒有make world,就會導致的pg最終沒有類似pg_stat_statements的擴展功能 -- 配置環(huán)境變量 cat >> ~/.bash_profile <<"EOF" export PGPORT=5432 export PGDATA=/postgresql/pgdata export PGHOME=/postgresql/pg14 export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH export PATH=$PGHOME/bin:$PATH:. export PGHOST=$PGDATA export PGUSER=postgres export PGDATABASE=postgres EOF source ~/.bash_profile -- 初始化 su - pgsql /postgresql/pg14/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres -- 修改參數(shù) cat >> /postgresql/pgdata/postgresql.conf <<"EOF" listen_addresses = '*' port=5432 unix_socket_directories='/postgresql/pgdata' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on EOF cat > /postgresql/pgdata/pg_hba.conf << EOF # TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 md5 EOF -- 啟動 su - pgsql pg_ctl start pg_ctl status pg_ctl stop -- 配置系統(tǒng)服務 cat > /etc/systemd/system/PG14.service <<"EOF" [Unit] Description=PostgreSQL database server Documentation=man:postgres(1) After=network.target [Service] Type=forking User=pgsql Group=pgsql Environment=PGPORT=5433 Environment=PGDATA=/postgresql/pgdata OOMScoreAdjust=-1000 ExecStart=/postgresql/pg14/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300 ExecStop=/postgresql/pg14/bin/pg_ctl stop -D ${PGDATA} -s -m fast ExecReload=/postgresql/pg14/bin/pg_ctl reload -D ${PGDATA} -s KillMode=mixed KillSignal=SIGINT TimeoutSec=0 [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable PG14 systemctl start PG14 systemctl status PG14 su - pgsql psql \password postgres or: alter user postgres with password 'lhr'; -- 安裝插件 create extension pageinspect; create extension pg_stat_statements; select * from pg_extension ; select * from pg_available_extensions order by name;
編譯參數(shù)介紹:
–with-pgport=NUMBER
把NUMBER設置為服務器和客戶端的默認端口。默認是 5432。 這個端口可以在以后修改,不過如果你在這里聲明,那么服務器和客戶端將有相同的編譯好了的默認值。這樣會非常方便些。 通常選取一個非默認值的理由是你企圖在同一臺機器上運行多個PostgreSQL服務器。
–with-openssl
編譯SSL(加密)連接支持。這個選項需要安裝OpenSSL包。configure將會檢查所需的頭文件和庫以確保你的 OpenSSL安裝足以讓配置繼續(xù)下去。
–with-perl
制作PL/Perl服務器端編程語言。
–with-python
制作PL/Python服務器端編程語言。
–with-blocksize=BLOCKSIZE
設置塊尺寸,以 K 字節(jié)計。這是表內(nèi)存儲和I/O的單位。默認值(8K字節(jié))適合于大多數(shù)情況,但是在特殊情況下可能其他值更有用。這個值必須是2的冪并且在 1 和 32 (K字節(jié))之間。注意修改這個值需要一次 initdb。
–with-systemd
系統(tǒng)服務方式管理
更多編譯選項請參考:http://postgres.cn/docs/13/install-procedure.html
配置環(huán)境變量
echo "export PATH=/usr/pgsql-14/bin:$PATH" >> /etc/profile mkdir -p /home/postgres chown postgres.postgres /home/postgres -R sed -i 's|/var/lib/pgsql|/home/postgres|' /etc/passwd echo "lhr" |passwd --stdin postgres cat > /home/postgres/.bash_profile <<"EOF" export PGPORT=5432 export PGHOME=/usr/pgsql-14 export PGDATA=/var/lib/pgsql/14/data export PATH=$PGHOME/bin:$PATH export MANPATH=$PGHOME/share/man:$MANPATH export LANG=en_US.UTF-8 export DATE='date +"%Y%m%d%H%M"' export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH export PGHOST=$PGDATA export PGUSER=postgres export PGPASSWORD=lhr export PGDATABASE=postgres export PS1="[\u@\h \W]\$ " EOF chown postgres.postgres /home/postgres/.bash_profile
系統(tǒng)參數(shù)修改
systemctl status firewalld.service systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config cat > /etc/sysctl.conf <<"EOF" vm.swappiness=10 vm.zone_reclaim_mode=0 fs.aio-max-nr = 1048576 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 kernel.shmmax = 1288490188 kernel.shmall = 314572 kernel.shmmni = 4096 kernel.sem = 50100 64128000 50100 1280 EOF sysctl -p cat >> /etc/security/limits.conf <<"EOF" * soft nofile 131072 * hard nofile 131072 * soft nproc 131072 * hard nproc 131072 * soft core unlimited * hard core unlimited * soft memlock 50000000 * hard memlock 50000000 EOF echo "* - nproc unlimited" > /etc/security/limits.d/90-nproc.conf echo "session required pam_limits.so" >> /etc/pam.d/login # 關閉THP root用戶下 在vi /etc/rc.local最后添加如下代碼 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi chmod +x /etc/rc.d/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag
Linux
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。