Si të konfiguroni përsëritjen Master-Slave për PostgreSQL 9.6 në Ubuntu 16.04
PostgreSQL ose Postgres është një sistem i menaxhimit të bazës së të dhënave me burim të hapur (ORDBMS) me më shumë se 15 vjet zhvillim aktiv. Është një server i fuqishëm i bazës së të dhënave dhe mund të përballojë ngarkesa të larta pune. PostgreSQL mund të përdoret në serverët Linux, Unix, BSD dhe Windows.
Replikimi i bazës së të dhënave master/slave është një proces i kopjimit (sinkronizimit) të të dhënave nga një bazë të dhënash në një server (master) në një bazë të dhënash në një server tjetër (skllevërit). Përfitimi kryesor i këtij procesi është shpërndarja e bazave të të dhënave në makina të shumta, kështu që kur serveri kryesor ka një problem, ekziston një makinë rezervë me të njëjtat të dhëna në dispozicion për trajtimin e kërkesave pa ndërprerje.
PostgreSQL ofron disa mënyra për të përsëritur një bazë të dhënash. Mund të përdoret për qëllime rezervë dhe për të siguruar një server bazë të dhënash me disponueshmëri të lartë. Në këtë tutorial, ne do t'ju tregojmë se si të instaloni dhe konfiguroni PostgreSQL 9.6 Master-Slave Replication në serverin Ubuntu 16.04. Ne do të përdorim modalitetin Hot standby dhe është një pikënisje shumë e mirë për të mësuar PostgreSQL në thellësi.
Çfarë do të bëjmë:
- Instaloni PostgreSQL 9.6.
- Konfiguro UFW Firewall.
- Konfiguro serverin MASTER.
- Konfiguro serverin SLAVE.
- Kopjo të dhënat e PostgreSQL nga MASTER në SLAVE.
- Testimi.
Kusht paraprak:
- 1 server Ubuntu 16.04
- MASTER - Lejon leximin dhe shkrimin - IP: 10.0.15.10
- SLAVE - Vetëm e lexuar - IP: 10.0.15.11
Hapi 1 - Instaloni PostgreSQL 9.6
Në këtë tutorial, ne do të instalojmë versionin më të fundit të PostgreSQL 9.6. Në depon zyrtare të Ubuntu, ata ofrojnë vetëm PostgreSQL 9.5, kështu që ne duhet të instalojmë versionin më të fundit nga depoja PostgreSQL drejtpërdrejt.
Shtoni depon e postgreSQL 9.6 në drejtorinë sources.list.d.
echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' | tee /etc/apt/sources.list.d/postgresql.list
Dhe importoni çelësin e nënshkrimit PostgreSQL në sistem.
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
Tani përditësoni depon e sistemit me komandën apt.
apt-get update
Më pas, instaloni paketën PosgreSQL 9.6 me komandën apt më poshtë.
apt-get install -y postgresql-9.6 postgresql-contrib-9.6
Nëse instalimi ka përfunduar, shtoni atë për të filluar automatikisht në kohën e nisjes.
systemctl enable postgresql
Si parazgjedhje, PostgreSQL po funksionon në adresën IP të localhost (127.0.0.1) me portin 5432 në Ubuntu, kontrollojeni me komandën netstat.
netstat -plntu
PostgreSQL 9.6 po funksionon në sistem. Në hapin tjetër, duhet të konfigurojmë një fjalëkalim për përdoruesin e postgres.
Nga llogaria rrënjësore, hyni te përdoruesi i postgres me komandën su, më pas hyni në terminalin e përparmë të postgres psql.
su - postgres
psqlNdrysho fjalëkalimin për përdoruesin e postgres dhe kontrollo informacionin e lidhjes me pyetjet e postgres më poshtë.
\password postgres
\conninfoPostgreSQL 9.6 është instaluar në sistem, funksionon pa gabime dhe fjalëkalimi për përdoruesin e postgres është përditësuar.
Hapi 2 - Konfiguro UFW Firewall
UFW ose Firewall i Pakomplikuar është një aplikacion për të menaxhuar murin e zjarrit të bazuar në iptables në Ubuntu. UFW është mjeti i parazgjedhur i konfigurimit të murit të zjarrit për Ubuntu Linux dhe ofron një mënyrë miqësore për përdoruesit për të konfiguruar murin e zjarrit.
Mund të instalojmë ufw nga depoja kryesore e Ubuntu me komandën apt.
apt-get install -y ufw
Shtoni shërbime të reja në murin e zjarrit UFW: shtoni shërbimet SSH dhe PostgreSQL me komandat më poshtë.
ufw allow ssh
ufw allow postgresqlAktivizoni murin e zjarrit UFW dhe kontrolloni statusin.
ufw enable
ufw statusUFW firewall është instaluar dhe shërbimi PostgreSQL është shtuar.
SHËNIM:
Ekzekutoni hapin 1 dhe hapin 2 në serverin MASTER dhe SLAVE.
Hapi 3 - Konfiguro serverin MASTER PostgreSQL
Serveri kryesor ka adresën IP 10.0.15.10 dhe shërbimi postgres do të funksionojë nën atë IP me portin e paracaktuar. Serveri kryesor do të ketë leje për READ dhe WRITE në bazën e të dhënave dhe do të kryejë riprodhimin e transmetimit në serverin skllav.
Shkoni te drejtoria e konfigurimit të postgres /etc/postgresql/9.6/main dhe modifikoni skedarin postgresql.conf me vim.
cd /etc/postgresql/9.6/main/
vim postgresql.confZhkomentoni linjën listen_addresses dhe ndryshoni vlerën në adresën IP të serverit kryesor 10.0.15.10.
listen_addresses = '10.0.15.10'
Zhkomentoni linjën wal_level dhe ndryshoni vlerën në hot_standby.
wal_level = hot_standby
Për nivelin e sinkronizimit, ne do të përdorim sinkronizimin lokal. Zhkomentoni dhe ndryshoni vijën e vlerës si më poshtë.
synchronous_commit = local
Aktivizo modalitetin e arkivimit dhe ndrysho opsionin archive_command në komandën cp %p /var/lib/postgresql/9.6/main/archive/%f.
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/9.6/main/archive/%f'Për cilësimet e riprodhimit, në këtë tutorial ne përdorim vetëm 2 serverë, master dhe slave, anulojmë linjën wal_sender dhe ndryshojmë vlerën në 2 dhe për wal_keep_segments< Vlera është 10.
max_wal_senders = 2
wal_keep_segments = 10Për emrin e aplikacionit, hiqni nga komenti linjën synchronous_standby_names dhe ndryshoni vlerën në emrin pgslave001.
synchronous_standby_names = 'pgslave001'
Ruani skedarin dhe dilni nga redaktori.
Në skedarin postgresql.conf, modaliteti i arkivit është i aktivizuar, kështu që ne duhet të krijojmë një drejtori të re për arkivin. Krijoni një drejtori të re arkivi, ndryshoni lejen dhe ndryshoni pronarin në përdoruesin postgres.
mkdir -p /var/lib/postgresql/9.6/main/archive/
chmod 700 /var/lib/postgresql/9.6/main/archive/
chown -R postgres:postgres /var/lib/postgresql/9.6/main/archive/Më pas, modifikoni skedarin pg_hba.conf për konfigurimin e vërtetimit.
vim pg_hba.conf
Ngjitni konfigurimin më poshtë në fund të rreshtit.
# Localhost
host replication replica 127.0.0.1/32 md5
# PostgreSQL Master IP address
host replication replica 10.0.15.10/32 md5
# PostgreSQL SLave IP address
host replication replica 10.0.15.11/32 md5Ruani dhe dilni, më pas rinisni PostgreSQL.
systemctl restart postgresql
PostgreSQL po funksionon nën adresën IP 10.0.15.10, kontrollojeni me komandën netstat.
netstat -plntu
Më pas, krijoni një përdorues të ri për përsëritje. Ne do të krijojmë një përdorues të ri të quajtur replica me fjalëkalim [email e mbrojtur]. Ju lutemi zgjidhni një fjalëkalim të sigurt këtu për konfigurimin tuaj! Identifikohu te përdoruesi i postgres dhe hyr në terminalin e përparmë të postgres psql.
su - postgres
psqlKrijo përdorues të ri kopje me fjalëkalim [email e mbrojtur] me pyetjen postgres më poshtë.
CREATE USER replica REPLICATION LOGIN ENCRYPTED PASSWORD '';
Tani kontrolloni përdoruesin e ri me pyetjen du më poshtë dhe do të shihni përdoruesin e kopjes me privilegje replikimi.
\du
Konfigurimi i serverit MASTER ka përfunduar.
Hapi 4 - Konfiguro Serverin SLAVE
Serveri SLAVE ka adresën IP 10.0.15.11. Dhe ky server do të ketë vetëm një leje READ në bazën e të dhënave. Serveri i bazës së të dhënave Postgres do të funksionojë nën adresën IP të serverit, jo një IP të lokalit.
Ndalo shërbimin postgres në serverin skllav me komandën systemctl më poshtë.
systemctl stop postgresql
Shkoni te drejtoria e konfigurimit Postgres /etc/postgresql/9.6/main, më pas modifikoni skedarin e konfigurimit postgresql.conf.
cd /etc/postgresql/9.6/main/
vim postgresql.confZhkomentoni linjën listen_addresses dhe zëvendësoni vlerën me adresën IP të serverit skllavë 10.0.15.11.
listen_addresses = '10.0.15.11'
Zhkomentoni linjën wal_level dhe ndryshoni vlerën në hot_standby.
wal_level = hot_standby
Për nivelin e sinkronizimit, hiqni komentin nga linja synchronous_commit dhe ndryshoni vlerën siç tregohet më poshtë.
synchronous_commit = local
Për cilësimin e riprodhimit, hiqni komentin e linjës max_wal_senders dhe zëvendësoni vlerën me 2 sepse përdorni vetëm 2 serverë. Dhe për segmentet wal_keep_, ndryshojeni vlerën në 10.
max_wal_senders = 2
wal_keep_segments = 10Zhkomentoni linjën synchronous_standby_names për emrin e aplikacionit dhe ndryshoni vlerën në emrin pgslave001.
synchronous_standby_names = 'pgslave001'
Aktivizo hot_standby për serverin skllavë duke hequr komentin e rreshtit të mëposhtëm dhe ndryshoje vlerën në on.
hot_standby = on
Ruani skedarin dhe dilni nga redaktori.
Hapi 5 - Kopjo të dhënat e PostgreSQL nga MASTER në SLAVE
Më pas, ne duam të zëvendësojmë drejtorinë kryesore postgres në serverin SLAVE me direktorinë kryesore të të dhënave nga serveri MASTER.
Hyni në serverin SLAVE dhe hyni në përdoruesin e postgres.
su - postgres
Shkoni te drejtoria kryesore e të dhënave postgres dhe bëni kopje rezervë duke riemëruar emrin e drejtorisë.
cd 9.6/
mv main main-bekupKrijo drejtorinë e re kryesore si përdorues postgres dhe sigurohu që të kesh një leje si direktoria kryesore-bekup.
mkdir main/
chmod 700 main/Më pas, kopjoni direktorinë kryesore nga serveri MASTER në serverin SLAVE me komandën pg_basebackup, ne do të përdorim përdoruesin kopje për të kryer këtë kopje të të dhënave.
pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/postgresql/9.6/main -P --xlog
Password:Kur transferimi i të dhënave të përfundojë, shkoni te drejtoria kryesore e të dhënave dhe krijoni një skedar të ri recovery.conf.
cd /var/lib/postgresql/9.6/main/
vim recovery.confNgjitni konfigurimin më poshtë:
standby_mode = 'on'
primary_conninfo = 'host=10.0.15.10 port=5432 user=replica application_name=pgslave001'
restore_command = 'cp /var/lib/postgresql/9.6/main/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'Ruani dhe dilni, më pas ndryshoni lejet e skedarit në 600 me chmod.
chmod 600 recovery.conf
Tani filloni PostgreSQL 9.6 në serverin SLAVE dhe sigurohuni që shërbimi postgres të funksionojë në adresën IP 10.0.15.11 me netstat.
systemctl start postgresql
netstat -plntuTransferimi dhe konfigurimi i të dhënave për serverin SLAVE ka përfunduar.
Hapi 6 - Testimi
Për testim, ne do të kontrollojmë statusin e replikimit të PostgreSQL 9.6 dhe do të përpiqemi të krijojmë një tabelë të re në serverin MASTER, më pas do të kontrollojmë replikimin duke kontrolluar të gjitha të dhënat nga serveri SLAVE.
Hyni në serverin MASTER dhe hyni te përdoruesi i postgres.
su - postgres
Ekzekutoni komandat psql më poshtë për të parë statusin e riprodhimit.
psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
psql -x -c "select * from pg_stat_replication;"Ju do të merrni rezultatet si më poshtë.
Më pas, përpiquni të krijoni një tabelë të re nga serveri MASTER. Hyni te përdoruesi postgres në serverin kryesor.
su - postgres
psqlDhe krijoni një tabelë të re me emrin replica_test dhe futni të dhënat në tabelë duke ekzekutuar pyetjet postgres më poshtë.
CREATE TABLE replica_test (hakase varchar(100));
INSERT INTO replica_test VALUES ('linux-console.net');
INSERT INTO replica_test VALUES ('This is from Master');
INSERT INTO replica_test VALUES ('pg replication by hakase-labs');Më pas, identifikohuni te përdoruesi postgres në serverin SLAVE dhe hyni në terminalin psql.
su - postgres
psqlKontrolloni të dhënat në tabelën replica_test me pyetjen postgres më poshtë.
select * from replica_test;
Dhe ju do të merrni të njëjtat të dhëna si në MASTER, i cili përsëritet nga serveri MASTER në serverin SLAVE.
Test shtesë:
Testoni për të shkruar në serverin SLAVE me pyetjen më poshtë.
INSERT INTO replica_test VALUES ('this is SLAVE');
Dhe do të merrni një mesazh gabimi rreth pyetjes Nuk mund të ekzekutohet INSERT në serverin SLAVE.
Instalimi dhe konfigurimi i PostgreSQL 9.6 me Replikimin Master-Slave në Ubuntu 16.04 Xenial Xerus ka qenë i suksesshëm.
Referenca
- https://linux-console.net/tutorial/postgresql-replication-on-ubuntu-15-04/