Bootstrap

【Linux成长之路】CentOS7配置postgresql 9.4.4数据库主从复制_主从搭建配置

目录

前言

postgresql数据库安装

postgresql主库配置

postgresql备库配置


前言

本篇文章主要针对在Linux_centos7系统中postgresql数据库如何做主备。

postgresql数据库安装

根据上篇文章安装postgresql数据库

链接:【Linux成长之路】CentOS7安装postgresql 9.4.4数据库_源码版编译及run版安装方式

postgresql主库配置

1.进入数据库中data目录下:

1.1修改配置文件pg_hba.conf

vi pg_hba.conf

 1.2在文件最下方加入两行:postgres是pg库默认管理员账号,ip改成备库的ip地址

host    replication     postgres            192.168.32.4/24          trust
host    all             postgres            192.168.32.4/24          trust

 1.3修改配置文件postgresql.conf

vi postgresql.conf

listen_addresses = '*'
wal_level = hot_standby  # 这个是设置主为wal的主机
max_wal_senders = 2 # 这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个
wal_keep_segments = 7 # 设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s # 设置流复制主机发送数据的超时时间
max_connections = 100 # 这个设置要注意下,从库的max_connections必须要大于主库的

 1.4重启服务

systemctl restart postgresql-9.4

1.5主库配置到此为止,下面进行备库的配置。

postgresql备库配置

1.备库的安装方式和主库一样:

 链接:【Linux成长之路】CentOS7安装postgresql 9.4.4数据库_源码版编译及run版安装方式

 1.1安装完成后查询备库是否在运行:

ps -ef | grep postgres

1.2如果服务运行中先停掉

systemctl stop postgresql-9.4

1.3重置data目录

1.3.1pg备库安装完成后,删掉已有的data目录

rm -rf data

1.3.2再重新创建一个空的data目录

mkdir data

1.3.3给data赋权,不然权限不够可能会无法启动服务

chmod 700 data

1.3.4用户赋权

chown -R postgres:postgres /opt/PostgreSQL/

1.4同步主库的数据文件(这里需要切换postgres用户执行)

pg_basebackup -F p --progress -D /opt/PostgreSQL/9.4/data -h 192.168.32.1 -p 5432 -U postgres --password

1.4.1输入密码:主库data目录下的所有文件都同步过来了

1.5修改备库data目录下postgresql.conf文件

max_connections = 1000 # 一般查多于写的应用从库的最大连接数要比较大
hot_standby = on  # 说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s  # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on # 如果有错误的数据复制,是否向主进行反馈

1.6创建recovery.conf文件

1.6.1从模板文件拷贝到data目录下

cp /opt/PostgreSQL/9.4/share/postgresql/recovery.conf.sample /opt/PostgreSQL/9.4/data/recovery.conf

1.6.2修改参数如下:

standby_mode = on  # 这个说明这台机器为从库
primary_conninfo = 'host=192.168.32.1 port=5432 user=postgres password=Admin123'  # 这个说明这台机器对应主库的信息
recovery_target_timeline = 'latest' # 这个说明这个流复制同步到最新的数据

1.7启动备库

systemctl start postgresql-9.4

1.8验证是否正常同步

1.8.1主库查看

select client_addr,sync_state from pg_stat_replication;

1.8.2通过查看进程

ps aux | grep postgres

1.8.2.1主节点有如下进程

postgres  74442  0.0  0.2 258652  2424 ?        Ss   15:02   0:00 postgres: wal sender process replica 192.168.52.102(58199) streaming 0/30101D0

1.8.2.1从节点有如下进程 

postgres   1676  0.0  0.0 113328   748 ?        Ss   15:01   0:00 postgres: stats collector process

1.9通过主库增删改查验证

进入数据库命令行输入:

create table t_user(id int primary key,name varchar(30));

 postgresql主从搭建完毕。

;