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

PostgreSQL学习笔记(6)之搭建后备服务器

北重楼 2021-04-02
840

前面有提到过,我往银行存入100块钱,在银行系统的数据库保存的是我的存款记录银行需保证我存入的100块钱不丢,那就需要保证我的存款记录在数据库不丢失

数据库在长期的运行中可能会遭遇到不同的故障场景,比如机房断电,网络中断,设备故障等等,数据库为了保障故障后业务数据不丢失,有很多成熟的解决方案,pg作为业界牛逼的开源数据库,提供了高可用、负载均衡和复制特性矩阵。

今天学习的是特性矩阵中的预写式日志传送,通过该特性创建一个后备服务器来保障数据库的高可用性。

后备服务器作为主服务器的数据备份,可以保障数据不丢,而且在主服务器发生故障后可以提升为主服务器继续提供服务。

实际操作

1、参数配置

首先配置主机的postgresql.conf

    vim usr/local/pgsql/data/postgresql.conf
      listen_addresses = '*'
      wal_level = hot_standby
      max_wal_senders = 10
      max_replication_slots = 10
      hot_standby = on # 主要用来备库配置,主库配置无影响
      wal_keep_size = 1GB #pg13后d额配置,之前是wal_keep_segments
      wal_log_hints = on #pg_rewind必须参数
      full_page_writes = on

      然后配置主机的pg_hba.conf

        vim usr/local/pgsql/data/pg_hba.conf
        host    replication     all      0.0.0.0/0     trust #新增

        2、使用pg_basebackup创建备机数据库

          ./pg_basebackup -D ../data1 -U postgres  -Fp -X stream -R  -P -v -p54321 -h 127.0.0.1

          解释一下常用参数

          pg_basebackup被用于获得一个正在运行的PostgreSQL数据库集簇的基础备份。

          -D directory

          将输出写到哪个目录。如果必要,pg_basebackup将创建该目录及任何父目录。

          -Fp

          把输出写成平面文件,使用和当前数据目录和表空间相同的布局。

          -X stream

          在备份被创建时通过流复制传送预写式日志。这将开启一个到服务器的第二连接并且在运行备份时并行开始流传输预写式日志。

          -R

          --write-recovery-conf

          在输出目录中(或者当使用 tar 格式时在基础归档文件中)建立 standby.signal 并附加连接设置到postgresql.auto.conf  来简化设置一个后备服务器。postgresql.auto.conf文件将记录连接设置(如果有)以及pg_basebackup所使用的复制槽,这样流复制后面就会使用相同的设置。

          -P

          --progress

          启用进度报告。

          -v

          --verbose

          启用冗长模式,可以理解为输出备份过程数据。


          3、启动备机数据库服务器

            echo "port=54322" >> /usr/local/pgsql/data1/postgresql.conf
            ./pg_ctl -D /usr/local/pgsql/data1 start

            4、检查

            登录主机查看流复制关系

              ./psql -Upostgres -dpostgres -p54321
              select * from pg_stat_replication;

              主机插入数据

                ./psql -Upostgres -dpostgres -p54321
                create table t1 (id int ,name varchar);
                insert into t1 values (1,'cli');

                备机查询数据,数据同步成功

                  ./psql -Upostgres -dpostgres -p54322
                  select * from t1;

                  至此,一个简单的后备服务器就搭建好了。

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

                  评论