PostgreSQL database stand-alone expansion for stream replication

Source: Internet
Author: User
Tags postgres database egrep



1. Installing the Postgres database on the standby server does not require initialization.



installation process See: http://www.cnblogs.com/ilifeilong/p/6979288.html



2. Create a replication user with replication permissions on the primary server

postgres = # CREATE ROLE repl WITH REPLICATION PASSWORD ‘repl’ LOGIN;
3. Allow replication users to remotely connect to the primary server

$ grep "^ host" pg_hba.conf
host all all 127.0.0.1/32 trust
host replication repl 0.0.0.0/0 md5
host all all :: 1/128 trust
4. Set the parameters related to streaming replication on the primary server

$ mkdir / usr / local / pgsql / arch
$ egrep "archive_mode | max_wal_senders | wal_keep_segments | archive_command | wal_level | hot_standby" postgresql.conf
al_level = hot_standby # minimal, archive, hot_standby, or logical
archive_mode = on # enables archiving; off, on, or always
archive_command = ‘test! -f / usr / local / pgsql / arch /% f && cp% p / usr / local / pgsql / arch /% f’
max_wal_senders = 5 # max number of walsender processes
wal_keep_segments = 30 # in logfile segments, 16MB each; 0 disables
hot_standby = on # "on" allows queries during recovery
#hot_standby_feedback = off # send info from standby to prevent
5. Restart the primary server process

$ pg_ctl stop -m fast
$ pg_ctl start
6. Make a complete backup of the primary server and transfer it to the standby server

   Backup through the pg_ (start | stop) _backup function on the primary server
postgres = # SELECT pg_start_backup (‘label‘, true);
 pg_start_backup
-----------------
 7 / E6000060
(1 row)
$ rsync -az --progress $ {PGDATA} [email protected] 10.189.100.195:/usr/local/pgsql/ --exclude postmaster.pid
postgres = # SELECT pg_stop_backup ();
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
 pg_stop_backup
----------------
 7 / E60005C8
(1 row)
 Backup by the pg_basebackup command on the standby server, requiring the standby PGDATA directory to be empty
$ pg_basebackup --host = 10.189.102.118 --username = repl --port = 5432 --label = backup --verbose --progress --pgdata = / usr / local / pgsql / data --checkpoint = fast --format = p --xlog-method = stream
Password:
transaction log start point: 7 / EA000028 on timeline 1
pg_basebackup: starting background WAL receiver
65933562/65933562 kB (100%), 1/1 tablespace
transaction log end point: 7 / EA000830
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: base backup completed
7. Set the standby database replication related parameters so that the standby can work as the main database after failover

$ mkdir / usr / local / pgsql / arch
$ egrep "archive_mode | max_wal_senders | wal_keep_segments | archive_command | wal_level | hot_standby" postgresql.conf
wal_level = hot_standby # minimal, archive, hot_standby, or logical
archive_mode = on # enables archiving; off, on, or always
archive_command = ‘test! -f / usr / local / pgsql / arch /% f && cp% p / usr / local / pgsql / arch /% f’
max_wal_senders = 5 # max number of walsender processes
wal_keep_segments = 30 # in logfile segments, 16MB each; 0 disables
hot_standby = on # "on" allows queries during recovery
#hot_standby_feedback = off # send info from standby to prevent
8. Create a recovery file in the standby file

$ cat recovery.conf
restore_command = ‘cp / usr / local / pgsql / arch /% f"% p "‘
standby_mode = ‘on’
primary_conninfo = ‘user = repl password = repl host = 10.189.102.118 port = 5432 sslmode = disable sslcompression = 1‘
archive_cleanup_command = ‘pg_archivecleanup -d / usr / local / pgsql / arch% r >> /usr/local/pgsql/arch/archive_cleanup.log’
trigger_file = ‘/ usr / local / pgsql / data / trigger_active_standby’
9. Start the standby database process, automatically start streaming replication

$ pg_ctl start -w
waiting for server to start .... LOG: could not create IPv6 socket: Address family not supported by protocol
LOG: redirecting log output to logging collector process
HINT: Future log output will appear in directory "pg_log".
 done
server started
10. Check the delay of the primary and standby databases

View through functions and system tables
edbstore = # select * from pg_stat_replication; #View in the primary library
-[RECORD 1] ---- + ------------------------------
pid | 15013
usesysid | 19206
usename | repl
application_name | walreceiver
client_addr | 10.189.100.195
client_hostname |
client_port | 56072
backend_start | 2017-06-13 08: 10: 35.400508-07
backend_xmin |
state | streaming
sent_location | 7 / EC01A588
write_location | 7 / EC01A588
flush_location | 7 / EC01A588
replay_location | 7 / EC01A588
sync_priority | 0
sync_state | async

edbstore = # SELECT pg_current_xlog_location (); #View in the primary library
 pg_current_xlog_location
--------------------------
 7 / EC01A588
(1 row)

postgres = # select pg_last_xlog_receive_location (), pg_last_xlog_replay_location (), pg_last_xact_replay_timestamp (); #View in standby
 pg_last_xlog_receive_location | pg_last_xlog_replay_location | pg_last_xact_replay_timestamp
------------------------------- + ------------------ ------------ + -------------------------------
 7 / EC01A588 | 7 / EC01A588 | 2017-06-13 08: 25: 20.281568-07
(1 row)
View by process
$ ps -ef | grep sender | grep -v grep #View in the primary library
postgres 15013 24883 0 08:10? 00:00:00 postgres: wal sender process repl 10.189.100.195 (56072) streaming 7 / EC01A668

$ ps -ef | grep receiver | grep -v grep #View in the standby library
postgres 12857 12843 0 08:10? 00:00:00 postgres: wal receiver process streaming 7 / EC01A668
 

PostgreSQL database stand-alone expansion to streaming replication

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.