postgres 异步standby 创建

简介:

postgres 异步standby 创建

 

说明

 

1、如果要求及时性不是很高(前后几秒钟的差距),那么建议使用postgres的备份数据库可以是异步流复制STANDBY

2、主节点指的是生产库,standby指的是备份库

    3、如无说明,#代表root用户,$代表osdba用户

 

问题

 

1、该测试是在postgres9.3系列完成,已知在postgres9.0系列才开始流复制概念

2、该测试没有测试表空间为自己创建时(默认只有的表空间)的迁移情况,所以迁移时要注意

 

环境

 

  操作系统:CentOS release 6.5 (Final)

  数据库:postgres (9.3.13)

  

异步standby创建

 

 

1、以主节点的相关信息为模板,新建和主节点类似的服务器

 

略过

 

2、检查主节点的编译环境

 

$ pg_config --configure

'--prefix=/usr/local/pgsql' '--with-perl' '--with-python'

 

3、在standby节点模仿主节点进行编译工作,进行三板斧操作

 

# ./configure --prefix=/usr/local/pgsql --with-perl --with-python

# make

# make install

 

4、模仿主节点创建用户名密码,以及.bash_profile环境

   

略过

 

5、在主节点创建用户拥有权限replication

 

   $ psql -d postgres

   

   =# create role replica login REPLICATION ENCRYPTED PASSWORD 'replica

 

6、修改主节点的pg_hba.conf

  

 $ cd $PGDATA

   $ vim pg_hba.conf

   

host    replication    replica          192.168.1.0/24          md5

 

   

7、修改主节点的postgresql.conf

  

 $ cd $PGDATA

   $ vim postgresql.conf

 

    listen_addresses = '*'

    max_wal_senders = 32

    wal_keep_segments = 256

wal_level = hot_standby

hot_standby = on

 

8standby节点执行基础备份

    

    $ pg_basebackup -F p -D $PGDATA -R -x -h 192.168.1.36 -p 5432 -U replica

    $ ls -ls $PGDATA

    

9、检查并修改standby节点的recovery.conf

    

$ vim $PGDATA/recovery.conf

  

standby_mode = 'on'

primary_conninfo = 'user=replica password=replica host=192.168.1.36 port=5432 sslmode=disable sslcompression=1'

 

如果符合上文中standby执行基础备份的脚本密码,就不需要修改

 

10、启动standby节点并检查进程

 

$ pg_ctl start

$ psql

$ ps -ef|grep postgres

 

 

11、测试

 

1、主节点和standby是否同步

 

在主节点上创建一张表,并插入数据,测试standby是否存在表和数据

[osdba@pg36 data]$ psql

psql (9.3.13)

Type "help" for help.

 

osdba=# create table t_1(id int,info text);

CREATE TABLE

osdba=# insert into t_1 select generate_series(1,1000),'good';

INSERT 0 1000

 

[osdba@pg37 data]$ psql

psql (9.3.13)

Type "help" for help.

 

osdba=# \dt

       List of relations

 Schema | Name | Type  | Owner

--------+------+-------+-------

 public | t_1  | table | osdba

(1 row)

 

osdba=# select count(1) from t_1;

 count

-------

  1000

(1 row)

 

2、standby挂掉后,是否影响主节点使用

 

当备机挂掉时,并不影响主机的正常的使用,等备机重新启动时,自动将数据同步

 

[osdba@pg37 data]$ pg_ctl stop

waiting for server to shut down.... done

server stopped

 

[osdba@pg36 data]$ psql

psql (9.3.13)

Type "help" for help.

 

osdba=# insert into t_1 select generate_series(1,1000),'good';

INSERT 0 1000

osdba=# insert into t_1 select generate_series(1,1000),'good';

INSERT 0 1000

 

[osdba@pg37 data]$ pg_ctl start

server starting

[osdba@pg37 data]$ psql

psql (9.3.13)

Type "help" for help.

 

osdba=# select count(1) from t_1;

 count

-------

  3000

(1 row)

 

3、主节点挂掉后,是否影响standby节点使用

 

当主机挂掉时,备机是否可以读取数据,但不允许插入更改数据

 

[osdba@pg37 data]$ psql

psql (9.3.13)

Type "help" for help.

 

osdba=# select count(1) from t_1;

 count

-------

  3000

(1 row)

 

osdba=# insert into t_1 values(1,'1');

ERROR:  cannot execute INSERT in a read-only transaction

 

 

目录
相关文章
|
5月前
|
SQL 算法 关系型数据库
MySQL Online DDL原理解读
MySQL Online DDL原理解读
|
SQL 存储 关系型数据库
[译]Postgres15-新特性-利用pg_walinspect对WAL事件进行debug
[译]Postgres15-新特性-利用pg_walinspect对WAL事件进行debug
174 0
|
监控 关系型数据库 数据库
监控复制:PG_STAT_REPLICATION
监控复制:PG_STAT_REPLICATION
177 0
|
SQL 关系型数据库 Java
【DB吐槽大会】第16期 - PG Standby不支持解析逻辑日志
大家好,这里是DB吐槽大会,第16期 - PG Standby不支持解析逻辑日志
|
SQL Oracle 关系型数据库
xDB Replication Server - PostgreSQL, Oracle, SQL Server, PPAS 全量、增量(redo log based, or trigger based)同步(支持single-master, mult-master同步, 支持DDL)
xDB Replication Server - PostgreSQL, Oracle, SQL Server, PPAS 全量、增量(redo log based, or trigger based)同步(支持single-master, mult-master同步, 支持DDL)
894 0
|
SQL Oracle 关系型数据库
PostgreSQL 物化视图(Oracle同步到PG,PG同步到PG) - by pgsnapshot (plperlu trigger) (支持类似Oracle的mvlog fast complete force刷新)
标签 PostgreSQL , 物化视图 , 增量刷新 , mvlog , Oracle 同步到 PG , PG 同步到 PG 背景 PostgreSQL自身的物化视图没有MVLOG,也就是说,刷新的时候是VIEW定义产生的记录与MV已刷新的记录进行比对,进行增量更新的过程。
3342 0
|
Oracle 关系型数据库 测试技术
Oracle 数据库重放(Database Replay)功能演示
https://www.cnblogs.com/jyzhao/p/5072800.html 我们可以捕获生产环境的工作量,在测试环境上重放,从而在不影响生产环境的前提下做一些改动测试。捕获:需要Oracle版本为10.2.0.4或更高.重放:需要Oracle版本为11g Release 1或更新. 本文环境:RHEL6.4 + Oracle 11.2.0.4下面介绍一下执行Database Replay的Workflow。
1316 0
|
Oracle 关系型数据库 Shell
Oracle 数据库重放(Database Replay)---样例
1 生产环境 创建存放抓取文件的directory mkdir DBReplay sqlplus / as sysdba create directory cap10g as 'XXXXX/dbreplay'; 2 生产环境 开始抓取trace sqlplus / as sysdba<spool capture_trace.
1450 0