暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL源码包安装、开启归档、重要配置文件及参数设置

数据和云 2022-03-02
234

点击蓝字
关注我们
//
一.PostgreSQL源码包安装及开启归档
//

1.下载源码包

https://www.postgresql.org/ftp/source/v12.7/

2.安装必要的包

    yum -y install readline readline-devel zlib zlib-devel gettext gettext-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel perl perl-devel tcl-devel uuid-devel gcc gcc-c++ make flex bison perl-ExtUtils*
    复制

    3.配置目录

      userdel -r postgres
      #源文件目录
      mkdir -p opt/soft
      #安装文件目录
      mkdir -p opt/pg12
      #数据目录
      mkdir -p opt/pgdata
      #WAL 目录
      mkdir -p opt/pgwal
      #归档目录
      mkdir -p opt/pgarchive




      chown -R postgres:postgres opt
      chmod 0700 opt/pgdata opt/pgwal opt/pgarchive
      复制

      4.解压

        cd /opt/soft
        tar -xzvf postgresql-12.7.tar.gz
        复制

        5.编译安装

          su - postgres
          cd /opt/soft
          ./configure --prefix=/opt/pg12 --with-pgport=5432
          gmake world
          gmake install-world
          复制

          6.数据库初始化和启动

            软链接
            ln -s /opt/pg12 /opt/pgsql


            初始化:输入密码123456
            /opt/pgsql/bin/initdb -D/opt/pgdata -X/opt/pgwal -EUTF8 -Upostgres -W


            启动
            /opt/pgsql/bin/pg_ctl -D opt/pgdata -l logfile start


            查看版本
            /opt/pg12/bin/postgres --version
            postgres (PostgreSQL) 12.7
            复制

            7.配置环境变量

              vi ~/.bash_profile
              export PGPORT=5432
              export PGUSER=postgres
              export PGHOME=/opt/pgsql
              export PGDATA=/opt/pgdata
              export PATH=$PGHOME/bin:$PATH


              source ~/.bash_profile
              复制

              8.数据库启停

                查看数据库运行状态
                pg_ctl -D opt/pgdata status


                启动数据库
                pg_ctl -D opt/pgdata start &

                查看数据库运行状态
                pg_ctl -D opt/pgdata status

                停止数据库
                pg_ctl -D opt/pgdata stop


                postgres=# select version();


                重启数据库
                pg_ctl -D /opt/pgdata restart &
                复制

                9.连接

                  netstat -lp --protocol=unix | grep postgres


                  psql -U postgres -h localhost -p 5432


                  psql -U postgres -h1.15.57.253 -p 5432
                  复制

                  10.开启归档

                    show archive_command ;


                    cd $PGDATA
                    [postgres@VM-0-9-centos pgdata]$ cat postgresql.conf |grep archive_mode
                    #archive_mode = off # enables archiving; off, on, or always
                    [postgres@VM-0-9-centos pgdata]$ vi postgresql.conf 


                    archive_mode = on
                    archive_command = 'cp %p opt/arch/%f'


                    切换归档
                    select pg_switch_wal();
                    复制
                    //
                    二.PostgreSQL重要配置文件及参数设置
                    //

                    进入$PGDATA数据目录

                    1.pg_hba.conf

                    作用:

                    • 哪些主机可以连接数据库实例;

                    • 哪个数据库用户可以使用它;

                    • 允许这个用户使用哪些数据库;

                    • 客户端使用什么连接方式和认证方式。

                    # TYPE     DATABASE     USER     ADDRESS     METHOD

                    TYPE:

                    • local 

                      local匹配使用Unix域套接字的连接。

                    • host  

                      匹配使用 TCP/IP建立的连接,同时匹配SSL和非SSL连接。

                      启用远程连接需要修改postgresql.conf中的listen_addresses参数。

                    METHOD:

                    • trust

                      无条件地允许连接。

                      允许任何可以与PostgreSQL数据库服务器连接的用户身份登入

                      不需要口令或者其他任何认证。

                    • reject

                      无条件拒绝连接。常用于从一个组中“过滤出”特定主机。

                      例如一个reject行可以阻塞特定的主机连接,而后面一行允许特定网络中的其余主机进行连接。

                      md5和password口令认证。

                    2.postgresql.conf

                      listen_addresses = '*'  #(关联配置文件pg_hba.conf)
                      复制

                      指定服务器在哪些 TCP/IP 地址上监听客户端连接。

                      值的形式是一个逗号分隔的主机名和/或数字 IP 地址列表。

                      特殊项*对应监听所有可用 IP 接口,0.0.0.0允许监听所有 IPv4 地址,并且::允许监听所有 IPv6 地址。

                      如果列表为空,服务器将根本不会监听任何 IP 接口,在这种情况中只能使用 Unix 域套接字来连接它。

                      默认值是localhost,它只允许建立本地 TCP/IP "环回"连接。

                      这能帮助在不安全网络接口上阻止重复的恶意连接请求。

                      这个参数只能在服务器启动时设置。 

                        port = 5866
                        复制

                        服务器监听的 TCP 端口;默认是 5866 。

                          max_connections = 100
                          复制

                          决定数据库的最大并发连接数。

                          这个参数只能在服务器启动时设置。(cpu 1核 50个链接)

                            shared_buffers
                            复制

                            它表示数据缓冲区中的数据块的个数,每个数据块的大小是8KB。

                            数据缓冲区位于数据库的共享内存中,它越大越好,不能小于128KB。

                            这个参数只有在启动数据库时,才能被设置。

                            默认值是128MB。

                            推荐值:1/4 主机物理内存。

                              wal_buffers 
                              复制

                              用于还未写入磁盘的 WAL 数据的共享内存量。

                              默认值 -1 表示将该参数值设置为 shared_buffers 的 1/32 的大小 ( 大约 3%),但是不小于64kB 也不大于一个WAL段的大小(通常为 16MB)。 

                              如果自动的选择太大或太小可以手工设置该值,但是任何小于 32kB 的正值都将被当作 32kB。 

                              这个参数只能在服务器启动时设置。

                              事务日志缓冲区位于数据库的共享内存中。

                              推荐值:min( 2047MB, shared_buffers/32 ) = 512MB

                                work_mem
                                复制

                                指定在写到临时磁盘文件之前用于内部排序操作和哈希表的内存量。

                                ORDER BY, DISTINCT 和合并连接( merge joins) 都会用到排序操作。 

                                默认值为 4 兆字节( 4MB)。

                                推荐值:work_mem = (输入内存数量- shared_buffers)/(连接数 * 3)* 1024 (单位是 KB);

                                  maintenance_work_mem
                                  复制

                                  它决定数据库的维护操作使用的内存空间的大小。

                                  数据库的维护操作包括VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等操作。 

                                  值如果比较大,通常可以缩短VACUUM数据库和从dump文件中恢复数据库需要的时间。

                                  maintenance_work_mem存放在每个数据库进程的私有内存中,而不是存放在数据库的共享内存中。这个参数可以在任何时候被设置。

                                  开启日志采集:

                                    logging_collector = on    
                                    复制

                                    日志目录:

                                      log_directory = 'log'        
                                      复制
                                        log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'  日志文件名字
                                        log_truncate_on_rotation = off 是否覆盖
                                        log_rotation_age = 1d 每天生成
                                        log_rotation_size = 10MB 每个日志大小
                                        复制

                                        优化建议

                                          andom_page_cost = 2.5
                                          复制

                                          规划器对一次非顺序获取磁盘页面的代价估计。 默认值是 4.0。 高端存储或者ssd可以适当调小该参数。

                                            autovacuum_max_workers = 10
                                            复制

                                            指定能同时运行的autovacuum进程的最大数量, 适当调大, 避免vacuum不及时导致表膨胀。

                                              checkpoint_completion_target = 0.7
                                              复制

                                              增加checkpoint_completion_target来降低检查点的I/O负载, 默认0.5。

                                                archive_timeout =1800
                                                复制

                                                强制服务器来周期性地切换到一个新的 WAL 段文件。

                                                  archive_command = 'test ! -f /paic/dba/pgbackup/${PGNAME}/archlog/%f && pxz -2 < %p >
                                                  /paic/dba/pgbackup/${PGNAME}/archlog/%f'
                                                  复制

                                                  pxz压缩归档日志, 64M的归档, 压缩时间可以在0.5s内, 压缩比一般可在1:3左右。


                                                  配置参数级别

                                                  • 系统级别 /集群服务级别/实例级别(全局)

                                                  • 用户/角色级别

                                                  • 用户/角色 + 数据库级别

                                                  • 会话级别

                                                  参数设置级别

                                                  参数存储位置

                                                  cluster

                                                  postgresql.conf or postgresql.auto.conf

                                                  db

                                                  pg_db_role_setting

                                                  role

                                                  pg_db_role_setting

                                                  db 和 role的组合

                                                  pg_db_role_setting

                                                  1.使配置生效的几种方法

                                                  • 用超级用户运行

                                                     SELECT pg_reload_conf();
                                                    复制
                                                    • 使用pg_ctl命令触发SIGHUP信号 

                                                       pg_ctl reload
                                                      复制
                                                      • 用UNIX的kill手动发起HUP信号

                                                        ps -ef|grep -i postmaster|grep -v grep|xargs kill -HUP
                                                        复制
                                                        • 重启数据库服务 

                                                        2.查看配置

                                                          show all;                       #查看所有数据库参数的值
                                                          show shared_buffers; #查看某个参数的当前值(可查看当前会话值)
                                                          select current_setting('shared_buffers');
                                                          复制

                                                          3.配置生效级别

                                                          sihup

                                                          给服务器发送HUP信号会使服务器重新加载postgresql.conf配置,可以立即生效

                                                          postmaster

                                                          只有服务重启才能生效

                                                          internal

                                                          编译期间的设置,只有重新编译才能生效。

                                                          backend

                                                          与sighup类似,但是不影响正在运行的会话,只在新会话中生效

                                                          superuser

                                                          使用superuser(如postgres)才能更改,不用重新加载所有配置即可生效

                                                          user

                                                          单个会话用户可以在任意时间做修改,只会影响该会话


                                                          配置参数


                                                          1.配置全局参数

                                                          全局参数修改,调用pg_reload_conf()生效,参数修改写入了postgresql.auto.conf。

                                                          2.配置session级别参数

                                                          当前session有效,reset恢复。

                                                          3.配置库级别参数

                                                          不写入postgresql.auto.conf。

                                                            alter database mydb set work_mem='16MB';
                                                            select * from pg_db_role_setting where setdatabase in (select oid from pg_database where datname in ('mydb')) ;
                                                            复制

                                                            4.配置role级别参数

                                                            不写入postgresql.auto.conf。


                                                              alter role user_t set work_mem='2MB';
                                                              select * from pg_db_role_setting where setrole in (select usesysid from pg_user where usename in ('user_t'))
                                                              order by setrole,setdatabase;
                                                              复制

                                                              5.查看当前的参数设置

                                                              库和role级别没有影响全局参数的值。

                                                                select name,setting,source from pg_settings where name='work_mem';
                                                                复制

                                                                6.postmaster级别需要重启才能生效

                                                                调用pg_reload_conf()生效,参数修改写入了 postgresql.auto.conf,但是并没有生效,postmaster需要重启数据库才能生效。


                                                                墨天轮原文链接:复制链接至浏览器或点击文末阅读原文查看)

                                                                https://www.modb.pro/db/141174?sjhy

                                                                https://www.modb.pro/db/142788?sjhy

                                                                关于作者

                                                                陈家睿,云和恩墨MySQL技术顾问,拥有MySQL OCP、PGCE、OBCA、SCDP证书,长期服务于电信行业。现负责公司MySQL数据库、分布式数据库运维方面的技术工作;热衷于运维故障处理、备份恢复、升级迁移、性能优化的学习与分享。

                                                                END

                                                                推荐阅读2021数据技术嘉年华视频回放及PPT下载


                                                                2021数据技术嘉年华50余个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2021DTC”获得!

                                                                你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓


                                                                点击下图查看更多 ↓

                                                                云和恩墨大讲堂 | 一个分享交流的地方

                                                                长按,识别二维码,加入万人交流社群


                                                                请备注:云和恩墨大讲堂

                                                                  点个“在看” 

                                                                你的喜欢会被看到❤

                                                                文章转载自数据和云,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                评论