设为首页 收藏本站
查看: 549|回复: 0

[经验分享] Postgresql master-slave 切换测试

[复制链接]

尚未签到

发表于 2016-11-19 11:03:29 | 显示全部楼层 |阅读模式
系统:
          ubuntu 1204
IP:
          slave:  10.4.2.101
          master:10.4.2.110


安装详见:http://2057.iyunv.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.iyunv.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;


目前整理到此

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302528-1-1.html 上篇帖子: 用MinGW编译PostgreSQL的详细方法 下篇帖子: postgresql vacuum 垃圾整理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表