gpt4 book ai didi

PostgreSQL 设置 PGDATA 变量

转载 作者:行者123 更新时间:2023-11-29 12:33:23 25 4
gpt4 key购买 nike

服务器:Ubuntu 服务器 14 lts + PostgreSQL 9.2我想使用 drbd 创建集群数据库,但我无法在没有集群初始化的情况下设置 PGDATA。我只需要说 pgsql 使用来自 drbd 磁盘的数据。我该怎么做?

示例 1:

mkdir /cluster/var/lib/pgsql -p
chown postgres:postgres /cluster/var/lib/pgsql -R
cp -R /var/lib/pgsql /cluster/var/lib/pgsql

edit /etc/init.d/postgresql :
PGDATA=/cluster/var/lib/pgsql/data
...
PGLOG=/cluster/var/lib/pgsql/pgstartup.log

/etc/init.d/postgresql start

在 postgresql 8.3 中它可以工作,但在 9.2 中我无法更改/etc/init.d/postgresql 中的 pgdata,我需要找到另一个文件并设置 pgdata,但是,令人惊讶的是,它什么都不做。

示例 2:PGD​​ATA——指定要存放数据库簇的目录;可以使用 -D 选项覆盖。

好的,让我们开始吧:--pgdata=目录是的,它的作品!但是现在我们有 postgresql-xc 和类似“postgresql 不知道这个用户 - postgresql”的错误。drbd 开始从集群复制数据,但 postgresql 也启动它。

更新 1:

root: initdb --pgdata=/home/username/dir
~initdb not install~bla-bla-bla~use apt-get install postgres-xc

UPD2:

$: /usr/lib/postgresql/9.3/bin/initdb --pgdata=/whateveryouwant

#now you can run postgresql only one way:

$: /usr/lib/postgresql/9.3/bin/postgres -D /see_up

#then:

LOG: database system was shut down at 2014-09-26 15:56:33 YEKT
LOG: database system is ready to accept connections
LOG: autovacuum launcher started

#aaaaaaaaaaand...nothing. just empty console, ^C stopping postgres
#another SSH connect:

$: ps-ela

S 1000 5995 5217 0 80 0 - 62202 poll_s pts/0 00:00:00 postgres
1 S 1000 5997 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 5998 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 5999 5995 0 80 0 - 62202 poll_s ? 00:00:00 postgres
1 S 1000 6000 5995 0 80 0 - 62415 poll_s ? 00:00:00 postgres
1 S 1000 6001 5995 0 80 0 - 26121 poll_s ? 00:00:00 postgres

#is it ok? because...

$: /etc/init.d/postgresql status
9.3/main (port 5432): down

最佳答案

在 Ubuntu 中,要为 PostgreSQL 实例使用特定的数据目录,您只需要做:

# pg_createcluster --datadir=/path/to/the/directory 9.3 nameofcluster

您不需要也不想在任何地方摆弄$PGDATA。参见 pg_createcluster联机帮助页。

如果使用 drdb 复制集群中的数据目录,请记住术语 cluster用 PostgreSQL 的说法有不同的含义:它始终是一个数据库集群,这意味着所有数据库都由具有其唯一数据目录的特定 PostgreSQL 实例提供服务。这不同于 drdb 集群,后者是机器集群。

PostgreSQL 集群的数据目录根本不能共享,从这个意义上说,只有在一台机器上运行的 PostgreSQL 的一个特定实例可以写入它,否则会发生损坏。

如果drdb配置符合这个要求,就可以使用,否则不能。您可能还会质疑为什么在 PostgreSQL 有 built-in replication options 时首先使用 drdb从 8.3 版开始,它们比纯磁盘复制更专业,更适合数据库。

关于PostgreSQL 设置 PGDATA 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com