为两台centos下的postgres配置主从同步

一、环境准备:

操作系统

IP

主:centos7.5 192.168.1.132
从:centos6.4 192.168.1.125

二、postgres软件准备。
           1、下载地址: https://www.postgresql.org/ftp/source/https://www.postgresql.org/ftp/source/          
           2、安装依赖

                 yum install readline
                 yum install gcc
                 yum -y install -y readline-devel
                 yum install zlib-devel

        我这里用的是postgres一键安装包。
        直接执行:
        postgres配置文件:/usr/local/pgsql/data/
        postgres日志文件:/usr/local/pgsql/data/pg_log/

 ./extradius-pgsql9.3.2-centos6.x-x86_64.run

   

 三、主服务器配置。

        1、修改主服务器配置文件 

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

wal_level = replica                                   //163行   
archive_mode = on                                     //192行   打开存档模式
archive_command = 'cp %p /opt/postgresql-11.6/data/pg_archive/%f'     // 194行  定义存档命令 

##%p = path of file to archive
##%f = file name only


max_wal_senders = 6                                 //210行  最多发送量
wal_keep_segments = 10240                           //212行
wal_sender_timeout = 60s                            //213行

       2、修改pg_hba.conf,允许192.168.1.125用户来同步

               vim  /usr/local/pgsql/data/pg_hba.conf

               IPv4 local connections下方增加

#允许200连接到主服务器:
host replication replica 192.168.1.125/24 md5

#允许200使用replica用户来复制:
host     all     replica 192.168.1.125/24 trust

如图:

        3、创建归档文件

                mkdir -p /usr/local/pgsql/data/pg_archive

         4、重启数据库

                1)、配置postgres环境变量以支持psql、pg_ctl等命令。
                        在/etc/profile文件中配置pgsql环境变量:
                        export PGDATA=/usr/local/pgsql/data
                        export PGHOST=127.0.0.1
                        export PGDATABASE=postgres
                        export PGUSER=postgres
                        export PGPORT=5432
                        PATH=/usr/local/pgsql/bin:$PATH
                        export PATH
                        重新加载文件:source /etc/profile,即可使配置生效。
                2)重启数据库服务。      

[postgres@bogon /]$ pg_ctl /usr/local/pgsql/data/ reload

四、配置从服务器。

        1、停止postgres服务。

[postgres@localhost data]$ pg_ctl -D /opt/postgresql-11.6/data/ -l /opt/postgresql-11.6/log/postgres.log stop

        2、删除data目录下所有数据。

[root@localhost pg_log]#  rm -rf /usr/local/pgsql/data/*

        3、修改/usr/local/pgsql属主与data目录访问权限。

[root@localhost pg_log]# chown -R postgres:postgres /opt/postgresql-11.6
[root@localhost pg_log]# chmod 0700 /opt/postgresql-11.6/data

        4、同步主数据库的文件

[root@localhost pg_log]# pg_basebackup -Fp --progress -D /opt/postgresql-11.6/data -h 192.168.1.130 -p 5432 -U repl --password

         5、拷贝recovery.conf模板文件到data目录并修改。

# 这个说明这台机器为从库
standby_mode = on                                 // 108行

# 这个说明这台机器对应主库的信息
primary_conninfo = 'host=192.168.1.130 port=5432 user=repl password=repl'        //115行

# 这个说明这个流复制同步到最新的数据
recovery_target_timeline = 'latest'                 //  88行

        6、修改从库postgresql.conf文件

#一般查多于写的应用从库的最大连接数要比较大
max_connections = 1000                             //64行

#说明这台机器不仅仅是用于数据归档,也用于数据查询
hot_standby = on                                      //228行

#数据流备份的最大延迟时间
max_standby_streaming_delay = 30s                  //233行

#多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
wal_receiver_status_interval = 1s                  //236行

#如果有错误的数据复制,是否向主进行反馈
hot_standby_feedback = on                          //238行

         7、修改/usr/local/pgsql属主与权限,data的属主与权限。(参考主数据库)

         8、从数据库创建repliac用户。

[postgres@bogon bak]$ psql -U postgres
psql (9.3.2)
Type "help" for help.

postgres=#
postgres=#
postgres=# CREATE ROLE repl login replication encrypted password 'repl';
CREATE ROLE
postgres=# 

        9、重启数据库。

五、验证是否同步。

        在主服务器(192.168.1.132)上插入数据或删除数据,
        在从服务器(192.168.1.125)上能看到相应的变化。
        从服务器(192.168.1.125)上只能查询,不能插入或删除。

Guess you like

Origin blog.csdn.net/weixin_43547718/article/details/122496174