源码安装
在 CentOS 系统中安装 PostgreSQL 的源码,您可以按照以下步骤进行操作:
步骤 1:准备环境
确保您的 CentOS 系统满足 PostgreSQL 的要求,并安装必要的依赖项。您可以使用 yum
包管理器来安装这些依赖项。执行以下命令更新软件包列表并安装依赖项:
sudo yum update
sudo yum install gcc readline-devel zlib-devel
步骤 2:下载源码
前往 PostgreSQL 官方网站(https://www.postgresql.org/)下载所需的源码版本。选择适合您的版本并下载压缩包(通常是 .tar.gz
或 .tar.bz2
格式)。
步骤 3:解压源码
在您选择的目录中解压源码压缩包。使用以下命令解压:
tar xvfz postgresql-x.x.x.tar.gz
这将解压缩到一个名为 postgresql-x.x.x
的目录中,其中 x.x.x
是您下载的源码版本号。
步骤 4:配置、编译和安装
进入源码目录并执行以下命令来配置、编译和安装 PostgreSQL:
cd postgresql-x.x.x
./configure
make
sudo make install
这将根据您的系统配置、编译并安装 PostgreSQL。
步骤 5:初始化数据库集群
在安装完成后,执行以下命令来初始化 PostgreSQL 数据库集群:
sudo su - postgres
initdb -D /usr/local/pgsql/data
这将使用默认配置初始化一个新的数据库集群。 /usr/local/pgsql/data
是数据库集群的数据目录。
步骤 6:启动 PostgreSQL 服务
执行以下命令来启动 PostgreSQL 服务:
pg_ctl -D /usr/local/pgsql/data start
现在,您已经成功安装和启动了 PostgreSQL。
使用方法:
- 连接到 PostgreSQL 数据库:
psql -U username -d database_name
其中 username
是您的用户名,database_name
是要连接的数据库名称。
- 执行 SQL 查询或命令:
SELECT * FROM table_name;
这是一个示例查询语句,您可以根据需要执行各种 SQL 查询和命令。
- 退出 PostgreSQL:
\q
使用此命令退出 psql
客户端。
请注意,这只是 PostgreSQL 在 CentOS 系统上进行源码安装和基本使用的简要概述。更详细的使用方法和深入了解 PostgreSQL 的功能,请参考 PostgreSQL 官方文档和手册。
用户权限
以下是 PostgreSQL 中用于管理权限的常见命令:
1. 用户管理命令
- 创建用户:
CREATE USER username [WITH PASSWORD 'password'];
注解:使用此命令创建一个新的数据库用户。可以选择提供密码来保护用户账号。
示例代码:
CREATE USER john WITH PASSWORD 'password123';
- 修改用户密码:
ALTER USER username WITH PASSWORD 'new_password';
注解:使用此命令修改用户的密码。
示例代码:
ALTER USER john WITH PASSWORD 'newpassword456';
- 删除用户:
DROP USER username;
注解:使用此命令删除数据库用户及其相关权限。
示例代码:
DROP USER john;
2. 权限管理命令
- 授予角色权限:
GRANT permission_type [, ...] ON object_name TO role_name;
注解:使用此命令授予指定角色对特定对象的权限。permission_type
可以是 ALL
, SELECT
, INSERT
, UPDATE
, DELETE
等权限,object_name
可以是表名、数据库名等,role_name
是要授予权限的角色名。
示例代码:
GRANT SELECT, INSERT ON table_name TO role_name;
- 撤销角色权限:
REVOKE permission_type [, ...] ON object_name FROM role_name;
注解:使用此命令撤销角色对特定对象的权限。
示例代码:
REVOKE INSERT, UPDATE ON table_name FROM role_name;
- 授予用户登录权限:
GRANT CONNECT ON DATABASE database_name TO username;
注解:使用此命令授予用户连接到指定数据库的权限。
示例代码:
GRANT CONNECT ON DATABASE mydatabase TO john;
- 授予角色成员资格:
GRANT role_name TO username;
注解:使用此命令将指定用户添加为指定角色的成员。
示例代码:
GRANT sales_role TO john;
- 撤销角色成员资格:
REVOKE role_name FROM username;
注解:使用此命令将指定用户从指定角色的成员列表中移除。
示例代码:
REVOKE sales_role FROM john;
- 查看对象权限:
\dp object_name
注解:使用此命令查看指定对象的权限信息。
示例代码:
\dp table_name
这些命令可以用于管理 PostgreSQL 中的用户和权限。请注意,实际使用中可能会有更复杂的权限管理需求,您可以根据具体情况进一步学习和应用其他命令和选项。
增删改查
当涉及到 PostgreSQL 数据库的增删改查操作时,Markdown 格式可能不是最合适的方式来展示详细命令语法。我可以为您提供一个以文本形式展示的总结,包含了常见的 PostgreSQL 增删改查命令以及相应的注解和示例代码:
1. 插入数据 (INSERT)
用于向表中插入新的行。
命令语法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
注解:table_name
是目标表的名称,column1, column2, ...
是要插入的列名称,value1, value2, ...
是相应列的值。
示例代码:
INSERT INTO employees (name, age, department) VALUES ('John Doe', 30, 'Sales');
2. 查询数据 (SELECT)
用于从表中检索数据。
命令语法:
SELECT column1, column2, ... FROM table_name WHERE condition;
注解:column1, column2, ...
是要选择的列名称,table_name
是目标表的名称,condition
是可选的筛选条件。
示例代码:
SELECT name, age FROM employees WHERE department = 'Sales';
3. 更新数据 (UPDATE)
用于修改表中的现有数据。
命令语法:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
注解:table_name
是目标表的名称,column1 = value1, column2 = value2, ...
指定要更新的列和相应的新值,condition
是可选的筛选条件。
示例代码:
UPDATE employees SET age = 31 WHERE name = 'John Doe';
4. 删除数据 (DELETE)
用于从表中删除数据。
命令语法:
DELETE FROM table_name WHERE condition;
注解:table_name
是目标表的名称,condition
是可选的筛选条件。
示例代码:
DELETE FROM employees WHERE department = 'Sales';
请注意,这些是 PostgreSQL 中最基本的增删改查命令示例。实际使用时,您可能需要根据您的表结构和需求进行相应的调整。
常见语法
以下是 PostgreSQL 数据库中的常见命令语法的总结:
1. 数据库管理命令
- 创建数据库:
CREATE DATABASE database_name;
- 删除数据库:
DROP DATABASE database_name;
- 连接到数据库:
\c database_name;
- 列出所有数据库:
\l
2. 表管理命令
- 创建表:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);
- 删除表:
DROP TABLE table_name;
- 修改表结构(添加列):
ALTER TABLE table_name ADD column_name datatype;
- 修改表结构(修改列):
ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;
- 修改表结构(删除列):
ALTER TABLE table_name DROP COLUMN column_name;
- 列出所有表:
\dt
- 显示表结构:
\d table_name
3. 数据操作命令
- 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
- 查询数据:
SELECT column1, column2, ... FROM table_name WHERE condition;
- 更新数据:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
4. 索引和约束命令
- 创建索引:
CREATE INDEX index_name ON table_name (column1, column2, ...);
- 删除索引:
DROP INDEX index_name;
- 创建主键约束:
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);
- 创建外键约束:
ALTER TABLE child_table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column1, column2, ...) REFERENCES parent_table_name (column1, column2, ...);
- 创建唯一约束:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ...);
这些是 PostgreSQL 中常见的命令语法。请注意,根据您的具体需求,您可能需要进一步了解和使用其他命令和选项。
高可以、异步流复制
要配置 PostgreSQL 的高可用和异步流复制,您可以按照以下详细教程进行操作:
1. 配置主服务器(Master)
1.1. 修改 PostgreSQL 配置文件:
-
找到 PostgreSQL 的配置文件
postgresql.conf
。默认路径为/etc/postgresql/{version}/main/postgresql.conf
。 -
找到以下设置并进行修改:
listen_addresses = '*' wal_level = replica max_wal_senders = 10
1.2. 重启 PostgreSQL 服务:
-
使用以下命令重启 PostgreSQL 服务:
sudo systemctl restart postgresql
2. 配置从服务器(Standby)
2.1. 复制主服务器数据:
-
停止从服务器上的 PostgreSQL 服务:
sudo systemctl stop postgresql
-
在从服务器上删除数据目录(
data_directory
)中的所有文件。 -
使用以下命令从主服务器复制数据到从服务器:
sudo -u postgres pg_basebackup -h <master_ip_address> -D <data_directory> -U replication -P --xlog-method=stream
其中,
<master_ip_address>
是主服务器的 IP 地址,<data_directory>
是从服务器的数据目录。
2.2. 配置从服务器的恢复文件:
-
在从服务器的数据目录中创建一个名为
recovery.conf
的文件,并添加以下配置:standby_mode = 'on' primary_conninfo = 'host=<master_ip_address> port=5432 user=replication password=<password>' trigger_file = '<data_directory>/trigger_file'
其中,
<master_ip_address>
是主服务器的 IP 地址,<password>
是用于复制的密码。
2.3. 修改从服务器的 PostgreSQL 配置文件:
-
找到 PostgreSQL 的配置文件
postgresql.conf
。默认路径为/etc/postgresql/{version}/main/postgresql.conf
。 -
找到以下设置并进行修改:
listen_addresses = '*' hot_standby = on
2.4. 启动从服务器的 PostgreSQL 服务:
-
使用以下命令启动从服务器的 PostgreSQL 服务:
sudo systemctl start postgresql
3. 验证配置和复制状态
3.1. 在主服务器上创建一个测试数据库:
-
使用以下命令连接到主服务器:
psql -U postgres -h <master_ip_address> -d postgres
-
创建一个测试数据库:
CREATE DATABASE test;
3.2. 在从服务器上验证数据复制:
-
使用以下命令连接到从服务器:
psql -U postgres -h <standby_ip_address> -d test
其中,
<standby_ip_address>
是从服务器的 IP 地址。 -
在从服务器上验证是否能看到在主服务器上创建的测试数据库。
通过以上步骤,您已经完成了 PostgreSQL 的高可用和异步流复制的配置。请注意,这只是一个简要的概述,具体的配置可能会因您的环境和需求而有所不同。更详细的信息和进一步了解 PostgreSQL 复制的选项和配置,请参考 PostgreSQL 官方文档和手册。
灾备切换
在 PostgreSQL 中进行灾备切换(Failover)通常涉及以下步骤。这是一个较为详细的教程:
1. 配置主服务器(Primary)
1.1. 修改主服务器的 PostgreSQL 配置文件:
-
找到主服务器的配置文件
postgresql.conf
。默认路径为/etc/postgresql/{version}/main/postgresql.conf
。 -
找到以下设置并进行修改:
listen_addresses = '*' wal_level = replica max_wal_senders = 10
确保
listen_addresses
允许从服务器和其它需要连接的服务器的 IP 地址。
1.2. 修改主服务器的 pg_hba.conf
文件:
-
找到
pg_hba.conf
文件。默认路径为/etc/postgresql/{version}/main/pg_hba.conf
。 -
添加以下配置,允许从服务器和其它需要连接的服务器访问主服务器:
host replication replica_ip_address/32 md5
其中,
replica_ip_address
是从服务器的 IP 地址。
1.3. 重启主服务器的 PostgreSQL 服务:
-
使用以下命令重启主服务器的 PostgreSQL 服务:
sudo systemctl restart postgresql
2. 配置从服务器(Standby)
2.1. 复制主服务器数据:
-
停止从服务器上的 PostgreSQL 服务:
sudo systemctl stop postgresql
-
在从服务器上删除数据目录(
data_directory
)中的所有文件。 -
使用以下命令从主服务器复制数据到从服务器:
sudo -u postgres pg_basebackup -h <primary_ip_address> -D <data_directory> -U replication -P --xlog-method=stream
其中,
<primary_ip_address>
是主服务器的 IP 地址,<data_directory>
是从服务器的数据目录。
2.2. 配置从服务器的恢复文件:
-
在从服务器的数据目录中创建一个名为
recovery.conf
的文件,并添加以下配置:standby_mode = 'on' primary_conninfo = 'host=<primary_ip_address> port=5432 user=replication password=<password>' trigger_file = '<data_directory>/trigger_file'
其中,
<primary_ip_address>
是主服务器的 IP 地址,<password>
是用于复制的密码。
2.3. 修改从服务器的 PostgreSQL 配置文件:
-
找到从服务器的配置文件
postgresql.conf
。默认路径为/etc/postgresql/{version}/main/postgresql.conf
。 -
找到以下设置并进行修改:
listen_addresses = '*' hot_standby = on
2.4. 启动从服务器的 PostgreSQL 服务:
-
使用以下命令启动从服务器的 PostgreSQL 服务:
sudo systemctl start postgresql
3. 执行灾备切换
3.1. 确定主服务器无法正常工作:
- 可以通过监控和检查主服务器的状态来确定主服务器是否发生故障或无法访问。
3.2. 切换到从服务器:
-
在切换前,确保从服务器已经完成了与主服务器的数据同步。
-
执行以下操作切换到从服务器:
-
停止主服务器的 PostgreSQL 服务:
sudo systemctl stop postgresql
-
在从服务器上启动 PostgreSQL 服务:
sudo systemctl start postgresql
-
3.3. 验证切换是否成功:
- 连接到从服务器的 PostgreSQL 数据库,验证数据是否可用并进行必要的测试。
通过以上步骤,您已经完成了 PostgreSQL 的灾备切换。请注意,这只是一个简要的概述,具体的配置和切换步骤可能会因您的环境和需求而有所不同。更详细的信息和进一步了解 PostgreSQL 的复制和灾备切换,请参考 PostgreSQL 官方文档和手册。