共计 3359 个字符,预计需要花费 9 分钟才能阅读完成。
PostgreSQL 数据库系统
PostgreSQL 是一个高级开源的对象关系数据库管理系统(或 ORDBMS)。它是一个可扩展和高度可扩展的数据库系统,这意味着它可以处理从单机应用程序到企业 Web 服务与许多并发用户的负载。PostgreSQL 是符合 ACID 的(Atomicity,Consistency,Isolation,Durability)。
它支持 SQL 标准的很大一部分,并提供了许多功能,包括:
- 复杂查询
- 外键
- 触发器
- 可更新视图
- 交易完整性
- 多分支并发控制
如前所述,PostgreSQL 数据库系统可以由其用户进行扩展。有不同的方法可以做到这一点,例如添加新功能,操作符,数据类型,索引方法,过程语言等。
它由 PostgreSQL Global Development Group 开发,并根据 PostgreSQL 许可证的条款发布。
PostgreSQL 提供了许多复制数据库的方法。在本教程中,我们将配置主 / 从复制,这是通过从服务器(主)上的数据库复制到另一个服务器(从属)上的数据库来同步两个数据库之间的数据的过程。
这个配置将在运行 Ubuntu 16.04 的服务器上完成。
先决条件
Ubuntu 16.04 服务器上安装了 PostgreSQL 9.6
配置 UFW
UFW(或简单防火墙)是在 Ubuntu 系统上管理基于 iptables 的防火墙的工具。通过 apt 通过执行:安装它(在两台服务器上)
# apt-get install -y ufw
接下来,将 PostgreSQL 和 SSH 服务添加到防火墙。为此,执行:
# ufw allow ssh
# ufw allow postgresql
启用防火墙:
# ufw enable
配置 PostgreSQL 主服务器
主服务器将具有对数据库的读写权限,并且将具有对从服务器进行数据流传输的能力。
使用文本编辑器,编辑 PostgreSQL 主配置文件,即 /etc/postgresql/9.6/main/postgresql.conf
:
# $EDITOR /etc/postgresql/9.6/main/postgresql.conf
取消注释 listen_addresses 行并编辑添加主服务器 IP 地址:
listen_addresses = 'master_server_IP_address'
接下来,取消注释 wal_level 行改变其值:
wal_level = hot_standby
要使用本地同步进行同步级别,请取消注释并编辑以下行:
synchronous_commit = local
我们正在使用两台服务器,所以取消注释并编辑两行如下:
max_wal_senders = 2
wal_keep_segments = 10
保存并关闭文件。
编辑 pg_hba.conf 文件以进行身份验证配置。
# $EDITOR /etc/postgresql/9.6/main/pg_hba.conf
Paste the following configuration:
# Localhost
host replication replica 127.0.0.1/32 md5
# PostgreSQL Master IP address
host replication replica master_IP_address/32 md5
# PostgreSQL SLave IP address
host replication replica slave_IP_address/32 md5
保存,退出并重启 PostgreSQL:
# systemctl restart postgresql
创建用于复制的用户
为复制过程创建一个新的 PostgreSQL 用户。登录 postgres 用户并启动 PostgreSQL shell ::
# su - postgres
$ psql
创建一个新用户:
postgres=# CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD 'usr_strong_pwd';
关闭 shell.
主服务器配置结束。
配置从服务器
从服务器将不具有对数据库的写入权限,因为它的唯一功能是从主机接受流式传输。所以它只有 READ 权限。
首先,停止 PostgreSQL 服务:
# systemctl stop postgresql
编辑 PostgreSQL 主配置文件:
# $EDITOR /etc/postgresql/9.6/main/postgresql.conf
在此文件中,取消注释 listen_addresses 行并更改其值:。
listen_addresses = 'slave_IP_address'
接下来,取消对 wal_level 行的注释,更改如下:
wal_level = hot_standby
如在主设置中,取消注释 sync_commit 行以使用本地同步。
synchronous_commit = local
同样在 master 中,取消注释并编辑以下两行:
max_wal_senders = 2
wal_keep_segments = 10
通过取消注释以下行并更改其值,启用从服务器的 hot_standby:
hot_standby = on
保存并退出。
将数据从主机复制到从机
要从主服务器同步到从服务器,从服务器上的 PostgreSQL 主目录必须由主服务器的主目录替换。在从服务器中,登录 postgres 用户:
# su - postgres
备份实际的数据目录:
$ cd/var/lib/postgresql/9.6/
$ mv main main_bak
创建一个新的主目录:
$ mkdir main/
更改权限:
$ chmod 700 main
此时,使用 pg_basebackup 将主目录从主服务器复制到从服务器:
# pg_basebackup -h master_IP_address -U replica -D /var/lib/postgresql/9.6/main -P --xlog
传输完成后,在主目录中创建一个新的 recovery.conf 文件,并粘贴以下内容:
standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica password=usr_strong_pwd'
trigger_file = '/tmp/postgresql.trigger.5432'
保存,退出并更改此文件的权限:
# chmod 600 recovery.conf
启动 PostgreSQL:
# systemctl start postgresql
从服务器配置到此结束。
总结
通过使用运行 Ubuntu 16.04 的两台服务器,我们已经了解了如何配置 PostgreSQL 主 / 从机复制。这只是该高级和全开源数据库系统提供的许多复制功能之一。
Ubuntu 16.04 下安装 PostgreSQL 和 phpPgAdmin http://www.linuxidc.com/Linux/2016-08/134260.htm
Linux 下 RPM 包方式安装 PostgreSQL http://www.linuxidc.com/Linux/2016-03/128906.htm
Linux 下安装 PostgreSQL http://www.linuxidc.com/Linux/2016-12/138765.htm
Linux 下 PostgreSQL 安装部署指南 http://www.linuxidc.com/Linux/2016-11/137603.htm
Linux 下安装 PostgreSQL 并设置基本参数 http://www.linuxidc.com/Linux/2016-11/137324.htm
Fedota 24 将数据库升级到 PostgreSQL 9.5 http://www.linuxidc.com/Linux/2016-11/137374.htm
CentOS 6.5 下 PostgreSQL 服务部署 http://www.linuxidc.com/Linux/2017-01/139144.htm
MongoDB 的详细介绍 :请点这里
MongoDB 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-08/146190.htm