PostgreSQL深入了解从基础安装到高级性能优化!

PostgreSQL是一种功能强大的开源对象关系型数据库系统,以其高度的可扩展性、可靠性和对复杂查询的支持而闻名。本文将深入解析PostgreSQL的安装过程、基本操作、性能优化以及主从复制配置,旨在为数据库管理员和开发者提供一份全面的指南。

一、PostgreSQL的安装

PostgreSQL的安装过程相对简单,但需要按照一定的步骤进行操作。以下是基于Linux系统的安装指南:

1. 下载源码包

访问PostgreSQL官方网站的源码下载页面:https://www.postgresql.org/ftp/source/v14.8/,选择合适的版本进行下载。

2. 解压源码包

使用以下命令解压下载的源码包:

tar -xvf postgresql-14.0.tar.gz

 

3. 创建用户和组

为PostgreSQL创建一个专用的用户和组,以确保数据库的安全运行:
groupadd postgres
useradd -g postgres postgres
 

4. 安装依赖包

安装PostgreSQL所需的依赖包,例如zlib和libreadline:
yum install *zlib*
yum install *libreadline*
 

5. 编译与安装

进入解压后的源码目录,运行以下命令进行编译和安装:
./configure
make && make install
 

6. 修改安装目录权限

将安装目录的所有者和组更改为postgres用户:

chown -R postgres:postgres /usr/local/pgsql

 

7. 创建数据目录

创建PostgreSQL的数据目录,并设置正确的权限:
mkdir /pgdata
chown postgres:postgres /pgdata
 

8. 配置环境变量

以postgres用户身份登录,编辑其.bash_profile文件,添加以下环境变量:

export PATH=$PATH:/usr/local/pgsql/bin

 

9. 初始化数据库

使用以下命令初始化数据库:

initdb -D /pgdata

 

10. 启动数据库

启动PostgreSQL数据库服务:

pg_ctl -D /pgdata start

 

11. 验证登录

通过psql客户端工具验证是否可以成功登录数据库:

psql

 

二、PostgreSQL的基本操作

安装完成后,可以开始进行一些基本的数据库操作,例如创建数据库、用户、表以及插入和查询数据。

1. 创建数据库

创建一个新的数据库:
CREATE DATABASE mydatabase;
 

2. 创建用户

创建一个新的用户,并为其设置密码:
CREATE USER myuser WITH PASSWORD 'mypassword';
 

3. 授权用户

授予用户访问特定数据库的权限:
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
 

4. 创建表

在数据库中创建一个简单的表:
CREATE TABLE mytable (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
 

5. 插入数据

向表中插入一条记录:
INSERT INTO mytable (name) VALUES ('My First Entry');
 

6. 查询数据

查询表中的数据:
SELECT * FROM mytable;
 

三、PostgreSQL的性能优化

为了充分发挥PostgreSQL的性能,需要对配置文件进行适当的调整。以下是两个主要的配置文件及其优化建议:

1. postgresql.conf配置文件

postgresql.conf文件是PostgreSQL的主要配置文件,以下是一些关键参数的优化建议:

连接控制

  • listen_addresses:设置为'*',允许所有IP地址连接。
  • max_connections:根据服务器的硬件配置,设置合适的最大连接数,例如1000。
  • superuser_reserved_connections:为超级用户保留的连接数,例如10。

内存管理

  • shared_buffers:推荐设置为操作系统物理内存的1/4,例如512MB。
  • work_mem:单个查询操作可使用的最大内存,例如8MB。
  • maintenance_work_mem:维护性操作中使用的最大内存,例如512MB。
  • max_files_per_process:设置为24800。
  • effective_cache_size:推荐设置为操作系统物理内存的1/2,例如1GB。

日志优化

  • log_destination:设置为'csvlog',将日志输出到CSV文件。
  • logging_collector:设置为on,启用日志收集器。
  • log_directory:设置日志存放路径,例如'/pgdata/logs'
  • log_truncate_on_rotation:设置为on,在日志轮转时截断日志文件。

2. pg_hba.conf访问控制文件

pg_hba.conf文件用于控制客户端的访问权限,以下是一个示例配置:

host all all 0.0.0.0/0 md5

 
该配置允许所有IP地址使用MD5加密的密码进行连接。
修改配置文件后,需要通过以下命令重启PostgreSQL服务以使配置生效:

pg_ctl -D /pgdata restart

 

四、PostgreSQL的主从复制配置

PostgreSQL通过WAL日志进行主从同步,支持流复制机制。以下是主从复制的配置步骤:

1. 主库配置

创建同步账号

在主库中创建一个用于复制的用户:
CREATE ROLE replica login replication encrypted password 'Temp##2022';
 

修改pg_hba.conf文件

在主库的pg_hba.conf文件中增加从库的访问控制:

host replication replica 10.2.111.192/32 md5

 

重启主库

重启主库以使配置生效:

pg_ctl -D /pgdata restart

 

2. 从库配置

停止从库

停止从库服务:

pg_ctl stop -D /pgdata

 

清空从库数据文件

清空从库的数据目录:

rm -rf /pgdata/*

 

拉取主库数据文件

使用pg_basebackup命令从主库拉取数据文件:

pg_basebackup -h 10.2.111.192 -D /pgdata -p 5432 -U replica -Fp -Xs -Pv -R --checkpoint=fast

 

修改postgresql.conf文件

在从库的postgresql.conf文件中添加主库信息:

primary_conninfo = 'host=10.2.111.193 port=5432 user=replica password=Temp##2022'

 

启动从库

启动从库服务:

pg_ctl start -D /pgdata

 

验证主从同步

在主库中执行以下查询,验证主从同步是否正常:
SELECT client_addr, usename, backend_start, application_name, sync_state, sync_priority FROM pg_stat_replication;
 
如果从库提升为主库,可以使用以下命令:

pg_ctl promote -D /pgdata

 
通过pg_controldata命令检查数据库状态:

pg_controldata -D /pgdata | grep cluster

 
如果显示in production,则说明从库已成功提升为主库。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容