bilješke konvertirane u text file
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 19 Aug 2017 09:01:50 +0000 (11:01 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 19 Aug 2017 09:01:50 +0000 (11:01 +0200)
edozvola-dpavlin.txt [new file with mode: 0644]

diff --git a/edozvola-dpavlin.txt b/edozvola-dpavlin.txt
new file mode 100644 (file)
index 0000000..38ef4e6
--- /dev/null
@@ -0,0 +1,317 @@
+yum install etckeeper\r
+cd /etc/\r
+git config --global user.email "dpavlin@rot13.org"\r
+git config --global user.name "Dobrica Pavlinusic"\r
+git commit -m base\r
+\r
+\r
+\r
+https://www.postgresql.org/docs/9.6/static/warm-standby.html\r
+\r
+# napraviti ssh autorizaciju za postgresql korisnika bez passworda\r
+\r
+[root@edozvola-db-01 pgsql]# sudo -u postgres bash\r
+bash-4.2$ pwd\r
+/var/lib/pgsql\r
+bash-4.2$ ssh-keygen\r
+Generating public/private rsa key pair.\r
+Enter file in which to save the key (/var/lib/pgsql/.ssh/id_rsa):\r
+Created directory '/var/lib/pgsql/.ssh'.\r
+Enter passphrase (empty for no passphrase):\r
+Enter same passphrase again:\r
+Your identification has been saved in /var/lib/pgsql/.ssh/id_rsa.\r
+\r
+\r
+bash-4.2$ cp -v .ssh/id_rsa.pub .ssh/authorized_keys\r
+‘.ssh/id_rsa.pub’ -> ‘.ssh/authorized_keys’\r
+\r
+\r
+prekopirati isti kljuc i authoriorized keys na slave:\r
+\r
+\r
+[root@edozvola-db-01 pgsql]# rsync -rav .ssh edozvola-db-02:`pwd`\r
+root@edozvola-db-02's password:\r
+sending incremental file list\r
+.ssh/\r
+.ssh/id_rsa\r
+.ssh/id_rsa.pub\r
+.ssh/known_hosts\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+kreirati testnu bazu i tablicu\r
+[root@edozvola-db-01 ~]# sudo -u postgres createdb test\r
+[root@edozvola-db-01 ~]# sudo -u postgres psql test\r
+test=# create table test1 ( id serial, a text, b int ) ;\r
+test=# insert into test1 (a,b) values ('foo',42) ;\r
+INSERT 0 1\r
+test=# insert into test1 (a,b) values ('bar',1234) ;\r
+INSERT 0 1\r
+\r
+\r
+nfs share za wal fileove\r
+[root@edozvola-db-pgpool ~]# yum install nfs-utils nfs4-acl-tools\r
+[root@edozvola-db-pgpool ~]# systemctl enable nfs-server.service\r
+Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.\r
+[root@edozvola-db-pgpool ~]# systemctl start nfs-server.service\r
+\r
+\r
+[root@edozvola-db-pgpool ~]# mkdir -p /shared/pgsql\r
+[root@edozvola-db-pgpool ~]# chown postgres /shared/pgsql/\r
+\r
+\r
+[root@edozvola-db-pgpool ~]# vi /etc/exports\r
+\r
+\r
+[root@edozvola-db-pgpool ~]# cat /etc/exports\r
+/shared/pgsql edozvola-db-01(rw,no_root_squash) edozvola-db-02(rw,no_root_squash)\r
+\r
+\r
+[root@edozvola-db-pgpool ~]# exportfs -va\r
+exporting edozvola-db-01:/shared/pgsql\r
+exporting edozvola-db-02:/shared/pgsql\r
+\r
+\r
+mount na database serverima\r
+[root@edozvola-db-01 ~]# yum install nfs-utils nfs4-acl-tools\r
+[root@edozvola-db-01 ~]# mkdir -p /shared/pgsql\r
+[root@edozvola-db-01 ~]# vi /etc/fstab\r
+\r
+\r
+[root@edozvola-db-01 ~]# grep shared /etc/fstab\r
+edozvola-db-pgpool:/shared/pgsql        /shared/pgsql   nfs     defaults        0 0\r
+\r
+\r
+[root@edozvola-db-01 ~]# mount /shared/pgsql/\r
+\r
+\r
+provjeriti da li postgresql korisnik moze pisati po nfs share-u\r
+\r
+\r
+[root@edozvola-db-01 ~]# sudo -u postgres touch /shared/pgsql/test-01\r
+[root@edozvola-db-01 ~]# ls -al /shared/pgsql/test-01\r
+-rw-r--r-- 1 postgres postgres 0 Aug 18 13:57 /shared/pgsql/test-01\r
+[root@edozvola-db-01 ~]# rm -f /shared/pgsql/test-01\r
+\r
+\r
+isto ponoviti na edozvola-db-02!\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+podesiti wal archiving\r
+\r
+\r
+https://www.postgresql.org/docs/9.6/static/continuous-archiving.html\r
+\r
+\r
+[root@edozvola-db-01 ~]# vi /var/lib/pgsql/9.6/data/postgresql.conf\r
+wal_level = replica\r
+archive_mode = on\r
+max_wal_senders = 1 \r
+max_replication_slots = 1\r
+archive_command = 'test ! -f /shared/pgsql/%f && cp %p /shared/pgsql/%f'\r
+hot_standby = on\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+[root@edozvola-db-01 ~]# systemctl restart postgresql-9.6.service\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+kreirati replication korisnika\r
+[root@edozvola-db-01 ~]# sudo -u postgres psql\r
+\r
+\r
+postgres=# create user replication with password 'replication123' login replication ;\r
+CREATE ROLE\r
+\r
+\r
+[root@edozvola-db-01 ~]# vi /var/lib/pgsql/9.6/data/pg_hba.conf\r
+\r
+\r
+host    replication     replication     10.200.1.62/24          md5\r
+\r
+\r
+netmask je /24 da mozemo imati istu konfiguraciju na oba node-a\r
+\r
+\r
+\r
+\r
+\r
+\r
+testirati replikaciju\r
+[root@edozvola-db-01 ~]# sudo -u postgres psql test\r
+test=# insert into test1 (a,b) values ('baz',3);\r
+INSERT 0 1\r
+\r
+\r
+\r
+\r
+napraviti slave instancu\r
+db-01 => db-02\r
+\r
+\r
+[root@edozvola-db-02 ~]# systemctl stop postgresql-9.6.service\r
+\r
+\r
+\r
+\r
+[root@edozvola-db-01 data]# sudo -u postgres psql -c "select pg_start_backup('to-slave')"\r
+\r
+\r
+[root@edozvola-db-01 data]# rsync -rav --delete /var/lib/pgsql/9.6/data/ edozvola-db-02:/var/lib/pgsql/9.6/data/\r
+\r
+\r
+[root@edozvola-db-01 data]# sudo -u postgres psql -c "select pg_stop_backup()"\r
+\r
+\r
+\r
+\r
+[root@edozvola-db-02 data]# cp ~/recovery.conf .\r
+[root@edozvola-db-02 data]# chown postgres recovery.conf\r
+\r
+\r
+[root@edozvola-db-02 data]# systemctl start postgresql-9.6.service\r
+# ili ovo dolje za bolji debugging:\r
+[root@edozvola-db-02 data]# sudo -u postgres /usr/pgsql-9.6/bin/pg_ctl --pgdata=/var/lib/pgsql/9.6/data start\r
+server starting\r
+\r
+\r
+promote slave to master\r
+da bi svi podaci zavrsili na slave-u, na masteru je dobro izvrsiti komandu checkpoint\r
+\r
+\r
+\r
+\r
+[root@edozvola-db-02 data]# sudo -u postgres /usr/pgsql-9.6/bin/pg_ctl --pgdata=/var/lib/pgsql/9.6/data promote\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+[root@edozvola-db-02 ~]# cat recovery.conf\r
+standby_mode = 'on'\r
+primary_conninfo = 'host=10.200.1.61 port=5432 user=replication password=replication123'\r
+restore_command = 'cp /shared/pgsql/%f %p'\r
+archive_cleanup_command = 'pg_archivecleanup /shared/pgsql %r'\r
+\r
+\r
+\r
+\r
+skripte\r
+promoviranje slave-a u master\r
+\r
+\r
+[root@edozvola-db-01 pgsql]# pwd\r
+/var/lib/pgsql\r
+[root@edozvola-db-01 pgsql]# cat promote-slave-to-master.sh\r
+#!/bin/sh -xe\r
+\r
+\r
+\r
+\r
+/usr/pgsql-9.6/bin/pg_ctl --pgdata=/var/lib/pgsql/9.6/data promote\r
+\r
+\r
+\r
+\r
+\r
+\r
+kreiranje slave instance od mastera\r
+[root@edozvola-db-01 pgsql]# cat create-pgsql-slave.sh\r
+#!/bin/sh -e\r
+\r
+\r
+# WARNING: this script depends that two database nodes have IPs which and in x1 and x2\r
+# tr 12 21 does swap from currnet node number/ip to other one!\r
+\r
+\r
+test "`whoami`" != "postgres" && echo "$0 needs to be run as postgres user!" && exit 1\r
+\r
+\r
+here=`hostname -s`\r
+there=`hostname -s | tr 12 21`\r
+\r
+\r
+my_ip=`ip addr | grep 10.200.1. | sed 's/^.*\(10\.200\.1\.[0-9]*\)\/.*$/\1/'`\r
+other_ip=`echo $my_ip | tr 12 21`\r
+\r
+\r
+echo "Create slave on $here $my_ip using data from master on $there $other_ip"\r
+echo "[enter] to start"\r
+read\r
+\r
+\r
+#systemctl stop postgresql-9.6.service || true\r
+/usr/pgsql-9.6/bin/pg_ctl --pgdata=/var/lib/pgsql/9.6/data stop || true\r
+\r
+\r
+echo "select pg_start_backup('slave')" | ssh $there psql\r
+\r
+\r
+rsync -rav --delete --exclude pg_xlog $there:/var/lib/pgsql/9.6/data/ /var/lib/pgsql/9.6/data/\r
+\r
+\r
+echo "select pg_stop_backup()" | ssh $there psql\r
+\r
+\r
+test -e /var/lib/pgsql/9.6/data/recovery.done || ( echo "ERROR: no recovery.done !" && exit 1 )\r
+cat /var/lib/pgsql/9.6/data/recovery.done | sed -e s/$my_ip/$other_ip/ > /var/lib/pgsql/9.6/data/recovery.conf\r
+\r
+\r
+\r
+\r
+#systemctl start postgresql-9.6.service\r
+/usr/pgsql-9.6/bin/pg_ctl --pgdata=/var/lib/pgsql/9.6/data start\r
+\r
+\r
+\r
+\r
+\r
+\r
+hot_standby?\r