PostgreSQL是一个功能非常强大、开源的对象关系型数据库管理系统,本文介绍如何在Linux实例上搭建并使用PostgreSQL。
PostgreSQL可靠性高,支持NoSQL数据类型(JSON/XML/hstore)、GIS地理信息处理,适用于位置应用系统、在线事务处理等场景。
远程连接云服务器并登录,具体操作请参考登录Linux实例小节。
执行以下命令,安装PostgreSQL。
yum update -y yum -y install https://mirrors.ivolces.com/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
执行以下命令,安装客户端包和服务器包。
yum -y install postgresql11 yum -y install postgresql11-server
执行以下命令,初始化PostgreSQL。/usr/pgsql-11/bin/postgresql-11-setup initdb
执行以下命令,启动PostgreSQL服务。systemctl start postgresql-11
执行以下命令,设置PostgreSQL服务开机自启动。systemctl enable postgresql-11
执行以下命令,登录安装服务后自动生成的默认账号postgres。su - postgres
执行以下命令,进入PostgreSQL交互终端。psql
执行以下命令,为默认账号postgres设置密码,增强默认账号的安全性。ALTER USER postgres WITH PASSWORD '密码';
执行以下命令,创建新数据库账号,设置密码并授权。create role 账户名 login replication encrypted password '密码';
输入\q
,按Enter
键退出交互终端。
输入exit
,退出PostgreSQL。
修改pg_hba.conf
配置文件。
vim /var/lib/pgsql/11/data/pg_hba.conf
IPv4 local connections
中添加以下内容。host all all ${从节点VPC IPv4网段} md5 #允许VPC网段中md5密码认证连接 host replication ${账户名} ${从节点VPC IPv4网段} md5 #允许用户从replication数据库进行数据同步
Enter
键,保存文件并返回。修改postgresql.conf
配置文件。
vim /var/lib/pgsql/11/data/postgresql.conf
wal_level = hot_standby # 启用热备模式 synchronous_commit = on # 开启同步复制 listen_addresses = '*' #监听的IP地址,配置为* max_wal_senders = 32 # 同步最大的进程数量 wal_sender_timeout = 60s # 流复制主机发送数据的超时时间 max_connections = 500 # 最大连接数,从库的max_connections必须要大于主库
Enter
键,保存文件并返回。执行以下命令,重启PostgreSQL服务。systemctl restart postgresql-11
执行以下命令,安装PostgreSQL。
yum update -y yum -y install https://mirrors.ivolces.com/postgresql/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
执行以下命令,安装客户端包和服务器包。
yum -y install postgresql11 yum -y install postgresql11-server
执行以下命令,使用pg_basebackup基础备份工具制定备份目录,密码为数据库账户名对应的密码。pg_basebackup -h ${主节点私网IP地址} -U ${数据库账户名} -D /var/lib/pgsql/11/data -X stream -P
执行以下命令,拷贝主节点配置相关文件到备份目录的recovery.conf文件。cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf
修改recovery.conf
配置文件。
vim /var/lib/pgsql/11/data/recovery.conf
standby_mode = on #声明此节点为从库 primary_conninfo = ‘host=主节点私网IP地址 port=5432 user=数据库账号名 password=数据库密码’ #对应主库的连接信息 recovery_target_timeline = ‘latest’ #流复制同步到最新的数据
Enter
键,保存文件并返回。修改postgresql.conf
配置文件。
执行以下命令,打开文件。vim /var/lib/pgsql/11/data/postgresql.conf
按“i”键进入编辑模式,找到以下参数并修改。注意需去掉参数前的“#”。
listen_addresses= '*' # 监听的内网 IP 地址,配置为* max_connections = 600 # 最大连接数,从库的 max_connections 必须要大于主库 hot_standby = on # 开启热备 max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间 wal_receiver_status_interval = 1s # 从节点向主节点报告自身状态的最长间隔时间 hot_standby_feedback = on # 如果有错误的数据复制向主进行反馈
按“Esc”,输入“:wq”,按Enter
键,保存文件并返回。
执行以下命令,修改数据目录的属组和属主。chown -R postgres.postgres /var/lib/pgsql/11/data
执行以下命令,启动PostgreSQL服务。systemctl start postgresql-11
执行以下命令,设置PostgreSQL服务开机自启动。systemctl enable postgresql-11
登录主节点,执行以下命令,可以查看sender进程。ps aux |grep sender
回显例如如下,表示主节点搭建成功。
postgres 17281 0.0 0.0 416252 3644 ? Ss 15:31 0:00 postgres: walsender wxt 192.168.0.127(38924) streaming 0/3000140 root 17291 0.0 0.0 112812 980 pts/0 S+ 15:31 0:00 grep --color=auto sender
登录从节点,执行以下命令,可以查看receiver进程。ps aux |grep receiver
回显例如如下,表示从节点搭建成功。
postgres 16930 0.0 0.0 422320 3668 ? Ss 15:31 0:00 postgres: walreceiver streaming 0/3000140 root 16942 0.0 0.0 112812 976 pts/0 S+ 15:31 0:00 grep --color=auto receiver
登录主节点,执行以下命令,从主库查看从库状态。
执行以下命令,登录安装服务后自动生成的默认账号postgres。su - postgres
执行以下命令,进入PostgreSQL交互终端。psql
执行以下命令,查看从库状态。select * from pg_stat_replication;
回显如下。
在主库新建一个库,验证从库可以自动同步。
执行以下命令,新建主库。create database testdb;
登录从节点,进入PostgreSQL交互终端,执行以下命令,查看从库。\l
回显如下,表示从库同步成功。