Postgres-XL 10 使用介绍(三)

本文详细介绍了PostgreSQL数据库集群的配置与管理,包括设置内存、连接、安全性和资源限制。强调了参数如`shared_buffers`、`max_connections`、`listen_addresses`、`ssl`以及身份验证和连接超时设置。还涵盖了数据库升级、启动和关闭服务器的策略,以及配置文件的管理。此外,提到了对大页面、资源限制、安全选项如SSL加密和Unix域套接字的使用。

##### systemd RemoveIPC

##### Resource Limits

##### Linux Memory Overcommit

##### Linux Huge Pages

像PostgreSQL一样,使用大的连续页面可以减少使用大块连续内存时的开销,尤其是当使用大值的shared_buffers时。 要在PostgreSQL中使用此功能,您需要具有`CONFIG_HUGETLBFS = y`和`CONFIG_HUGETLB_PAGE = y`的内核。 您还必须调整内核设置`vm.nr_hugepages`。 要估计所需的大页面数,请在未启用大页面的情况下启动PostgreSQL,并使用/ proc文件系统检查邮局局长的VmPeak值以及系统的大页面大小。 可能看起来像:

```shell
$ head -1 $PGDATA/postmaster.pid
4170
$ grep ^VmPeak /proc/4170/status
VmPeak:  6490428 kB
$ grep ^Hugepagesize /proc/meminfo
Hugepagesize:       2048 kB
```

6490428/2048大约为3169.154,因此在此示例中,我们至少需要3170个大页面,可以通过以下方式设置:

```shell
$ sysctl -w vm.nr_hugepages=3170
```

如果计算机上的其他程序也需要大页面,则较大的设置将是适当的。 不要忘记将此设置添加到`/etc/sysctl.conf`中,以便在重新启动后重新应用该设置。

有时内核无法立即分配所需数量的大页面,因此可能有必要重复该命令或重新引导。 (重新启动后,应立即将机器的大部分内存转换成大页。)要验证大页分配情况,请使用:

```shell
$ grep Huge /proc/meminfo
```

也可能需要通过sysctl设置vm.hugetlb_shm_group来授予数据库服务器的操作系统用户使用大页面的权限,和/或使用ulimit -l授予锁定内存的权限。

PostgreSQL中大页面的默认行为是在可能的情况下使用它们,而在失败时退回到普通页面。 要强制使用大页面,可以在postgresql.conf中将huge_pages设置为on。 请注意,如果没有足够大的页面,使用此设置的PostgreSQL将无法启动。

有关Linux大页面功能的详细说明,请访问https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt。

#### Shutting Down the Server

本节介绍如何关闭每个协调器和数据节点。 请注意,您应该先关闭Coordinator,然后再关闭Datanodes,GTM-Proxy和GTM。

##### Shutting Down Coordinators and Datanodes

有几种关闭数据库服务器的方法。 您可以通过向主postgres进程发送不同的信号来控制关闭的类型。

SIGTERM

这是智能关机模式。 收到SIGTERM后,服务器将禁止新连接,但允许现有会话正常结束其工作。 仅在所有会话终止后,它才会关闭。 如果服务器处于联机备份模式,它将另外等待,直到联机备份模式不再处于活动状态。 在备份模式处于活动状态时,仍将允许新连接,但仅允许与超级用户建立连接(此例外允许超级用户进行连接以终止在线备份模式)。 如果在请求智能关闭时服务器处于恢复状态,则只有在所有常规会话都终止之后,恢复和流式复制才会停止。

SIGINT

这是快速关机模式。 服务器禁止新连接,并发送所有现有服务器进程SIGTERM,这将导致它们中止其当前事务并立即退出。 然后,它等待所有服务器进程退出并最终关闭。 如果服务器处于联机备份模式,则备份模式将终止,从而使备份无用。

SIGQUIT

这是立即关闭模式。 服务器将SIGQUIT发送给所有子进程,并等待它们终止。 如果没有在5秒钟内终止,则会向他们发送SIGKILL。 所有子进程都退出后,主服务器进程将立即退出,而不进行正常的数据库关闭处理。 下次启动时,这将导致恢复(通过重播WAL日志)。 仅在紧急情况下才建议这样做。

pg_ctl程序提供了一个方便的接口,用于发送这些信号以关闭服务器。 或者,您可以在非Windows系统上使用kill直接发送信号。 可以使用ps程序或从数据目录中的文件postmaster.pid中找到postgres进程的PID。 例如,要进行快速关机:

```shell
kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
```

最好不要使用SIGKILL关闭服务器。 这样做将阻止服务器释放共享内存和信号量,然后可能必须先手动完成这些操作,然后才能启动新服务器。 此外,SIGKILL会杀死postgres进程而不让其将信号中继到其子进程,因此也有必要手动杀死各个子进程。

