如何在Ubuntu 15.04上使用Hot Standby安装和配置PostgreSQL复制

PostgreSQL或Postgres是一个开源的对象关系数据库管理系统(ORDBMS),具有15年以上的积极发展。 它是一个强大的数据库服务器,可以处理高工作负载。 PostgreSQL可以在Linux,Unix,BSD和Windows服务器上使用。

主/从数据库复制是将数据从一台服务器(主服务器)上的数据库复制(同步)到其他服务器(从站)上的数据库的过程。 此过程的主要优点是将数据库分发到多台机器,因此当主服务器出现问题时,有一台备份机器具有相同的数据可用于不间断地处理请求。

PostgreSQL提供了复制数据库的几种方式。 它可以用于备份目的,并提供高可用性数据库服务器。 在本教程中,我将介绍如何使用热备份模式安装和配置PostgreSQL复制。 热备份模式易于配置,这是深入学习PostgreSQL的一个很好的起点。

热备份模式需要2个数据库服务器,我们将在两台服务器上使用Ubuntu作为操作系统。

  1. 主服务器 - 接受客户端具有读写权限的连接。
  2. 从服务器 - 备用服务器以只读权限从主服务器运行数据副本。

先决条件

  • 2个Ubuntu服务器 - 1个用于主服务器,1个用于从服务器。
  • 服务器上的根权限。
  • 有关Ubuntu,apt等的一些基础知识

第1步 - 设置主机名

使用ssh登录到两个服务器:

ssh user@masterip
ssh user@slaveip

现在使用hostnamectl命令设置两台服务器(主服务器和从服务器)的主机名。

在主服务器上:

sudo hostnamectl set-hostname master-server

在从服务器上:

sudo hostnamectl set-hostname slave-server

接下来,使用vim编辑器编辑/ etc / hosts文件:

sudo vim /etc/hosts

将此配置粘贴到主服务器:

192.168.1.249   master-server

将此配置粘贴到从属服务器:

192.168.1.248   slave-server

保存文件并退出编辑器。

第2步 - 在主服务器和从服务器上安装PostgreSQL

在我们开始安装PostgreSQL之前,请更新Ubuntu存储库:

sudo apt-get update

接下来,安装PostgreSQL及其所有依赖项:

sudo apt-get install postgresql postgresql-client postgresql-contrib

Postgres安装后,为postgres用户提供新密码(安装时自动创建)。

passwd postgres

输入您的postgres用户密码。

现在测试PostgreSQL:

su - postgres
psql
\conninfo

你会看到以下结果:

第3步 - 配置主服务器

在此步骤中,我们将配置“主服务器”,IP地址为“192.168.1.249”。 我们将创建一个具有特殊权限的新用户/角色来执行复制,然后编辑PostgreSQL配置文件以启用热备份复制模式。

从root权限,使用su命令切换到PostgreSQL用户:

su - postgres

使用psql命令访问Postgres shell,并在此PostgreSQL查询中键入以创建新的用户/角色:

psql
CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD 'replicauser@';

使用PostgreSQL命令检查新的副本用户如下:

\du

已创建新的副本用户。

接下来,去PostgreSQL目录'/etc/postgresql/9.4/main'来编辑配置文件。

cd /etc/postgresql/9.4/main/

用vim打开postgresql.conf文件:

vim postgresql.conf

取消注释行59并添加服务器IP地址。

listen_addresses = 'localhost,192.168.1.249'

在WAL(预写日志)设置行175中,取消注释并将值更改为hot_standby。

wal_level = hot_standby

在检查点第199行中,取消注释'checkpoint_segments'并将值更改为8。

checkpoint_segments = 8

在归档部分第206和208行中,打开归档选项并添加归档命令。

archive_mode = on
archive_command = 'cp -i %p /var/lib/postgresql/9.4/main/archive/%f'

在复制部分行224和226中,将值更改为最大数量的WAL发件人进程。

max_wal_senders = 3
wal_keep_segments = 8

保存文件并退出vim。

现在在“main”目录下创建一个新的目录,用于存档配置 - 以下列命令运行postgres用户:

mkdir -p /var/lib/9.4/main/archive/

接下来,编辑pg_hba.conf文件以允许复制连接。

vim pg_hba.conf

在行尾,为用户'replica'添加新配置以进行连接。

host    replication     replica      192.168.1.248/24            md5
#192.168.1.248 is slave-server ip address

保存并退出。

第4步 - 从服务器配置

配置从服务器,如主服务器。 使用su成为postgres用户,并转到PostgreSQL配置目录。

su - postgres
cd /etc/postgresql/9.4/main/

用vim编辑postgresql.conf:

vim postgresql.conf

取消注释行59,并添加从服务器IP地址。

listen_addresses = 'localhost,192.168.1.248'

转到第175行并取消注释wal_level设置,将值更改为hot_standby。

wal_level = hot_standby

检查点部分的卸载线199。

checkpoint_segments = 8

取消注释行224和226配置max_wal_sender进程。

max_wal_senders = 3
wal_keep_segments = 8

取消注释线路245以在从属服务器上启用hot_standby模式。

hot_standby = on

保存并退出。

第5步 - 将数据从主服务器同步到从服务器

在此步骤中,我们将PostgreSQL数据目录“/var/lib/postgresql/9.4/main”移动到备份文件夹,然后用“pg_basebackup”命令将其替换为最新的主数据。

仅在从服务器上运行所有命令sbelow!

在从服务器上停止PostgreSQL:

systemctl stop postgresql

现在登录到postgres用户,并将'main'目录重命名为'main_original'作为备份。

su - postgres
mv 9.4/main 9.4/main_original

运行以下命令将数据从主服务器复制到从属服务器:

pg_basebackup -h 192.168.1.249 -D /var/lib/postgresql/9.4/main -U replica -v -P


注意:

  • 192.168.1.249是主服务器的IP地址。
  • 系统将提示您输入用户复制的密码。

转到新的“main”目录,并使用vim创建新的恢复文件“recovery.conf”

cd /var/lib/postgresql/9.4/main/
vim recovery.conf

粘贴以下配置:

standby_mode = 'on'
primary_conninfo = 'host=192.168.1.249 port=5432 user=replica password=replicauser@'
restore_command = 'cp //var/lib/postgresql/9.4/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

现在回到root用户退出并启动PostgreSQL与systemctl命令:

exit
systemctl start postgresql

运行start命令后,确保没有错误。

第6步 - 测试

转到主服务器并登录postgres用户,然后运行以下命令查看复制信息。

su - postgres
psql -x -c "select * from pg_stat_replication;"

您将在下面看到复制信息:

接下来,测试从主服务器创建一个新的数据库,然后检查数据库是否存在于从属服务器上。

su - postgres
psql
create database youcl;

现在登录到从服务器,并检查'​​youcl'数据库是否自动映射到从服务器。

su - postgres
psql
\list

数据库已从主服务器复制到从服务器。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