Nkwuputa
Abụ m onye nrụpụta. M na-ede koodu na-emekọrịta ihe na nchekwa data naanị dị ka onye ọrụ. N'ụzọ ọ bụla m na-eme ka à ga-asị na m bụ onye nchịkwa sistemu, ma ọ dịkarịa ala dba. Mana…
O mere na achọrọ m ịhazi ndabere nke nchekwa data postgresql. Enweghị igwe ojii - naanị jiri SSH wee hụ na ihe niile na-arụ ọrụ na-arịọghị ego. Kedu ihe anyị na-eme n'ọnọdụ ndị dị otú ahụ? Nke ahụ ziri ezi, anyị na-atụgharị pgdump n'ime cron, na-echekwa ihe niile na ebe nchekwa kwa ụbọchị, ma ọ bụrụ na anyị efunahụla kpamkpam, anyị na-eziga ebe a na-edebe ihe ochie n'ebe dị anya.
Oge a ihe isi ike bụ na dị ka atụmatụ si dị, nchekwa data kwesịrị itolite ihe dịka + - 100 MB kwa ụbọchị. N'ezie, mgbe izu ole na ole gachara, ọchịchọ ịkwado ihe niile na pgdump ga-apụ n'anya. Nke a bụ ebe nkwado ndabere na mpaghara na-abịa napụta.
Na-akpali mmasị? Nabata nwamba.
Ndabere na-abawanye bụ ụdị nkwado ndabere na mpaghara mgbe ọ bụghị faịlụ isi mmalite niile ka edepụtaghachiri, mana ọ bụ naanị ndị ọhụrụ na ndị gbanwere kemgbe e mepụtara mbipụta gara aga.
Dị ka onye nrụpụta ọ bụla nke na-achọghị (n'oge ahụ) ịghọta mgbagwoju anya nke postgres, achọrọ m ịchọta bọtịnụ akwụkwọ ndụ akwụkwọ ndụ. Ọ dị mma, ị maara, dị ka na AWS, DigitalOcean: ị pịa otu bọtịnụ - ị nwetara replication, ị pịa nke abụọ - ị debere ndabere, nke atọ - ị tụgharịrị ihe niile azụ awa ole na ole. Ahụghị m bọtịnụ ma ọ bụ ngwá ọrụ GUI mara mma. Ọ bụrụ na ị maara otu (n'efu ma ọ bụ ọnụ ala), dee banyere ya na nkwupụta.
Mgbe m gachara, ahụrụ m ngwá ọrụ abụọ onye pgbarman и pgbackrest. Enweghị m ihe ịga nke ọma na nke mbụ (akwụkwọ ndị na-adịghị ahụkebe, agbalịrị m ịchọpụta ihe niile dị ka akwụkwọ ntuziaka ochie si dị), ma na nke abụọ akwụkwọ ahụ wee bụrụ nke ruru, ma ọ bụghị na-enweghị ntụpọ. Iji mee ka ọrụ ndị a na-arụ ọrụ yiri nke ahụ dị mfe, e dere isiokwu a.
Mgbe ị gụchara isiokwu a, ị ga-amụta otú e si eme nkwado ndabere na mpaghara, chekwaa ha na ihe nkesa dịpụrụ adịpụ (ebe nchekwa na nkwado ndabere) ma weghachite ha ma ọ bụrụ na enweghị data ma ọ bụ nsogbu ndị ọzọ na isi ihe nkesa.
Ọzụzụ
Iji megharịa akwụkwọ ntuziaka, ị ga-achọ VPS abụọ. Nke mbụ ga-abụ nchekwa (ebe nchekwa nke a ga-echekwa ndabere), na nke abụọ, n'ezie, ihe nkesa n'onwe ya na postgres (n'ọnọdụ m, ụdị 11 nke postgres).
A na-eche na na ihe nkesa nwere postgres ị nwere mgbọrọgwụ, onye ọrụ sudo, onye ọrụ postgres na postgres n'onwe ya (a na-emepụta onye ọrụ postgres na-akpaghị aka mgbe ị na-etinye postgresql), na na ebe nchekwa nchekwa enwere mgbọrọgwụ na onye ọrụ sudo (na ntuziaka. a ga-eji aha njirimara pgbackrest) .
Ka ị nwee nsogbu ole na ole mgbe ị na-edegharị ntuziaka ahụ, m na-ede n'akwụkwọ edemede ebe, onye ọrụ na kedu ikike m ji mebie iwu ahụ mgbe ị na-ede ma na-enyocha akụkọ ahụ.
Ịwụnye pgbackrest
Ebe nchekwa (pgbackrest onye ọrụ):
1. Budata ebe nchekwa site na pgbackrest wee bufee ọdịnaya ya na nchekwa / wuo:
sudo mkdir /build
sudo wget -q -O -
https://github.com/pgbackrest/pgbackrest/archive/release/2.18.tar.gz |
sudo tar zx -C /build
2. Wụnye ndabere dị mkpa maka mgbakọ:
sudo apt-get update
sudo apt-get install build-essential libssl-dev libxml2-dev libperl-dev zlib1g-dev
libpq-dev
3. Ịgbakọta pgbackrest:
cd /build/pgbackrest-release-2.18/src && sudo ./configure
sudo make -s -C /build/pgbackrest-release-2.18/src
4. Detuo faịlụ nwere ike ime na /usr/bin ndekọ:
sudo cp /build/pgbackrest-release-2.18/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest
5. Pgbackrest chọrọ perl. Wụnye:
sudo apt-get install perl
6. Mepụta akwụkwọ ndekọ aha maka ndekọ, nye ha ụfọdụ ikike:
sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf
7. Lelee:
pgbackrest version
Ihe nkesa Postgres (onye ọrụ sudo ma ọ bụ mgbọrọgwụ):
Usoro nke ịwụnye pgbackrest na sava nwere postgres yiri usoro nrụnye na ebe nchekwa (ee, pgbackrest ga-etinyerịrị na sava abụọ ahụ), mana na paragraf nke 6 iwu nke abụọ na nke ikpeazụ:
sudo chown pgbackrest:pgbackrest /var/log/pgbackrest
sudo chown pgbackrest:pgbackrest /etc/pgbackrest/pgbackrest.conf
jiri: dochie
sudo chown postgres:postgres /var/log/pgbackrest
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
Ịtọlite mmekọrịta n'etiti sava site na SSH na-enweghị paswọọdụ
Ka pgbackrest rụọ ọrụ nke ọma, ọ dị mkpa ịhazi mmekọrịta n'etiti ihe nkesa postgres na ebe nchekwa site na iji faịlụ igodo.
Ebe nchekwa (pgbackrest onye ọrụ):
Mepụta otu ụzọ igodo:
mkdir -m 750 /home/pgbackrest/.ssh
ssh-keygen -f /home/pgbackrest/.ssh/id_rsa
-t rsa -b 4096 -N ""
Ịkpachara anya Anyị na-agba ọsọ iwu ndị a na-enweghị sudo.
Ihe nkesa Postgres (onye ọrụ sudo ma ọ bụ mgbọrọgwụ):
Mepụta otu ụzọ igodo:
sudo -u postgres mkdir -m 750 -p /var/lib/postgresql/.ssh
sudo -u postgres ssh-keygen -f /var/lib/postgresql/.ssh/id_rsa
-t rsa -b 4096 -N ""
Ebe nchekwa (onye ọrụ sudo):
Detuo igodo ọha nke sava postgres na nkesa ebe nchekwa:
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' &&
echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' &&
sudo ssh root@<postgres_server_ip> cat /var/lib/postgresql/.ssh/id_rsa.pub) |
sudo -u pgbackrest tee -a /home/pgbackrest/.ssh/authorized_keys
Na nzọụkwụ a, a ga-ajụ gị maka paswọọdụ maka onye ọrụ mgbọrọgwụ. Ịkwesịrị itinye paswọọdụ nke onye ọrụ mgbọrọgwụ nke ihe nkesa postgres!
Ihe nkesa Postgres (onye ọrụ sudo):
Jiri postgres detuo igodo ọha na sava ahụ:
(echo -n 'no-agent-forwarding,no-X11-forwarding,no-port-forwarding,' &&
echo -n 'command="/usr/bin/pgbackrest ${SSH_ORIGINAL_COMMAND#* }" ' &&
sudo ssh root@<repository_server_ip> cat /home/pgbackrest/.ssh/id_rsa.pub) |
sudo -u postgres tee -a /var/lib/postgresql/.ssh/authorized_keys
Na nzọụkwụ a, a ga-ajụ gị maka paswọọdụ maka onye ọrụ mgbọrọgwụ. Ịkwesịrị ịbanye kpọmkwem paswọọdụ nke onye ọrụ mgbọrọgwụ nke ebe nchekwa ahụ!
Anyị na-elele:
Ebe nchekwa (onye ọrụ mgbọrọgwụ, maka ịdị ọcha nke nnwale):
sudo -u pgbackrest ssh postgres@<postgres_server_ip>
Ihe nkesa Postgres (onye ọrụ mgbọrọgwụ, maka ịdị ọcha nke nnwale):
sudo -u postgres ssh pgbackrest@<repository_server_ip>
Anyị na-eme ka anyị nweta ohere na-enweghị nsogbu.
Ịtọlite sava postgres
Ihe nkesa Postgres (onye ọrụ sudo ma ọ bụ mgbọrọgwụ):
1. Ka anyị kwe ka ịkụ aka na ihe nkesa postgres site na IP dịpụrụ adịpụ. Iji mee nke a, dezie faịlụ postgresql.conf (nke dị na /etc/postgresql/11/ main folder), na-agbakwunye ahịrị na ya:
listen_addresses = '*'
Ọ bụrụ na ahịrị dị otú ahụ adịlarị, ma ọ bụ degharịa ya ma ọ bụ tọọ uru paramita dị ka '*'.
Na faịlụ pg_hba.conf (dịkwa na folda ahụ /etc/postgresql/11/main) tinye ahịrị ndị a:
hostssl all all 0.0.0.0/0 md5
host all all 0.0.0.0/0 md5
ebe:
hostssl/host - подключаемся через SSL (или нет)
all - разрешаем подключение ко всем базам
all - имя пользователя, которому разрешаем подключение (всем)
0.0.0.0/0 - маска сети с которой можно подключаться
md5 - способ шифрования пароля
2. Ka anyị mee ntọala ndị dị mkpa na postgresql.conf (ọ dị na folda /etc/postgresql/11/main) maka pgbackrest ịrụ ọrụ:
archive_command = 'pgbackrest --stanza=main archive-push %p' # Где main - название кластера. При установке postgres автоматически создает кластер main.
archive_mode = on
max_wal_senders = 3
wal_level = replica
3. Ka anyị mee ntọala ndị dị mkpa na faịlụ nhazi pgbackrest (/etc/pgbackrest/pgbackrest.conf):
[main]
pg1-path=/var/lib/postgresql/11/main
[global]
log-level-file=detail
repo1-host=<repository_server_ip>
4. Bugharịa postgresql:
sudo service postgresql restart
Ịtọlite sava nchekwa
Ebe nchekwa (onye ọrụ pgbackrest):
Ka anyị mee ntọala ndị dị mkpa na faịlụ nhazi pgbackrest
(/etc/pgbackrest/pgbackrest.conf):
[main]
pg1-host=<postgres_server_ip>
pg1-path=/var/lib/postgresql/11/main
[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2 # Параметр, указывающий сколько хранить полных бэкапов. Т.е. если у вас есть два полных бэкапа и вы создаете третий, то самый старый бэкап будет удален. Можно произносить как "хранить не более двух бэкапов" - по аналогии с ротациями логов. Спасибо @Aytuar за исправление ошибки.
start-fast=y # Начинает резервное копирование немедленно, прочитать про этот параметр можно тут https://postgrespro.ru/docs/postgrespro/9.5/continuous-archiving
Ịmepụta ebe nchekwa
Ebe nchekwa (onye ọrụ pgbackrest):
Mepụta nchekwa ọhụrụ maka ụyọkọ ahụ isi:
sudo mkdir -m 770 /var/lib/pgbackrest
sudo chown -R pgbackrest /var/lib/pgbackrest/
sudo -u pgbackrest pgbackrest --stanza=main stanza-create
nnyocha
Ihe nkesa Postgres (onye ọrụ sudo ma ọ bụ mgbọrọgwụ):
Anyị na-elele ihe nkesa postgres:
sudo -u postgres pgbackrest --stanza=main --log-level-console=info check
Ebe nchekwa (onye ọrụ pgbackrest):
Anyị na-elele ihe nkesa ebe nchekwa:
sudo -u pgbackrest pgbackrest --stanza=main --log-level-console=info check
Anyị na-ejide n'aka na na mmepụta anyị na-ahụ ahịrị "elele njedebe iwu: emechara nke ọma".
Ike gwụrụ? Ka anyị gaa n'ihu n'akụkụ kacha amasị.
Ime ndabere
Ebe nchekwa (onye ọrụ pgbackrest):
1. Mee nkwado ndabere na mpaghara:
sudo -u pgbackrest pgbackrest --stanza=main backup
2. Gbaa mbọ hụ na emepụtara nkwado ndabere:
ls /var/lib/pgbackrest/backup/main/
Pgbackrest ga-emepụta nkwado ndabere zuru oke nke mbụ. Ọ bụrụ na-ịchọrọ, ị nwere ike ịgba ọsọ nkwado ndabere na mpaghara ọzọ wee hụ na sistemụ na-emepụta nkwado ndabere na mpaghara.
Ọ bụrụ na ịchọrọ ịme nkwado ndabere zuru oke ọzọ, tinyezie ọkọlọtọ agbakwunyere:
sudo -u pgbackrest pgbackrest --stanza=main --type=full backup
Ọ bụrụ na ịchọrọ mmepụta console zuru ezu, tinyezie:
sudo -u pgbackrest pgbackrest --stanza=main --type=full --log-level-console=info backup
Na-eweghachi ndabere
Ihe nkesa Postgres (onye ọrụ sudo ma ọ bụ mgbọrọgwụ):
1. Kwụsị ụyọkọ na-agba ọsọ:
sudo pg_ctlcluster 11 main stop
2. Iweghachi na ndabere:
sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta --recovery-option=recovery_target=immediate restore
Ka iweghachite nchekwa data na steeti nkwado ndabere zuru oke, jiri iwu ahụ na-akọwapụtaghị recovery_target:
sudo -u postgres pgbackrest --stanza=main --log-level-console=info --delta restore
Ihe dị mkpa! Mgbe mgbake gasịrị, ọ nwere ike ime na nchekwa data ahụ na-arapara na ọnọdụ mgbake (a ga-enwe njehie dị ka ERROR: enweghị ike ịme DROP DATABASE na azụmahịa na-agụ naanị). N'ikwu eziokwu, aghọtabeghị m ihe jikọrọ ya na nke a. Ihe ngwọta bụ nke a (ị ga-echere ntakịrị mgbe emechara iwu ahụ):
sudo -u postgres psql -c "select pg_wal_replay_resume()"
N'ezie, ọ ga-ekwe omume iweghachite nkwado ndabere na mpaghara aha ya. Ebe a bụ naanị m
3. Malite ụyọkọ:
sudo pg_ctlcluster 11 main start
Mgbe iweghachite nkwado ndabere na mpaghara, anyị kwesịrị ime nkwado ndabere nke abụọ:
Ebe nchekwa (onye ọrụ pgbackrest):
sudo pgbackrest --stanza=main backup
Ọ gwụla. N'ikpeazụ, m ga-achọ ichetara gị na ọ dịghị ụzọ m na-agbalị ime ka à ga-asị na m bụ agadi dba na m ga-eji igwe ojii na obere ohere. Ugbu a, mụ onwe m na-amalite ịmụ isiokwu dị iche iche dị ka ndabere, mmegharị, nlekota oru, wdg. na m na-ede obere akụkọ banyere nsonaazụ ka m wee nye obere onyinye na obodo ma hapụ onwe m obere mpempe akwụkwọ aghụghọ.
N'isiokwu ndị na-esonụ, m ga-agbalị ikwu banyere atụmatụ ndị ọzọ - mgbake data na ụyọkọ dị ọcha, izo ya ezo nke ndabere na ibipụta na S3, nkwado ndabere na mpaghara rsync.
isi: www.habr.com