`

Postgresql master-slave 切换测试

阅读更多
系统:
          ubuntu 1204
IP:
          slave:  10.4.2.101
          master:10.4.2.110




安装详见:http://2057.iteye.com/blog/1616620

1、创建用户

create user msuser superuser login connection limit 2 encrypted password 'msuser';



2、配置master库 pg_hba.conf

添加配置如下:

     host replication msuser 10.4.2.101/16 md5



3、master's postgresql.conf(hotstandby 配置详见:http://2057.iteye.com/blog/1616620 )



   
 
     listen_addresses = '*' 
     max_connections = 100

     shared_buffers = 24MB

     wal_level = hot_standby
     checkpoint_segments = 128

     archive_mode = on
     archive_command = 'cp -i %p /usr/local/pgsql/archivedir/%f </dev/null'
     archive_timeout = 600

     max_wal_sends = 1
     wal_keep_segments = 64

     logging_collector = on 
     log_directory = 'pg_log'
     log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

     log_min_messages = debug5

     debug_print_parse = off
     debug_print_rewritten = off
     debug_print_plan = off     
     debug_pretty_print = on
     log_checkpoints = on
     log_connections = on

     log_disconnections = on
     
     track_activity_query_size = 1024



4、主库全备(restart pg)

     pgsql -c "select pg_start_backup('standbybackup',true)";



5、复制数据

   
   tar czvf pg_master_data.tar.gz /usr/local/pgsql/data --exclude=/usr/local/pgsql/data/pg_xlog

   scp pg_master_data.tar.gz pgslave

   select pg_stop_backup(), current_timestamp;




6、修改slave postgresql.conf

     

     
     listen_addresses = '*' 
     max_connections = 100

     shared_buffers = 24MB

     wal_level = hot_standby
     checkpoint_segments = 128

     hot_standby = on     

     logging_collector = on 
     log_directory = 'pg_log'
     log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

     log_min_messages = debug5

     debug_print_parse = off
     debug_print_rewritten = off
     debug_print_plan = off     
     debug_pretty_print = on
     log_checkpoints = on
     log_connections = on
     log_disconnections = on

     track_activity_query_size = 1024



7、设置从库recovery.conf

     
     standby_mode = 'on'
     primary_conninfo = 'host=10.4.2.110 port=5432 user=msuser password=msuser'
     trigger_file = '/data/pgsql/trigger_activestb'


   
8、删除从库文件,并创建pg_xlog目录

     
     rm -rf postmaster.pid
     mkdir -p pg_xlog


启动 slave postgresql


查看已经开始做复制了

ps -aef|grep post
postgres 1633 1527 0 15:23 pts/0 00:00:00 su postgres
postgres 1640 1633 0 15:23 pts/0 00:00:00 bash
postgres 2106 1 1 16:46 pts/0 00:00:00 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
postgres 2107 2106 0 16:46 ? 00:00:00 postgres: logger process                             
postgres 2109 2106 0 16:46 ? 00:00:00 postgres: writer process                             
postgres 2110 2106 0 16:46 ? 00:00:00 postgres: wal writer process                         
postgres 2111 2106 0 16:46 ? 00:00:00 postgres: autovacuum launcher process                
postgres 2112 2106 0 16:46 ? 00:00:00 postgres: archiver process                           
postgres 2113 2106 0 16:46 ? 00:00:00 postgres: stats collector process                    
postgres 2114 2106 0 16:46 ? 00:00:00 postgres: wal sender process repuser 10.4.2.101(34140) streaming 0/7000078
postgres 2117 1640 0 16:47 pts/0 00:00:00 ps -aef
postgres 2118 1640 0 16:47 pts/0 00:00:00 grep --color=auto post

master:
/usr/local/pgsql/bin/pg_controldata /usr/local/pgsql/data/

pg_control version number: 903

Catalog version number: 201105231

Database system identifier: 5846925142468689917

Database cluster state: in production

pg_control last modified: Wed 20 Feb 2013 05:26:35 PM CST

Latest checkpoint location: 0/A0251F8

Prior checkpoint location: 0/A0008E8

Latest checkpoint's REDO location: 0/A0251C0

Latest checkpoint's TimeLineID: 1

Latest checkpoint's NextXID: 0/959

Latest checkpoint's NextOID: 32769

Latest checkpoint's NextMultiXactId: 1

Latest checkpoint's NextMultiOffset: 0

Latest checkpoint's oldestXID: 670

Latest checkpoint's oldestXID's DB: 1

Latest checkpoint's oldestActiveXID: 959

Time of latest checkpoint: Wed 20 Feb 2013 05:26:30 PM CST

Minimum recovery ending location: 0/0

Backup start location: 0/0

Current wal_level setting: hot_standby

Current max_connections setting: 100

Current max_prepared_xacts setting: 0

Current max_locks_per_xact setting: 64

Maximum data alignment: 8

Database block size: 8192

Blocks per segment of large relation: 131072

WAL block size: 8192

Bytes per WAL segment: 16777216

Maximum length of identifiers: 64

Maximum columns in an index: 32

Maximum size of a TOAST chunk: 1996

Date/time type storage: 64-bit integers

Float4 argument passing: by value

Float8 argument passing: by value


slave:
/usr/local/pgsql/bin/pg_controldata /usr/local/pgsql/data/

pg_control version number: 903

Catalog version number: 201105231

Database system identifier: 5846925142468689917

Database cluster state: in archive recovery

pg_control last modified: Wed 20 Feb 2013 05:27:07 PM CST

Latest checkpoint location: 0/A0251F8

Prior checkpoint location: 0/A0008E8

Latest checkpoint's REDO location: 0/A0251C0

Latest checkpoint's TimeLineID: 1

Latest checkpoint's NextXID: 0/959

Latest checkpoint's NextOID: 32769

Latest checkpoint's NextMultiXactId: 1

Latest checkpoint's NextMultiOffset: 0

Latest checkpoint's oldestXID: 670

Latest checkpoint's oldestXID's DB: 1

Latest checkpoint's oldestActiveXID: 959

Time of latest checkpoint: Wed 20 Feb 2013 05:26:30 PM CST

Minimum recovery ending location: 0/B000000

Backup start location: 0/0

Current wal_level setting: hot_standby

Current max_connections setting: 100

Current max_prepared_xacts setting: 0

Current max_locks_per_xact setting: 64

Maximum data alignment: 8

Database block size: 8192

Blocks per segment of large relation: 131072

WAL block size: 8192

Bytes per WAL segment: 16777216

Maximum length of identifiers: 64

Maximum columns in an index: 32

Maximum size of a TOAST chunk: 1996

Date/time type storage: 64-bit integers

Float4 argument passing: by value

Float8 argument passing: by value





插入测试数据:
create table test(id int,crt_time timestamp default clock_timestamp());
insert into test (id) select generate_series(1,1000000);



主备切换:(参考:http://francs3.blog.163.com/blog/static/405767272011724103133766/



slave创建trigger

touch /data/pgsql/trigger_activestb

recovery.conf变成recovery.done说明备库已经被激活





切换的时候要互换主备的配置





创建 原来主库现在备库的recovery.conf

recovery_target_timeline = 'latest'
standby_mdoe = 'on'
primary_conninfo ='host=ip port=5432 user=msuser password=msuser'
trigger_file = '/usr/local/pgsql/trigger_activestb.5432'



在主库pg_hba.conf上添加允许从库访问的配置

host replication msuser ip/16 md5



启动主库,启动从库




遇到问题参考上面给链接 scp缺少的文件就可以

成功后会发现

LOG: streaming replication successfully connected to primary



备注:

rsync -av --progress /usr/local/pgsql/data/ 10.4.2.110:/usr/local/pgsql/data --exclude 'pg_log/*' --exclude 'pg_xlog/*' --exclude postmaster.pid --exclude pg_hba.conf --exclude postgresql.conf;



删除归档文件:


先做主库全备然后删除其他的归档文件

psql -c "select pg_start_backup('standbybackup',true)";

select pg_stop_backup(), current_timestamp;


目前整理到此
分享到:
评论

相关推荐

    Greenplum 架构概览1

    Standby Master则是为了提供故障切换的高可用性。Segment节点是实际工作节点,存储数据并执行查询操作。每个Segment节点上可以运行多个PostgreSQL实例,以进一步提高并发处理能力。 **Master-Segment与Master-Slave...

    PostgreSQL HA环境搭建详细步骤

    在 Master 和 Slave 端分别安装 PostgreSQL 数据库。 Master 端安装完数据库后初始化并运行,Slave 端可以只安装数据库,不初始化数据库。 2. 创建流复制用户 在 Master 端执行 SQL 命令:CREATE USER repuser ...

    emaj-master_java_TheMaster_

    【标题】"emaj-master_java_TheMaster_" 暗示了这是一个关于Java编程和数据库复制的项目,可能是一个开源项目,其中包含了主从复制(Master-Slave Replication)的实现,特别是在PostgreSQL数据库系统中。"TheMaster...

    PostgreSQL.High.Availability.Cookbook.2nd.Edition.2017.2.pdf

    - **部署方案**:随后,书中详细介绍了不同类型的高可用性部署方案,包括但不限于主备复制(master-slave replication)、多主复制(multi-master replication)等。 - **故障转移机制**:深入探讨了故障转移机制的...

    Linux系统pgsql安装

    - **角色**: 主机 (Master) - **主机地址**: 10.52.6.32 - **角色**: 从机 (Slave) #### 二、具体搭建步骤 ##### 1. 创建用户并设置密码 - **命令**: `useradd postgres` - **命令**: `passwd postgres` (设置...

    SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询.pdf

    spring.datasource.master.url=jdbc:postgresql://localhost:5432/postgres spring.datasource.master.username=postgress spring.datasource.master.password=postgress spring.datasource.master.driver-class-...

    PostgreSQL高可用性与负载均衡原理及实例.docx

    4. **主-从复制(Master-Slave)**: 所有的写操作只发生在主服务器,然后异步地将更改推送到从服务器。适合数据仓库场景,因为读操作可以分发到从服务器。Slony-I是一个支持表级粒度和多从服务器的示例,但在故障...

    PostgreSQL数据库工程师培训实战教程(主从复制、高可用HA、集群架构)

    主从复制是数据库高可用性的一种常见实现方式,它允许数据在主数据库(master)上写入,并同步到从数据库(slave)。PostgreSQL支持多种复制方式,如流式复制和逻辑复制。流式复制通过共享存储或网络连接实时传输...

    pg+pgpool+Ubuntu 实现分布式流复制模式.pdf

    - 在从节点(slave1, slave2)上停止PostgreSQL服务。 - 在主节点(master)上开始备份,使用`pg_start_backup`命令。 - 将主节点的WAL日志同步到从节点,通常通过rsync或类似工具完成。 - 在从节点上恢复备份,...

    数据库同步热备解决方案(某大学图书馆)

    - MySQL的Master-Slave Replication:适用于MySQL数据库,提供异步复制。 - Oracle GoldenGate:支持多种数据库,提供实时数据复制和故障切换功能。 - PostgreSQL的Streaming Replication:适用于PostgreSQL...

    PostgreSQL_HighAvailability

    - **备服务器(Slave Server)**:备份主服务器的数据,并在主服务器出现故障时接管其工作。 - **故障检测软件**:用于监控主服务器的状态并在检测到故障后触发相应的响应机制。 - **角色转换软件**:当主服务器失效...

    4.7、activemq 集群 conduitSubscriptions 均衡消费和master slave,jdbc存储1

    在ActiveMQ集群环境中,实现消息均衡消费和主备切换是一个重要的功能。本示例主要讨论了如何通过配置和代码实现ActiveMQ集群中的`conduitSubscriptions`策略,以及结合`jdbc`存储,来确保消息的高可用性和消费的均衡...

    thinkphp+pgsql

    ### ThinkPHP与PostgreSQL兼容性解决方案 #### 一、引言 ThinkPHP 是一款非常流行的 PHP 开发框架,因其简洁高效的特点被广泛应用于 Web 应用的开发之中。而 PostgreSQL (通常简称为 PG)作为世界上最强大的开源...

    数据库中间件oneproxy简明使用手册

    OneProxy 的目标是降低对上层应用开发的要求,实现在应用层面基本透明的底层数据库单点切换(Failover)、读写分离和水平拆分功能,从而使各类企业都能轻松拥有类似大型互联网企业的数据库扩展能力,同时不受开发...

    SpringBoot+MybatisPlus多数据源配置,主从库读写分离完整例子

    5. **切换数据源**:在业务代码中,根据需求切换数据源。例如,在插入、更新、删除操作时使用主库,而在查询操作时使用从库。这通常通过AOP(面向切面编程)实现,定义一个切点和通知,根据方法的注解或其他条件判断...

    数据库复制与同步:数据一致性的双剑合璧

    ### 主从复制(Master-Slave Replication) 主从复制是最常见的复制模式之一。在该模式下,主数据库负责处理写操作和数据变更,而从数据库则复制主数据库的数据,主要用于读操作。这种复制方式的好处在于可以显著...

    GreenPlum最全学习手册

    - **MPP架构**:Master/Slave模型下,数据分布在多个Segment节点上,并行处理任务,显著提高查询效率。 - **节点组成**: - **Master节点**:作为GreenPlum数据库的中心节点,负责接收客户端请求、解析SQL语句并将...

    数据库高可用性:构筑坚不可摧的数据堡垒

    - **故障转移**:在主数据库不可用时,自动切换到备用数据库。 - **负载均衡**:合理分配请求负载,避免过载。 - **监控和预防**:实时监控数据库状态,预防潜在的问题。 #### 实现数据库高可用性的基本策略 #####...

Global site tag (gtag.js) - Google Analytics