sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL installationer med hög tillgänglighet Patroni

Hej, idag kommer jag att förklara installationen av högtillgängliga patroni.

1-PostgreSQL-programvaruinstallation
2-Patroni-programvaruinstallation
3-etcd-programvaruinstallation, etcd conf.
4-patroni-konf.
5-sidors ryggstödsinställning och konf.
6-haproxy och keepalived
7-Alla andra konf.

PostgreSQL-programvara

yum install -y postgresql12-server postgresql12-client postgresql12-contrib postgresql12-devel

Patroni-programvara

export PATH="$PATH:/usr/pgsql-12/bin"yum install -y python3-pip-9.0.3-5.el7.noarch gcc python3-develpip3 install --upgrade pip wheelpip3 install psycopg2-binarypip3 install psycopg2>=2.5.4pip3 install patroni[etcd]

etcd installation och conf

yum install -y etcd
--vi /etc/etcd/etcd.conf##--pgdb-1ETCD_INITIAL_CLUSTER="etcd1=http://xxx.xxx.xx.xx:2380,etcd2=http://xxx.xxx.xx .xx:2380"ETCD_INITIAL_CLUSTER_STATE="new"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_ADVERTISE_PEER_URLS="http://xxx.xxx.xx.xx:2380"ETCD_DATA_DIR="/vard/delibault" ETCD_LISTEN_PEER_URLS="http://xxx.xxx.xx.xx:2380"ETCD_LISTEN_CLIENT_URLS="http://xxx.xxx.xx.xx:2379,http://127.0.0.1:2379"ETCD_ADVERTISE_CLIENT_URLS="http:/ /xxx.xxx.xx.xx:2379"ETCD_NAME="etcd1"##--pgdb-2ETCD_INITIAL_CLUSTER="etcd1=http://xxx.xxx.xx.xx:2380,etcd2=http://xxx.xxx .xx.xx:2380"ETCD_INITIAL_CLUSTER_STATE="new"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_ADVERTISE_PEER_URLS="http://xxx.xxx.xx.xx:2380"ETCD_DATA/delibet.cd="/var etcd"ETCD_LISTEN_PEER_URLS="http://xxx.xxx.xx.xx:2380"ETCD_LISTEN_CLIENT_URLS="http://xxx.xxx.xx.xx:2379,http://127.0.0.1:2379"ETCD_ADVERTISE_CLIENT_URLS="http://xxx.xxx.xx.xx:2379,http://127.0.0.1:2379" ://xxx.xxx.xx.xx:2379"ETCD_NAME="etcd2"systemctl aktivera etcdsystemctl start etcdsystemctl status etcdsystemctl stop etcd

Patroni konf.

Katalogen skapas för patroni yaml-filen. och postgres är auktoriserad

mkdir /etc/patroni/chown postgres:postgres /etc/patroni/mkdir /postgres/chown postgres:postgres /postgres/

–// yml-fil bör ställas in enligt serverns IP-adresser och minne etc. enligt serverresurser. inställningar måste göras.

