Monday, May 7, 2018

Point in time recovery pada Postgresql di Centos 7


1. Buat Folder data PITR dan archive PITR
# mkdir datapitr & archivepitr

2. Rubah owner menjadi postgres
#chown -R postgres.postgres datapitr & archivepitr

3. Initdb datapitr di user postgres
# /usr/pgsql-9.3/bin/initdb –D /var/lib/datapitr
# /usr/pgsql-9.5/bin/pg_ctl -D /var/lib/datapitr initdb

4. Edit postgres.conf di datapitr
# vim /var/lib/datapitr/postgres.conf
            > wal_level = hot_standby
            > max_wal_sender = 10
            > archive_mode = on
            > archive_command = ‘test ! -f /var/lib/archivepitr/%f && cp %p /var/lib/archivepitr/%f’
            > archive_command = 'rsync -avz /var/lib/pgsql/9.6/data/pg_xlog/%f postgres2@192.168.4.32:/data/pitr/dbcnn-dev/archive/%f'
            > archive_timeout = 20        *

5. Buka replikasi localhost di pg_hba.conf
#vim /var/lib/datapitr/pg_hba.conf
            > host    replication     postgres        127.0.0.1/32            trust

6. Start PITR diuser postgres
# usr/pgsql-9.5/bin/pg_ctl -D /var/lib/datapitr start

7. Buat triger untuk start, stop, restart
#vim /home/triger
            > #!/bin/bash
            > su - postgres -c "/usr/pgsql-9.5/bin/pg_ctl -D /var/lib/PITR2/ $1"

8. Login psql dan buat database beserta isinya
# psql -Upostgres -h127.0.0.1
            > create database dede;
            > \c dede
            > create table testing (id int);
            > insert into testing values (1); 
            > insert into testing select * from testing

9. Cek archivepitr, data di archivepitr harus sudah ada

10. Buat kembali directory datapitr2 dan archivepitr2
# mkdir /var/lib/datapitr2 & archivepitr2

11. Rubah owner datapirt2 & archivepitr2 menjadi postgres
# chown -R postgres.postgres datapitr2 & archivepitr2

12. Jalankan Basebackup diuser postgres
# /usr/pgsql-9.5/bin/pg_basebackup -D /var/lib/datapitr2 -p 5432 *
# /usr/pgsql-9.3/bin/pg_basebackup -Upostgres -h127.0.0.1 -D /var/lib/datapitr2 -p 5432

13. Setelah basebackup coba insert data lagi seperti diatas, agar ada perubahan, perubahan yang telah dilakukan seharusnya akan ada nanti setelah recovery
Cek dlu service pgsql yang sedang running
14. Stop postgresq datapitr jalankan diuser postgres (yg lagi running/ service master)

15. Edit postgres.conf di datapitr2
# vim /var/lib/datapitr2/postgres.conf
            > archive_mode = on
            >archive_command = ‘test ! -f /var/lib/archivepitr2/%f && cp %p /var/lib/archivepitr2/%f’

Masuk user postgres
Vim recovery.conf
Chmod –R 700 /var/lib/datapitr2
Chown –R postgres /var/lib/datapitr2

16. Buat recovery.conf di datapitr2
# vim /var/lib/datapitr2/recovery.conf
            > recovery_target_time = ‘2017-04-06 14:06:00’ ← lihat jamnya di backuplabel di datapitr2
            > restore_command = ‘cp /var/lib/archivepitr/%f %p’
*copynya dilocal aja


17. Start datapitr2 jalankan diuser postgres
# usr/pgsql-9.5/bin/pg_ctl -D /var/lib/datapitr2 start

18. Masuk ke psql dan lihat jumlah datanya, jumlah datanya harus sesua dengan trakhir update setelah basebackup

cd /var/lib/datapitr2/pg_log
tail -100 postgresql-Mon.log

19. Pg_basebackup berhasil jika datanya telah sama dari pg_basebckup dan setelah diinsert lagi. Dan di pg_xlog ada file seperti 0000.backup

JANGAN HAPUS BAKCUP_LABEL

*setiap ngedit postgresql.conf dan pg_hba.conf harus dibackup terlebih dahulu

  
Untuk accept rsync :

Enable password di ssh
Create user di server yang dingin diakses
#useradd postgres
#passwd postgres
New password :

Server untuk memberikan hak akses
Masuk ke user postgres di server asal
Su - postgres
#ssh-keygen -t rsa
#ssh-copy-id postgres@192.168.4.32
#ssh-copy-id userclient@ipaddclient

#vim /opt/script/basebackup.sh

#!/bin/bash
day=$(date --date 'today' +"%Y%m%d")

/usr/pgsql-9.3/bin/pg_basebackup -Upostgres -h127.0.0.1 -D - -Ft| bzip2  > /var/lib/pgsql/basebackup/basebackup_$day.bz2

sleep 3
scp /var/lib/pgsql/basebackup/basebackup_$day.bz2 root@192.168.4.31:/data/basebackup/basebackup_ratingklasemen/

sleep 3
rm -rf /var/lib/pgsql/basebackup/basebackup_$day.bz2

#crontab –e

#basebackup
00 02 1,11,21 * * /bin/sh /opt/script/basebackup

/usr/pgsql-9.3/bin/pg_ctl -D /var/lib/pgsql/basebackupnew

Persiapan backup

1.      Copy Archivedir dari server storage ke server baru
2.      Copy Basebackup dari server storage ke server baru
3.      Recovery.conf ( pastikan folder direct ke local tempat menyimpan data archive)
4.      Masuk ke ip public
5.      Replace ip local di server baru menggunakan ip lama

Setting multi service di centos

#cd /etc/systemd/system/multi-user.target.wants
#vim postgresql-9.3.service

Ubah pathnya semula Environment=PGDATA=/var/lib/pgsql/9.3/data/ menjadi path yang sudah dikonfigurasi

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...