irpas技术客

从PostgreSql12.2 Linux环境安装到异步流主从复制_G.B lee

网络 4716

环境准备

系统版本: Red Hat Enterprise Linux 7.1(与CentOS无差异) 软件版本: postgresql12.2 postgre下载地址: http://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2 注: postgre官方提供了yum安装方式、 通过安装存储库直接yum安装postgre,本次采用的是本地安装方式。

安装常用命令 #active (running)表示已开启 查看防火墙状态 : systemctl status firewalld.service 启动防火墙 :systemctl start firewalld.service #不建议养成关闭防火墙调试的习惯 关闭防火墙 :systemctl stop firewalld.service 重启防火墙 : firewall-cmd --reload 查询已经开放的端口 :firewall-cmd --list-port 查询某个端口是否开放 :firewall-cmd --query-port=5432/tcp #需要远程postgresql,需开放5432端口 开启端口 :firewall-cmd --zone=public --add-port=5432/tcp --permanent #查看端口状态 netstat -tunlp | grep 端口号 开始安装

根目录下创建pgsoft文件夹

mkdir /pgsoft

将postgre安装文件上传到文件夹下或直接下载至/pgsoft

cd /pgsoft wget https://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2 #如果提示证书过期 请在命令后添加 --no-check-certificate

解压postgre安装文件

tar xjvf postgresql-12.2.tar.bz2 #如果报错提示 #tar (child): bzip2:无法 exec: 没有那个文件或目录 #tar (child): Error is not recoverable: exiting now #tar: Child returned status 2 #tar: Error is not recoverable: exiting now #需安装bzip2包 #yum -y install bzip2

解压完成后出现potgresql-12.2文件夹 创建安装目录/pgsoft/pgsql 切换至potgresql-12.2文件夹下

mkdir pgsql cd postgresql-12.2

执行 ./configure 选择安装目录

./configure --prefix=/pgsoft/pgsql#安装目录为/pgsoft/pgsql

编译时可能出现报错、 根据提示安装相关依赖 库(可选)

yum install gcc yum install ncurses* readline* zlib* -y

重新执行

./configure --prefix=/pgsoft/pgsql#安装目录为/pgsoft/pgsql

make

时间较长,一直等着即可,出现All of PostgreSQL successfully made. Ready to install.即表示成功

make install

出现PostgreSQL installation complete.即表示成功 安装完成后检查pgsql目录可以看到对应文件

cd /pgsoft/pgsql ll

创建用户及设置/pgsoft/pgsql目录文件属组

useradd postgres #增加新用户,系统提示要给定新用户密码 passwd postgres #给postgres用户设置密码(可选) mkdir /pgsoft/pgsql/data #创建数据库目录 chown -R postgres:postgres /pgsoft/pgsql#修改所有者与组

切换postgres用户并初始化数据库

su - postgres #切换用户 /pgsoft/pgsql/bin/initdb -D /pgsoft/pgsql/data/ #初始化数据库

启动数据库并创建数据库

/pgsoft/pgsql/bin/pg_ctl -D /pgsoft/pgsql/data -l logfile start #启动数据库服务 /pgsoft/pgsql/bin/createdb gbleedb #数据库名为zyzpgdb /pgsoft/pgsql/bin/psql gbleedb #(进入数据库内部) 配置环境变量

编辑 /etc/profile 文件在末尾添加postgre环境变量并生效

vi /etc/profile #添加在profile文件末尾 #postgre POSTGRE_HOME=/pgsoft/pgsql PATH=$PATH:$POSTGRE_HOME/bin export PATH POSTGRE_HOME #保存退出后生效配置文件 source /etc/profile

文件生效后可直接调用pg命令

远程访问设置

修改配置文件postgresql.conf

vi /pgsoft/pgsql/data/postgresql.conf

添加

listen_addresses ='*'

修改配置文件pg_hba.conf(可以设置所有网段IP可以访问,只能做测试搭建使用,生产环境指定访问IP。turst是指不需要登录密码,生产环境需改为 md5)

vi /pgsoft/pgsql/data/pg_hba.conf

添加

# IPv4 remote address connections: host all all 0.0.0.0/0 trust

重启postgre服务

su postgres /pgsoft/pgsql/bin/pg_ctl restart -D /pgsoft/pgsql/data/

搭建主从复制

保证有两台机器重复postgresql单节点安装完毕 主机地址 192.168.200.94(主) 192.168.200.99(从)

主从搭建(主节点配置192.168.200.94):

设置好用于复制的访问权限非常重要,这样只有受信的用户可以读取 WAL 流,因为很容易从 WAL 流中抽取出需要特权才能访问的信息。后备服务器必须作为一个超级用户或一个具有REPLICATION特权的账户向主服务器认证。推荐为复制创建一个专用的具有REPLICATION和LOGIN特权的用户账户。虽然REPLICATION特权给出了非常高的权限,但它不允许用户修改主系统上的任何数据,而SUPERUSER特权则可以。

主节点上向pg_hba.conf文件增加下列行:

vi /pgsoft/pgsql/data/pg_hba.conf host replication all 192.168.200.99/24 trust

主从搭建(从节点配置192.168.200.99)

关闭postgre服务

su - postgres pg_ctl -D /pgsoft/pgsql/data/ stop

删除数据文件

rm -rf /pgsoft/pgsql/data/

从主库拉取数据文件

pg_basebackup -h 192.168.200.94 -U postgres -F p -P -R -D /pgsoft/pgsql/data

查看数据文件并修改所属组

cd /pgsoft/pgsql/ ll chown -R postgres:postgres data/

修改postgresql.conf

vi /pgsoft/pgsql/data/postgresql.conf  hot_standby = on

查看 postgresql.auto.conf里面存放了主库连接信息

vi /pgsoft/pgsql/data/postgresql.auto.conf

注意: 之前版本 PostgreSQL 的流复制备库是通过在 $PGDATA 目录中创建 recovery.conf 文件来标识的,这是流复制部署的重要文件,若 $PGDATA 目录下不存在此文件,数据库无法以流复制备库角色启动。 12 版本开始 recovery.conf 文件不再支持,若数据目录中存在此文件,数据库启动报错。 启动 postgre服务

pg_ctl -D /pgsoft/pgsql/data/ start

查看流复制的信息可以使用主库上的视图

select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;

绑定成功就可以去主节点增删改操作测试同步情况啦~注:从节点只能做查询操作。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #从PostgreSql122 #环境准备系统版本Red #Hat #Enterprise #Linux