postgresql学习笔记二之流复制

前端之家收集整理的这篇文章主要介绍了postgresql学习笔记二之流复制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

平台信息
MasterServer
192.168.3.42
数据库版本:Postgresql9.2.8
端口:5432
数据库的数据目录:/var/lib/pgsql/9.2/data

StandbyServer:192.168.3.41
数据库版本:Postgresql9.2.8
端口:5432
数据库的数据目录:/var/lib/pgsql/9.2/data/

配置
数据库上的配置

1.在主数据库(42上)的pg_hba.conf文件添加如下配置项:

[root@tigase2~]# vi /var/lib/pgsql/9.2/data/pg_hba.conf

local all all trust

host all all 127.0.0.1/32 trust

host all all 192.168.3.0/24 trust#设置允许3段的ip为信任 

host replication postgres 192.168.3.41/32 trust#设置从数据库同步时使用的用户,以及从数据库的ip地址,此处直接用主数据库的postgres账户,可以自己在主数据上新建一个专用同步账号

2.在主数据库(42上)的postgresql.conf文件中设置如下配置项:

vi/var/lib/pgsql/9.2//data/postgresql.conf
wal_level= hot_standby

checkpoint_segments= 16

archive_mode= on

archive_command= 'cp %p /var/lib/pgsql/9.2/data/pg_archive/%f'

max_wal_senders= 10
wal_keep_segments = 32

log_destination= 'csvlog'

logging_collector= on

log_directory= '/var/log/pgsql/'

log_filename= 'postgresql-%Y-%m-%d_%H%M%S.log'

log_truncate_on_rotation= on

log_rotation_age= 1d

log_rotation_size= 10MB

log_min_duration_statement= 1000ms

log_lock_waits= on

log_statement= 'ddl'

log_timezone= 'PRC'

lc_messages= 'en_US.UTF-8'

lc_monetary= 'en_US.UTF-8

lc_numeric= 'en_US.UTF-8'

lc_time= 'en_US.UTF-8'

deadlock_timeout= 1s

autovacuum= on

log_autovacuum_min_duration= 0

check_function_bodies= on

建立归档文件和日志文件

[root@tigase2data]# mkdir /var/lib/pgsql/9.2/data/pg_archive

[root@tigase2data]# chown -R postgres.postgres pg_archive/

[root@tigase2log]# mkdir /var/log/pgsql

[root@tigase2log]# chown -R postgres.postgres /var/log/pgsql

/var/log下有一个pgsql日志文件,先删除或备份,再建立。

3.重启主数据库,让配置生效:
servicepostgresql-9.2 restart

4.对主数据库做一个基础备份:
使用selectpg_start_backup();命令把数据库切换到备份状态,
[root@tigase2~]# psql -U postgres

postgres=#selectpg_start_backup('t1');

pg_start_backup

-----------------

(1行记录)

postgres=#\q #备份状态下\q先退出,方便拷贝主数据库的数据目录

5.进入主数据库(42上)的数据目录、以及归档文件到从数据库(41上)的数据目录中

[root@tigase2~]# cd /var/lib/pgsql/9.2/

[root@tigase29.2]# cp -r data data.bak #先备份到本地,再scp到从数据库,可直接scp到从数据库

[root@tigase29.2]# scp -rp data.bak/ root@192.168.3.41:/var/lib/pgsql/9.2/

6.拷贝完成后,结束主数据库的备份状态,再拷贝主数据的存档文件到从数据库

p[root@tigase2~]# psql -U postgres

ostgres=#selectpg_stop_backup();

NOTICE: pg_stop_backup complete,all required WAL segments have beenarchived

pg_stop_backup

----------------

0/60000E0

成功后data文件下pg_archive会生成存档文件,复制pg_archive文件到从数据库data.bak下,以便等下数据库恢复。

[root@tigase2data]# scp -rp pg_archive/root@192.168.3.41:/var/lib/pgsql/9.2/data.bak/


数据库上的配置:

先停止postgres服务

[root@tigase19.2]# service postgresql-9.2 stop

把从数据库原data改名为data.backup或直接删除,再将从主数据库拷贝过来的data.bak改名为data.

[root@tigase19.2]# mv data data.backup

[root@tigase19.2]# mv data.bak data

[root@tigase19.2]# chown -R postgres.postgres data

7.在从数据库配置文件postgresql.conf中,设置如下配置项:
port=5432
hot_standby= on
建立日志文件

[root@tigase1log]# mkdir /var/log/pgsql

[root@tigase1log]# chown -R postgres.postgres /var/log/pgsql

8.编辑并配置recovery.conf,此文件需要新建。

[root@tigase1data]# vi /var/lib/pgsql/9.2/data/recovery.conf

配置如下内容
restore_command= 'cp /var/lib/pgsql/9.2/data/pg_archive/%f %p' # e.g. 'cp/mnt/server/archivedir/%f %p'

standby_mode= 'on'

primary_conninfo= 'host=192.168.3.42 port=5432 user=postgres password=postgres'

9.删除从主数据库中过来的postmaster.pid文件以及pg_xlog下的文件,然后启动从数据库
[root@tigase1data]# rm /var/lib/pgsql/9.2/data/postmaster.pid

[root@tigase1data]# rm -fr /var/lib/pgsql/9.2/data/pg_xlog/*

#servicepostgresql-9.2 start

最后把配置recovery.conf里restore-command行注销

#restore_command= 'cp /var/lib/pgsql/9.2/data/pg_archive/%f %p' # e.g. 'cp/mnt/server/archivedir/%f %p'

10登录从服务器查看

[root@tigase1data]# psql -U postgres


postgres=#\l


tigasedb | tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

tigasedbb| tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

tigasedbd| tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

(6行记录)

11.登录数据库添加数据库等。

[root@tigase2~]# psql -U postgres

postgres=#create database tigaseddddd owner tigase;

CREATEDATABASE


12.回到从数据库查看新增数据库

[root@tigase1data]# psql -U postgres

postgres=#\l


stgres

tigasedb | tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

tigasedbb | tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

tigasedbd | tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

tigaseddddd| tigase | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |

(7行记录)

数据库只能读,如增加提示

postgres=#create database tigase123 owner tigase;

ERROR: cannot execute CREATE DATABASE in a read-only transaction

猜你在找的Postgre SQL相关文章