加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql学习笔记二之流复制

发布时间:2020-12-13 17:30:11 所属栏目:百科 来源:网络整理
导读:平台信息 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/ 配置 主

平台信息
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读