首页主机资讯Debian PostgreSQL如何实现数据同步

Debian PostgreSQL如何实现数据同步

时间2025-11-07 20:57:04发布访客分类主机资讯浏览915
导读:在Debian系统上实现PostgreSQL数据库的数据同步,可以采用多种方法。以下是一些常见的方法: 1. 使用pg_dump和pg_restore 这是最基本的备份和恢复方法。 备份数据库 pg_dump -U username -d...

在Debian系统上实现PostgreSQL数据库的数据同步,可以采用多种方法。以下是一些常见的方法:

1. 使用pg_dump和pg_restore

这是最基本的备份和恢复方法。

备份数据库

pg_dump -U username -d database_name -F c -b -v -f backup_file.dump

恢复数据库

pg_restore -U username -d database_name backup_file.dump

2. 使用pg_basebackup和pg_rewind

这种方法适用于物理复制,可以实现主从同步。

主服务器设置

  1. 编辑postgresql.conf文件,启用归档模式和WAL日志记录:

    wal_level = replica
    max_wal_senders = 10
    wal_keep_segments = 64
    archive_mode = on
    archive_command = 'test ! -f /var/lib/postgresql/9.x/main/archive/%f &
        &
         cp %p /var/lib/postgresql/9.x/main/archive/%f'
    
  2. 编辑pg_hba.conf文件,允许从服务器连接:

    host    replication     replica_user     192.168.1.100/32    md5
    
  3. 重启PostgreSQL服务:

    sudo systemctl restart postgresql
    
  4. 创建一个基础备份:

    pg_basebackup -U username -D /var/lib/postgresql/9.x/main -X stream -P --wal-method=stream
    

从服务器设置

  1. 停止PostgreSQL服务:

    sudo systemctl stop postgresql
    
  2. 删除现有的数据目录(如果有的话):

    sudo rm -rf /var/lib/postgresql/9.x/main
    
  3. 从主服务器复制基础备份:

    sudo rsync -a --progress /var/lib/postgresql/9.x/main/ replica:/var/lib/postgresql/9.x/main/
    
  4. 编辑postgresql.conf文件,设置primary_conninfo

    primary_conninfo = 'host=master_ip port=5432 user=replica_user password=password'
    
  5. 编辑pg_hba.conf文件,允许从服务器连接:

    host    replication     replica_user     192.168.1.100/32    md5
    
  6. 启动PostgreSQL服务:

    sudo systemctl start postgresql
    

3. 使用pglogical

pglogical是一个逻辑复制工具,适用于更复杂的场景。

安装pglogical

sudo apt-get install pglogical

配置主服务器

  1. 创建一个发布(publication):
    SELECT pglogical.create_node(
        node_name := 'primary',
        dsn := 'host=master_ip dbname=database_name user=username password=password'
    );
        
    SELECT pglogical.create_replication_set('default_set');
        
    SELECT pglogical.replication_set_add_table(
        set_name := 'default_set',
        table_name := 'table_name',
        if_not_exists := TRUE
    );
        
    

配置从服务器

  1. 创建一个订阅(subscription):
    SELECT pglogical.create_node(
        node_name := 'replica',
        dsn := 'host=replica_ip dbname=database_name user=username password=password'
    );
    
    SELECT pglogical.create_subscription(
        subscription_name := 'default_subscription',
        provider_dsn := 'host=master_ip dbname=database_name user=username password=password',
        replication_sets := '{
    default_set}
        ',
        forward := TRUE,
        create_slot := TRUE,
        slot_name := 'replication_slot'
    );
        
    

4. 使用Patroni

Patroni是一个高可用性和故障转移管理工具,可以与PostgreSQL结合使用。

安装Patroni

sudo apt-get install patroni

配置Patroni

创建一个patroni.yml文件,配置主服务器和从服务器。

scope: postgresql
name: master
restapi:
  listen: 0.0.0.0:8008
  connect_address: master_ip
etcd:
  host: etcd_ip:2379
  ttl: 30
  loop_wait: 10
  retry_timeout: 10
  maximum_lag_on_failover: 1048576
  postgresql:
    use_pg_rewind: true
    use_slots: true
    parameters:
      wal_level: replica
      max_wal_senders: 10
      wal_keep_segments: 64
      hot_standby: on
    data_dir: /var/lib/postgresql/9.x/main
    pg_hba:
    - host replication replica_user 192.168.1.100/32 md5
    - host all all 0.0.0.0/0 md5
start: true
stop: true

启动Patroni

sudo patroni patroni.yml

以上方法可以根据具体需求选择使用。对于简单的备份和恢复,pg_dumppg_restore是最简单的方法;对于实时同步,pglogicalPatroni是更好的选择。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian PostgreSQL如何实现数据同步
本文地址: https://pptw.com/jishu/745497.html
Debian上如何创建PostgreSQL用户 Debian下PostgreSQL安全设置指南

游客 回复需填写必要信息