正文

postgresql13主从搭建Ubuntu

文章摘要

这篇文章详细介绍了如何在Ubuntu系统上使用PostgreSQL 13搭建主从模式数据库。主要内容包括: 1. **环境变量配置**:包括主库和从库的安装路径、配置文件路径、用户密码修改等基本设置。 2. **配置文件修改**:修改`postgresql.conf`和`pg_hba.conf`来设置主从连接,包括允许远程连接、设置复制槽名称等。 3. **远程连接设置**:通过编辑`pg_hba.conf`设置访问规则,允许主库复制到从库。 4. **主从角色创建**:在主库中创建角色`replica`,并设置复制插槽(pgstandby1),使复制变为同步。 5. **备份操作**:使用`pg_basebackup`命令备份主库数据,并在从库上生成`standby.signal`文件。 6. **状态检查和启动**:检查主从运行状态,使用`ps`、`pg_stat_replication`等命令监控系统状态,并通过`systemctl`重启主从服务。 总结:文章通过详细步骤展示了PostgreSQL 13主从模式的安装与配置,适合有一定PostgreSQL经验的用户参考。


目录数据库安装基本设置设置环境变量主库创建流复制的用户从库设置+从主库进行数据流复制从库进行数据流复制之后,重启从库,主从模式正式工作查看主从运行状态主备切换备->主主->备

先安装完数据库以后,安装路径如下:

数据库安装完毕以后,

服务的安装路径为:/usr/lib/postgresql/13/bin/

数据路径为:/var/lib/postgresql/13/main/

配置文件路径为:/etc/postgresql/13/main/

pg_hba.config路径为:/etc/postgresql/13/main/postgresql.conf # postgres用户密码修改 #修改postgres密码为123456 passwd postgres #在输入密码的位置输入密码123456 #切换到postgres用户 su – postgres #修改数据库账号postgres的密码为123456 psql -c “alter user postgres with password ‘123456’;” exit
vi /etc/profile 在最后增加 export PGDATA=/var/lib/postgresql/13/main/ export PATH=$PATH:$HOME/bin:$PGDATA:/usr/lib/postgresql/13/bin 保存后,使环境变量立即生效 source /etc/profile

#设置允许远程连接 #编辑postgresql.conf配置文件 vi /etc/postgresql/13/main/postgresql.conf #增加允许任何用户连接,新增 listen_addresses=’*’ #设置从库复制槽名称为pgstandby1,设置了复制槽名称以后,复制流将由异步变为同步 synchronous_standby_names=’pgstandby1′ #保存修改 Esc :wq

#修改配置文件pg_hba.conf,设置访问规则 #编辑pg_hba.conf配置文件 vi /etc/postgresql/13/main/pg_hba.conf #新增 host all all 0.0.0.0/0 md5 访问规则,并修改加密方式为md5(设置允许任何客户端远程连接) #新增 host replication replica 192.168.31.130/32 trust(设置允许replica用户由主库复制到从库,其中ip为从库的ip) #保存修改 Esc :wq

su – postgres psql -c “CREATE ROLE replica login replication encrypted password ‘replica'”; exit; systemctl restart postgresql

至此,主库设置就完成了,介于将来主库、从库会进行提级和降级操作或者主从互换操作,所以建议对从库也进行相同的主库设置

pg_basebackup -h 192.168.31.129 -D $PGDATA -U replica -P -X stream -R -C -S pgstandby1

其中: 

-h指向主库的ip,

-D指数据从主库复制到从库的路径

-U指用户名,即从库以replica的用户进行流复制

-P表示显示流复制的过程

-X表示复制方式,stream表示以流的方式进行

-R表示创建一个standby.signal文件,该文件作为一个从库的标识文件,存在此文件,则表示从库

-C指定在启动备份之前应创建由–slot选项命名的复制插槽。如果插槽已存在,则会引发错误。即pgstandby1表示插槽的名称。主库、备库指定插槽名称后,流复制为同步复制,否则为异步复制。

systemctl restart postgresql

注:Ubuntu上使用仓库安装的postgresql从库启动,必须要使用systemctl重启,无法通过pg_ctl进行。

这时,就可以看到备库服务器上自动生成了standby.signal文件。同时,也看到在$PGDATA路径下,数据库自动帮我们配置了关于流复制的主库的信息:

$ cat $PGDATA/postgresql.auto.conf # Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. #primary_conninfo=’user=replica passfile=”/var/lib/postgresql/.pgpass” channel_binding=prefer host=192.168.31.129 port=5432 sslmode=prefer sslcompression=0 sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=prefer krbsrvname=postgres target_session_attrs=any’ primary_conninfo=’user=replica host=192.168.31.129 port=5432 application_name=pgstandby1′ primary_slot_name=’pgstandby1′

主从搭建后,主库运行状态为: ps -ef|grep postgres

可以看到有一个walsender在向从库发送

从库运行状态为:

可以看到有一个walreceiver在接收数据,startup recovering 000000030000000000000030也是从库的标识

通过SQL语句查看主从信息:

select * from pg_stat_replication; select application_name, client_addr, sync_state from pg_stat_replication; //查询复制插槽名称 SELECT * FROM pg_replication_slots //下面这句话是删除pgstandby1复制插槽的语句 select pg_drop_replication_slot(‘pgstandby1’);
#在备库下执行命令 pg_ctl promote
# 在数据库的数据路径下$PGDATA,新增一个standby.signal文件 touch standby.signal 同时,也看到在$PGDATA路径下,编辑postgresql.auto.conf的主库的信息: $ vi $PGDATA/postgresql.auto.conf # Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. primary_conninfo=’user=replica host=192.168.31.130 port=5432 application_name=pgstandby1′ primary_slot_name=’pgstandby1′ wq #重启新备库启动 systemctl restart postgresql

以上就是postgresql13主从搭建Ubuntu的详细内容,更多关于postgresql13 主从搭建的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:PostgreSQL教程(十二):角色和权限管理介绍PostgreSQL 角色与用户管理介绍Postgresql源码分析returns?setof函数oracle管道pipelinedPostgreSql?JDBC事务操作方法详解PostgreSQL?数组类型操作使用及特点详解Postgresql数据库角色创建登录详解