postgres.md 1.9 KB

修改储存路径

systemctl edit postgresql-13.service
[Service]
Environment=PGDATA=/home/postgresql/13/data/

添加postgres账户环境变量

vi .bash_profile
PGDATA=/home/postgresql/13/data/
vi .pgsql_profile
PATH=/usr/pgsql-13/bin:$PATH
export PATH

配置读写分离

  1. 登录postgres账户,修改主服务器配置文件:postgresql.conf

    listen_addresses= '*'
    wal_level = replica
    archive_mode = on
    archive_command = 'cp %p /data/postgresql/archive/%f'
    max_wal_senders= 10
    wal_keep_size = 1000        # in megabytes; 0 disables
    max_slot_wal_keep_size = 10 # in megabytes; -1 disables
    wal_sender_timeout = 120s   # in milliseconds; 0 disables
    hot_standby = on
    
    1. 新建用户用于主从复制
    create user replica REPLICATION  LOGIN ENCRYPTED  PASSWORD 'asdf*123';
    
  2. 将主从IP添加到hba配置文件:pg_hba.conf

    host    replication     replica         192.168.0.0/24 md5
    host    all     all         0.0.0.0/0           md5
    
  3. 在从服务器新建文件夹:

   mkdir -p /home/postgresql/13/data/
  1. 在从服务器执行命令在线热备份
   pg_basebackup -h 192.168.0.10 -U replica -F p -X s -v -P -R -D $PGDATA
  1. 在从服务器执行命令启动服务器

    pg_ctl start
    
    1. 主服务器测试

      psql
      
      select client_addr,sync_state from pg_stat_replication;
      

      查看是否有从服务器连接

      备份恢复

    # 备份
    pg_dumpall -h 127.0.0.1 -U postgres > /var/lib/pgsql/bakup1221.bakup
    # 恢复服务器从备份服务器下载备份文件
    scp postgres@192.168.0.3:"/var/lib/pgsql/bakup1221.bakup" /var/lib/pgsql/
    # 恢复,使用postgres账号
    psql -f bakup1221.bakup postgres