# postgres 安装 **Published by:** [marsdao](https://paragraph.com/@marsdao/) **Published on:** 2022-08-04 **URL:** https://paragraph.com/@marsdao/postgres ## Content 一、Centos7 YUM 安装 PostgreSQL sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum makecache yum install postgresql13-server postgresql13-contrib -y 二、初始化 & 启动服务 # 默认yum安装路径为 /usr/pgsql-13/bin/ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb sudo systemctl enable postgresql-13 sudo systemctl start postgresql-13 三、创建DBA账号 # 默认情况下。linux用户 postgres 拥有访问数据库权限 # 切换到 postgres 用户 su - postgres # 连接数据库 psql # 创建账号 create user root with password '*'; # 提升为管理员 ALTER USER root WITH SUPERUSER; # 退出 \q exit 四、设置远程连接 # 默认初始化后,pgsql 数据位于 /var/lib/pgsql/13/data # 编辑 配置文件 vim /var/lib/pgsql/13/data/postgresql.conf 注释掉 listen_addresses = 'localhost' 修改为 listen_addresses = '*' 保存 # 编辑 访问规则文件 vim /var/lib/pgsql/13/data/pg_hba.conf # 新增 host all all 0.0.0.0/0 scram-sha-256 保存 参考说明 从pg_hba.conf文件谈谈postgresql的连接认证 重启服务 systemctl restart postgresql-13.service 添加防火墙 firewall-cmd --zone=public --add-port=5432/tcp --permanent firewall-cmd --reload 测试 Untitled 五、优化配置 pgsql的配置有个在线工具可以直接生成优化配置,根据CPU,内存和硬盘 PGTune - calculate configuration for PostgreSQL based on the maximum performance for a given hardware configuration Untitled 将配置写入 vim /var/lib/pgsql/13/data/postgresql.conf 重启 systemctl restart postgresql-13.service systemctl start postgresql-13.service systemctl stop postgresql-13.service 六、创建用户账号 CREATE USER imspg_admin WITH createdb login PASSWORD '*'; # 创建表空间 postgres=# create tablespace appuser owner appuser location ‘/appuser’; CREATE TABLESPACE # 创建数据库 postgres=# create database appdb with owner appuser tablespace appuser; CREATE DATABASE Untitled 003-Postgresql权限管理总结 PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系_光导纤维-CSDN博客 标准流程 1 # 创建新账户 2 CREATE USER testuser WITH PASSWORD 'testpasswd'; createdb login 3 4 # 将数据库 OWNER 设置为新创建的帐户 5 ALTER DATABASE testdb OWNER TO testuser; 6 7 # 给新用户授权 8 GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser; 1 # 赋予用户schema的权限 2 GRANT ALL PRIVILEGES ON SCHEMA illuminant TO testuser; 3 4 # 赋予schema下所有表的权限 5 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA illuminant TO testuser; 七、流复制配置 编辑配置,设置WAL日志模式 vim /var/lib/pgsql/13/data/postgresql.conf # 添加以下参数 wal_level = replica # 开启存档 archive_mode = on # enables archiving; off, on, or always # (change requires restart) archive_command = 'cp %p /pgsql_archives/%f' restore_command TO 'cp /pgsql_archives/%f %p'; # 在回收之前,至少应保留在pg_wal目录中的 WAL 大小。 wal_keep_size = 1GB 退出保存 # chown -R postgres:postgres /pgsql_archives chmod -R 0700 /pgsql_archives Untitled 添加访问权限 vim /var/lib/pgsql/13/data/pg_hba.conf # 添加以下参数 host replication repl 10.10.102.181/32 md5 # 允许备库(192.168.102.181)使用repl用户通过scram-sha-256口令认证连接replication数据库[replication是PostgreSQL用于复制的特殊伪数据库的名称] 创建复制数据库用户及赋权 create role repl login replication encrypted password '*'; 删除副节点的 data目录(如果一开始没有初始化,则不需要删除) # 将主库的数据库备份到副节点,并设置流复制 rm -rf /var/lib/pgsql/13/data systemctl stop postgresql-13.service pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P # 如果有自定义表空间 需要 -T pg_basebackup -h 10.10.102.180 -p 5432 -U repl -D /var/lib/pgsql/13/data -Fp -R -Xs -P -v -l pangus -T "/var/lib/pgsql/13/data/pangus"=/reptemp # 重新设置权限 chown -R postgres:postgres /var/lib/pgsql/13/data/ #启动数据库 su - postgres /usr/pgsql-13/bin/pg_ctl start -Fp : 所有子目录及其内容的简单副本(数据文件等)。 -R : 在postgresql.auto.conf 文件中自动配置复制特定设置。 -Xs: 使用单独的通道/过程,在备份进行中时,从主到待机流流持续更改 (WAL 记录)。 -P : 显示备份的进度。 -c 快速:此标志可用于执行快速检查点,并避免等待,直到懒惰的检查点完成。 查看复制(主节点运行) su - postgres psql -x -c "select * from pg_stat_replication" Untitled 查看复制(从节点) su - postgres psql -x -c "select * from pg_stat_wal_receiver" Untitled 测试 # 在主节点创建数据库 Create database asyncdb; # 查看数据库 \l Untitled 在从库上看,已经同步过来了 Untitled 八、监控 安装扩展 yum -y install postgresql13-contrib.x86_64 开启防火墙 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.14.237" port protocol="tcp" port="1774" accept" firewall-cmd --zone=public --add-port=9011/tcp --permanent firewall-cmd --zone=public --add-port=9187/tcp --permanent firewall-cmd --zone=public --add-port=9100/tcp --permanent firewall-cmd --reload 在监控机上操作 ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.180 -p 1774 ssh-copy-id -i ~/.ssh/id_rsa 10.10.102.181 -p 1774 ## Publication Information - [marsdao](https://paragraph.com/@marsdao/): Publication homepage - [All Posts](https://paragraph.com/@marsdao/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@marsdao): Subscribe to updates - [Twitter](https://twitter.com/marsdao_eth): Follow on Twitter