Linux系统pgsql安装
### Linux系统pgsql安装与主从复制搭建指南 #### 一、环境准备与主机列表 在进行PostgreSQL(简称为pgsql)的安装与主从复制搭建之前,首先需要明确所涉及的主机及其角色: - **主机地址**: 10.52.6.31 - **角色**: 主机 (Master) - **主机地址**: 10.52.6.32 - **角色**: 从机 (Slave) #### 二、具体搭建步骤 ##### 1. 创建用户并设置密码 - **命令**: `useradd postgres` - **命令**: `passwd postgres` (设置密码) ##### 2. 创建必要目录并赋予权限 - **命令**: `mkdir -p /data/pgsql` - **命令**: `mkdir -p /data/pgsql_logs/pgsql.log` - **命令**: `chown -R postgres:postgres /data/` 这些目录将用于存储PostgreSQL的数据文件和日志文件。 ##### 3. 安装PostgreSQL软件包 - **命令**: `sudo rpm -ivh postgresql14-libs-14.6-1PGDG.rhel7.x86_64.rpm` - **命令**: `sudo rpm -ivh postgresql14-14.6-1PGDG.rhel7.x86_64.rpm` - **命令**: `sudo rpm -ivh postgresql14-server-14.6-1PGDG.rhel7.x86_64.rpm` - **命令**: `sudo rpm -ivh postgresql14-contrib-14.6-1PGDG.rhel7.x86_64.rpm` 这里需要注意的是,`postgresql14-contrib` 软件包提供了额外的功能,但其依赖于Python 3.6组件。如果环境中没有安装Python 3.6,则可以选择不安装这个包。 ##### 4. 切换用户 - **命令**: `su postgres` 这一步是为了确保后续的操作都是以`postgres`用户的身份执行的。 ##### 5. 初始化数据库 - **命令**: `/usr/pg14/bin/initdb -D /data/pgsql` 这一步初始化了数据库目录。 ##### 6. 启动数据库服务 - **命令**: `/usr/pg14/bin/pg_ctl -D /data/pgsql/ -l /data/pgsql_logs/pgsql.log start` 此命令启动了PostgreSQL服务。 ##### 7. 禁用防火墙 - **命令**: `systemctl stop firewalld.service` - **命令**: `systemctl disable firewalld.service` 由于PostgreSQL需要监听端口以接受外部连接,因此需要禁用防火墙或相应地开放防火墙规则。 ##### 8. 修改主库配置文件 - **文件路径**: `/data/pgsql/postgresql.conf` - **配置项**: - `listen_address = '10.52.6.31'` - `port = 5432` - `max_connections = 1000` - `wal_level = replica` - `archive_mode = on` - `archive_command = 'cd ./'` - `max_wal_senders = 10` - `wal_keep_size = 256` - `wal_sender_timeout = 60` 这些配置项是为主机提供必要的参数,以支持主从复制功能。 ##### 9. 修改主库访问控制文件 - **文件路径**: `/data/pgsql/pg_hba.conf` - **添加配置**: - `host replication repuser 10.52.6.32/32 md5` 此配置允许从机通过用户名`repuser`进行数据同步操作。 ##### 10. 重启主库服务 - **命令**: `/usr/pg14/bin/pg_ctl -D /data/pgsql/ -l /data/pgsql_logs/pgsql.log restart` 重启服务后,新配置才能生效。 ##### 11. 创建用于主从同步的用户 - **命令**: `psql -h 127.0.0.1 -p 5432` - **命令**: `create role repuser login encrypted password 'repuser123' replication` 这一步是为了创建一个拥有复制权限的用户`repuser`,用于之后的主从同步操作。 ##### 12. 在从机上执行同步数据操作 - **命令**: `/usr/pg14/bin/pg_basebackup -h 10.52.6.31 -p 5432 -U repuser --password -X stream -Fp --progress -D /data/pgsql -R` 执行此命令时需要输入`repuser123`作为密码,这会将主库的数据及配置同步到从机的`/data/pgsql`目录下,并生成`postgresql.auto.conf`文件。 ##### 13. 修改从机配置文件 - **文件路径**: `/data/pgsql/postgresql.conf` - **修改内容**: - `listen_address = '10.52.6.32'` - `primary_conninfo = 'host=10.52.6.31 port=5432 user=repuser sslmode=prefer'` - `primary_slot_name = 'slot1'` - `hot_standby = on` - `wal_receiver_status_interval = 10` 这些配置项是为从机提供必要的参数,以便它能够与主机关联进行数据同步。 ##### 14. 修改从机访问控制文件 - **文件路径**: `/data/pgsql/pg_hba.conf` - **修改内容**: 注释掉与主库相关的配置项 这是为了避免从机上存在不必要的安全风险。 ##### 15. 重新启动从机服务 - **命令**: `/usr/pg14/bin/pg_ctl -D /data/pgsql -l /data/pgsql_logs/pgsql.log restart` 重启服务后,新配置才能生效。 ##### 16. 测试主从同步效果 - **命令**: `psql -h 127.0.0.1 -p 5432` - **命令**: `\du` 这一步可以查看到在主库中创建的`repuser`用户。 - **命令**: `select * from <表名>;` 在主库中创建一张表并在其中插入数据,然后在从机上检查该表是否同步成功。 以上步骤详细介绍了如何在Linux系统中安装PostgreSQL以及如何搭建主从复制环境。通过这些步骤,不仅可以成功部署PostgreSQL数据库,还可以实现数据的高效同步,这对于构建高可用性和高可扩展性的系统是非常重要的。