scope:pgdb-patroniname:postgres1restapi:listen:xxx.xxx.xx.xx:8008connect_address:xxx.xxx.xx.xx:8008etcd:hosts:1xxx.xxx.xx.xx:2379,xxx.xxx.xx .xx:2379bootstrap:dcs:ttl:30loop_wait:10retry_timeout:10maximum_lag_on_failover:1048576postgresql:use_pg_rewind:trueparameters:wal_level:hot_standbyhot_standby:"on"wal_keep_segments:8max_wal_senders:10max_replication_slots:10wal_log_hints:"on"max_connections:200shared_buffers:1GBeffective_cache_size:3GBmaintenance_work_mem:256MBcheckpoint_completion_target:0.7 wal_buffers:16MBdefault_statistics_target:100random_page_cost:1.1effective_io_concurrency:300work_mem:5242kBmin_wal_size:1GBmax_wal_size:4GBmax_worker_processes:2max_parallel_workers_per_gather:1max_parallel_workers:2max_parallel_maintenance_workers:1archive_mode:"on"archive_timeout:1800sarchive_command:"pgbackrest --stanza=pgdb-patroni archive-push %p"recovery_conf:restore_command :"pgbackrest --stanza=pgdb-patroni archive-get %f %p"standby_mode:"on"in itdb:- kodning:UTF8- data-checksumspg_hba:- värdreplikator xxx.xxx.xx.xx/24 md5- värd för alla 0.0.0.0/0 md5användare:admin:lösenord:adminoptions:- createrole- createdbpostgresql:listen:xxx .xxx.xx.xx:5432connect_address:xxx.xxx.xx.xx:5432data_dir:/postgres/data/bin_dir:/usr/pgsql-12/binpgpass:/tmp/pgpass0authentication:replikation:användarnamn:replikatorlösenord:rep-passsuperuser användarnamn:postgrespassword:postgresrewind:användarnamn:rewind_userpassword:rewind_passwordparameters:unix_socket_directories:'/var/run/postgresql/'tags:nofailover:falsenoloadbalance:falseclonefrom:falsenosync:falsescope:xstapgrestroniname:pgdb-paxxlisten. :8008connect_address:xxx.xxx.xx.xx:8008etcd:hosts:xxx.xxx.xx.xx:2379,xxx.xxx.xx.xx:2379bootstrap:dcs:ttl:30loop_wait:10retry_timeout:10maximum_8_8_winds_7:7 :wal_level:hot_standbyhot_standby:"på"wal_keep_segments:8max_wal_sändare:10max_replication_slots:10wal_lo g_hints:"on"max_connections:200shared_buffers:1GBeffective_cache_size:3GBmaintenance_work_mem:256MBcheckpoint_completion_target:0.7wal_buffers:16MBdefault_statistics_target:100random_page_cost:1.1effective_io_concurrency:300work_mem:5242kBmin_wal_size:1GBmax_wal_size:4GBmax_worker_processes:2max_parallel_workers_per_gather:1max_parallel_workers:2max_parallel_maintenance_workers:1archive_mode:"on"archive_timeout:1800sarchive_command:"pgbackrest --stanza=pgdb-patroni archive-push %p"recovery_conf:restore_command:"pgbackrest --stanza=pgdb-patroni archive-get %f %p"standby_mode:"on"
initdb:- kodning:UTF8- data-checksumspg_hba:- värdreplikator xxx.xxx.xx.xx/24 md5- värd för alla 0.0.0.0/0 md5users:admin:lösenord:adminoptions:- createrole- createdbpostgresql:lyssna:xxx.xxx.xx.xx:5432connect_address:xxx.xxx.xx.xx:5432data_dir:/postgres/data/bin_dir:/usr/pgsql-12/binpgpass:/tmp/pgpass0authentication:replikering:användarnamn:replikatorlösenord:rep -passsuperuser:användarnamn:postgrespassword:postgresrewind:användarnamn:rewind_userpassword:rewind_passwordparameters:unix_socket_directories:'/var/run/postgresql/'tags:nofailover:falsenoloadbalance:falseclonefrom:falsenopresync:falsepatroni-tjänsten skapas mer /etc/systemd/system/patroni.service[Unit]Description=Löpare för att orkestrera en högtillgänglighet PostgreSQLAfter=syslog.target network.target[Service]Type=simpleUser=postgresGroup=postgresExecStart=/ usr/local/bin/patroni /etc/patroni/patroni.ymlKillMode=processTimeoutSec=30Restart=no[Install]WantedBy=multi-user.target
systemctl aktivera patronisystemctl start patronisystemctl status patronisystemctl stop patronijournalctl -xe -f -u patron

Samma konf. görs i andra servrar och tjänsten körs.

patronictl -d xxx.xxx.xx.xx lista pgdb-patroni+ Kluster:pgdb-patroni (xxx.xxx.xx.xx) -+----+-----------+ | Medlem | Värd | Roll | Stat | TL | Fördröjning i MB |+-----------+--------------+--------+-------- --+----+-----------+| postgres1 | xxx.xxx.xx.xx | Ledare | springer | 1 | || postgres2 | xxx.xxx.xx.xx | | springer | 1 | 0 |+-----------+--------------+--------+--------+ ----+-----------+Obs:Eftersom vi inte har installerat pgbackrest förrän nu kan vi få ett felmeddelande när vi installerar postgresql via patroni på 2. Om vi ​​startar om patroni-tjänster efter att ha installerat ryggstödet , kommer problemet att lösas. Eller så kan du sätta upp ett ryggstöd innan du startar dessa kunder.
patronictl -d xxx.xxx.xx.xx list pgdb-patronipatronictl -d xxx.xxx.xx.xx reinit pgdb-patronipatronictl -c /etc/patroni/patroni.yml list

  1. Hur man får radnummer i PostgreSQL

  2. SQL Server villkorligt flöde

  3. Hur justify_hours() fungerar i PostgreSQL

  4. Visa SQLite-frågeresultat med vertikal utdata