要在允许其他会话继续进行的同时终止单个会话,请使用pg_terminate_backend()(请参见表9.78)或向与该会话关联的子进程发送SIGTERM信号。

##### Shutting Down GTM-Proxies

您可以通过向每个GTM代理进程发送SIGKILL,SIGTERM,SIGQUIT,SIGINT或SIGHUP来关闭GTM代理。 GTM代理进程号记录在每个GTM代理工作目录中的文件gtm_proxy.pid中。

##### Shutting Down GTM

您可以通过将SIGKILL,SIGTERM,SIGQUIT,SIGINT或SIGHUP发送到GTM进程来关闭GTM。 GTM进程号记录在GTM工作目录中的文件gtm.pid中。

#### Upgrading a PostgreSQL Cluster

本节讨论如何将数据库数据从一个PostgreSQL版本升级到一个新版本。
由于Postgres-XL的Coordinators和Datanode本质上是PostgreSQL服务器,因此您可以按照以下描述的步骤升级它们。 请注意,您应该手动执行此操作。

当前的PostgreSQL版本号由主版本号和次版本号组成。 例如,在版本号10.1中,10是主要版本号,1是次要版本号,这意味着这将是主要版本10的第一个次要版本。对于PostgreSQL 10.0之前的版本,版本号包括 三个数字,例如9.5.3。 在这些情况下,主要版本由版本号的前两位数字组(例如9.5)组成,次要版本是第三个数字组(例如3),这意味着这将是主要版本9.5的第三个次要版本。

次要版本永远不会更改内部存储格式,并且始终与相同主版本号的早期和较晚次要版本兼容。 例如,版本10.1与版本10.0和版本10.6兼容。 类似地,例如,9.5.3与9.5.0、9.5.1和9.5.6兼容。 要在兼容版本之间进行更新,只需在服务器关闭时替换可执行文件,然后重新启动服务器即可。 数据目录保持不变-较小的升级就这么简单。

对于PostgreSQL的主要发行版,内部数据存储格式可能会发生更改,从而使升级变得复杂。 将数据移动到新的主要版本的传统方法是转储并重新加载数据库,尽管这可能很慢。 更快的方法是pg_upgrade。 复制方法也可用,如下所述。

新的主要版本通常还会引入一些用户可见的不兼容性,因此可能需要更改应用程序编程。 所有用户可见的更改都在发行说明中列出(附录E); 请特别注意标有“迁移”的部分。 如果要跨多个主要版本进行升级,请确保阅读每个中间版本的发行说明。

谨慎的用户会希望在完全切换之前在新版本上测试其客户端应用程序; 因此,最好同时设置新旧版本的安装。 在测试PostgreSQL重大升级时,请考虑以下类别的可能更改:

​        **Postgres-XL中未测试对pg_upgrade的支持。 建议用户使用其他方法升级到Postgres-XL的下一个主要版本。**

Administration

在每个主要版本中,管理员可用来监视和控制服务器的功能经常更改和改进。

SQL

通常,这包括新的SQL命令功能,并且不包括行为更改,除非发行说明中特别提及。

Library API

通常,像libpq这样的库只会添加新功能,除非发行说明中另有提及。

System Catalogs

系统目录更改通常仅影响数据库管理工具。

Server C-language API

这涉及使用C编程语言编写的后端函数API的更改。 此类更改会影响引用服务器内部后端功能的代码。

##### Upgrading Data via pg_dumpall

一种升级方法是从一个主要PostgreSQL版本中转储数据,然后将其重新加载到另一个主要版本中-为此,您必须使用pg_dumpall之类的逻辑备份工具。 文件系统级备份方法将不起作用。 (有适当的检查可以防止您将数据目录与PostgreSQL的不兼容版本一起使用,因此,尝试在数据目录上启动错误的服务器版本不会造成很大的伤害。)

建议您使用更新版本的PostgreSQL中的pg_dump和pg_dumpall程序,以利用这些程序中可能进行的增强。 当前版本的转储程序可以从追溯7的服务器版本读取数据.

这些说明假定您现有的安装位于/ usr / local / pgsql目录下,并且数据区域位于/ usr / local / pgsql / data中。 适当替换您的路径。

1. 如果要进行备份,请确保未更新数据库。 这不会影响备份的完整性,但是更改后的数据当然不会包括在内。 如有必要,请编辑文件/usr/local/pgsql/data/pg_hba.conf(或等效文件)中的权限,以禁止除您之外的任何人进行访问。 有关访问控制的更多信息,请参见第20章。

  &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值