暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL双机热备篇

神州数码云基地 2021-08-23
2380

PostgreSql双机热备,数据库部署零基础的福音从这里开始

1.前言


        长久以来数据在企业发展中都起着至关重要的作用,在网络科技高度发达的今天,系统业务复杂度与日俱增,数据量也成几何式增长,那么数据灾备方案显得越来越重要,PostgreSql主从复制是一种高可用解决方案,可以实现读写分离,实时备份,PostgreSql主从复制是基于xlog来实现的,主库开启日志功能,从库根据主库xlog来完成数据的同步。本篇就和大家一起分享一下PostgreSql双机热备的部署全过程。

       开始之前大家请记先住主从复制需要注意的几个地方:


  1. 启动从库之前,不能执行初始化,若已经初始化了需要删掉对应的data文件。

  2. 启动从库之前,需要通过base_backup从主服务器上同步配置与数据。

  3. 启动从库之前,需要对同步之后的配置文件进行修改。

  4. 启动从库之前,需要设置一个恢复的配置文件。

  5. 从库只能读,不能写。


2.postgreSql编译安装


2.1 去官网选择一个合适的版本下载源码包:

https://www.postgresql.org/ftp/source/


2.2 我们在/usr/local/下创建一个pgsql目录 并将源码包上传到这个目录下面:


       cd usr/local/

       mkdir pgsql

        rz

        tar -zxvf postgresql-10.16.tar.gz



2.3 解压完成后进入进入源码解压后的目录,然后进行检查安装环境,当初出现"GNUmakefile"时表示成功了,若期间出现报错可能是有些插件没有安装导致的,安装对对应插件即可。


        cd postgresql-10.16/

        ./configure --prefix=/usr/local/pgsql(检查安装环境,后面是安装路径)


        我在检查后出现过报错,通过安装以下工具处理的,你要是没有报错请忽略(安装:yum install gcc,yum -y install -y readline-devel,yum install zlib-devel)



2.4 执行make命令编译源码


       make(当出以下一段话时表示编译成功)


       

2.4 安装


       make install (当出现下面这段话时表示安装完成)



 2.5 创建一个普通用户,因为默认超级用户(root)不能启动postgresql,所以需要创建一个普通用户来启动数据库


        groupadd postgres

        useradd -g postgres postgres

        passwd postgres

        在/usr/local/pgsql下创建数据目录data:

        mkdir -p data

        赋予postgres用户整个pgsql目录的权限

        chown -R postgres:postgres usr/local/pgsql


2.6 以postgres用户来初始化pgsql数据库(后面相关操作都用postgres 用户)


       su -  postgres

       /usr/local/pgsql/bin/initdb -D usr/local/pgsql/data start (第一个路径是pgsql的初始化指令initdb的路径 第二个路劲是我们创建data目录用于存放pgsql的相关配置和数据)


         当出现一下这段话时表示初始化成功,并可根据最后一句命名启动数据库   



    2.7 修改配置文件实现账号远程连接


           vi usr/local/pgsql/data/postgres.conf(配置数据库监听的ip * 表示所有 ,开启端口5432,若端口被占用修改成其他的即可)



vi usr/local/pgsql/data/pg_hba.conf(在ipv4 里新增一条配置进行客户端认证)



上面两配置文件修改好了之后执行下面的命令就可以启动pgsql了,出现server started时表时启动成功


/usr/local/pgsql/bin/pg_ctl -D usr/local/pgsql/data start



接下来我们还需要一个创建一个账号用于远程登陆


su - postgres (切换到我们创建的postgres用户,已postgres身份进行后续的数据库操作)


psql(执行该命令 进入数据库)


alter user postgres with password ‘postgres’;(修改数据库用户postgres的密码,改好了之后就可以用navicat进行登陆了)



=============================================

至此pgsql的安装已经完成了,主库按照以上步骤完成安装启动,从库只需执行到步骤2.5即可,从库后续步骤依赖主库的配置=============================================




3.配置主从关系(主机:10.0.23.199  备机:10.0.42.38)


3.1 修改主库配置文件/user/local/pgsql/data/postgresql.conf ,添加以下参数,修改完后重启数据库


       su - postgres

       vi postgresql.conf

       listen_addresses="*"

       wal_level=hot_standby  #wal归档复制级别为hot_standby异步流复制

       max_wal_senders=2  #主库可以最多有多少个并发的standby数据库

       wal_keep_segments=64  #指定pg_xlog目录保存的wal log的最小数量。每个文件一般是       16M。

       max_connections=500 


       /usr/local/pgsql/bin/pg_ctl -D -D usr/local/pgsql/data restart



3.2 重启好了之后我们需要在主库创建一个用户做主从复制


        su - postgres

       psql(执行该命令 进入数据库)

       create role data_backup login replication encrypted password '123456';

       用户创建好了之后修改主库配置文件/use/local/pgsql/pg_hba.conf添加一条从库的ip,user使用我们刚创建的data_backup,修改完后重启主库

       vi pg_hba.conf

       /usr/local/pgsql/bin/pg_ctl -D -D usr/local/pgsql/data restart


               

========至此主库的相关配置已经完成,下面开始配置从库========




3.3 修改主库配置文件postgresql.conf添加一下参数,修改完后重启数据库


      前面注意事项里面提到,不能初始化从库,因为我们需要首先从主库备份数据,备份之后,从库的data里面的数据和配置信息就和主库一致了

      切换到postgres用户,进行数据备份和启动操作

      通过base_backup命令将主库的数据备份到从库

   /usr/local/pgsql/bin/pg_basebackup -h 10.0.23.199 -p 5432 -U  data_backup -F p -P -D usr/local/pgsql/data


(注:pg_basebackup命令路径 -h 主机ip -p 主库端口 -U 主库用户名 -F p -P -D 从库data路径)


   



3.4 postgresql.conf是从主库同步过来的,这里需要修改一些配置,改为从库的配置


       vi usr/local/pgsql/data/postgresql.conf

       #wal_level=hot_standby #从库不需要这个配置 下面两个参数也注释掉

       #max_wal_senders=2 

       #wal_keep_segments=64 

       hot_standby=on #开启hot_standby模式

       max_standby_streaming_delay=30s #可选,流复制最大延迟

       wal_receiver_status_interval=10s #可选,向主库报告状态的最大间隔时间

       hot_standby_feedback=on #可选,查询冲突时向主库反馈

       max_connections=1000 #最大连接数一般大于主库就行


     

3.5 创建恢复配置recovery.conf文件


这个文件在安装postgresql时,会生到/usr/local/pgsql/share/postgresql目录下,名字是recovery.conf.sample。我们复制并修改名称recovery.conf并放置在/usr/local/pgsql/data目录下,并修改添加其配置:recovery_target_timeline = 'latest'  #从主库恢复最新的数据


standby_mode = on  #开启备库

primary_conninfo = 'host=10.0.23.199 port=5432 user=data_backup password=123456' #连接主库



3.6 启动从库


       /usr/local/pgsql/bin/initdb -D usr/local/pgsql/data start


       


========至此主库和从库的相关配置已经完,下面进行验证========


4.主从复制验证


ps -ef | grep 'postgres'


主机会增加一个wal sender进程 并连接着备机的ip



备机会增加一个wal receiver进程



最后在主库中验证对数据进行增删改操作时,看从库中的数据是否已同步过来,若有问题则需要重新重点检测一下主库和从库的postgresql.conf  pg_hba.conf  recovery.conf  这几个配置文件是否配置有问题,至此PostgreSql双机热备全部完成



文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论