背景:由于业务需求,有时候可能需要在一台机器上安装两个相同的数据库,区别是端口号不同~(以下是机器上已有一台数据库,只记录创建第2个数据库的过程)
步骤:
1、首相需要创建一个存放数据的文件夹
mkdir pgdata
2、然后切换到postgres用户下
su - postgres
如果这一步出现This account is currently not available.则需要修改 /etc/passwd,将末尾的/sbin/nologin修改为/bin/bash, 修改方式如下:
vi /etc/passwd,找到postgres,直接修改后缀,然后保存。再次su - postgres,成功切换到postgres用户
3、执行initdb,初始化数据库,会生成配置文件
/usr/lib/test/initdb -D /pg/pgsql/pgdata
/usr/lib/test/initdb 为系统安装的initdb 执行文件目录, /pg/pgsql/pgdata是第一步创建的数据文件夹目录。
这一步如果出现fixing permissions on existing directory /pg/pgsql/pgdata ... initdb: error: could not change permissions of directory "/pg/pgsql/pgdata": Operation not permitted,说明postgres用户没有操作该文件夹的权限,解决方案是:
首先确认该文件夹的所有者:
ls -la
显示该目录的所有者是root,修改该文件夹的所有者为postgres ,之后再次执行initdb
chown -R postgres /pg/pgsql/pgdata
4、切换到第一步创建的pgdata 目录下,修改配置文件 postgresql.conf
在修改前最好先备份一份,防止自己改错~
重点修改以下几个参数:
data_directory = '/pg/pgsql/pgdata' 第一步创建的文件夹目录
hba_file = '/pg/pgsql/pgdata/pg_hba.conf' initdb生成的pg_hba.conf文件路径
ident_file = '/pg/pgsql/pgdata/pg_ident.conf' initdb生成的pg_hba.conf文件路径
listen_addresses = '*'
port = 5433 修改成自己设定的端口号
保存,退出。
5、启动数据库:
su -s /bin/bash -c '/usr/lib/test/bin/pg_ctl -D /pg/pgsql/pgdata -l logfile start' postgres
如果出现server started,则数据库创建成功