PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

ClusterControl CLI से अपने PostgreSQL डेटाबेस को कैसे प्रबंधित करें?

क्या आप जानते हैं कि ClusterControl वेब UI के अलावा, आप अपने PostgreSQL इंस्टेंस को प्रबंधित करने के लिए कमांड लाइन इंटरफ़ेस का भी उपयोग कर सकते हैं?

ClusterControl PostgreSQL स्ट्रीमिंग प्रतिकृति (एसिंक्रोनस और सिंक्रोनस प्रतिकृति दोनों) के साथ-साथ स्टैंडअलोन PostgreSQL उदाहरण का समर्थन करता है। हमने उपलब्ध कार्यक्षमता के मामले में कमांड लाइन इंटरफ़ेस को UI के करीब बनाने के लिए अपना सर्वश्रेष्ठ प्रयास किया है।

आप सीएलआई का उपयोग क्यों करना चाहेंगे?

यह आपको एक कमांड में संपूर्ण प्रतिकृति सेटअप को परिनियोजित करने, या फ़ेलओवर करने, या सेटअप में नए नोड जोड़ने की अनुमति देता है। यह Ansible, Chef या Puppet में लिखे आपके मौजूदा इंफ्रास्ट्रक्चर ऑटोमेशन कोड के साथ बहुत अच्छी तरह से एकीकृत होता है।

यह ब्लॉग पोस्ट ClusterControl CLI, या s9s का उपयोग करके PostgreSQL स्ट्रीमिंग प्रतिकृति क्लस्टर को प्रबंधित करने के तरीके पर एक पूर्वाभ्यास प्रदान करता है।

ध्यान दें कि इस ब्लॉग पोस्ट में दिखाई गई अधिकांश कार्यात्मकताओं के लिए आपके पास ClusterControl स्थापित और एक वैध सदस्यता के साथ चलने की आवश्यकता है, या तो वाणिज्यिक लाइसेंस या नि:शुल्क परीक्षण लाइसेंस (ClusterControl स्थापना के 30 दिन बाद तक मान्य)।

क्लस्टर परिनियोजन और आयात

नया क्लस्टर परिनियोजित करना

नया क्लस्टर परिनियोजित करने या मौजूदा PostgreSQL क्लस्टर को ClusterControl में आयात करने से पहले, सुनिश्चित करें कि ClusterControl नोड से सभी डेटाबेस नोड्स में पासवर्ड रहित SSH पहले से कॉन्फ़िगर किया गया है। माना कि हम एक नया तीन-नोड PostgreSQL स्ट्रीमिंग प्रतिकृति तैनात करना चाहते हैं, ClusterControl नोड पर निम्न कमांड चलाएँ:

$ whoami
root
$ ssh-keygen -t rsa # if you haven't generated SSH key
$ ssh-copy-id 192.168.0.91 # PostgreSQL1
$ ssh-copy-id 192.168.0.92 # PostgreSQL2
$ ssh-copy-id 192.168.0.93 # PostgreSQL3

ClusterControl नोड पर, सत्यापित करें कि क्या आप पासवर्ड के बिना निम्न कमांड कर सकते हैं:

$ ssh 192.168.0.91 "ls /root"

यदि आप निर्देशिका सामग्री देख सकते हैं, तो आप अच्छी स्थिति में हैं। इसके बाद, क्लस्टर को परिनियोजित करने के लिए --create ध्वज के साथ ClusterControl CLI का उपयोग करें:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.91?master;192.168.0.92?slave;192.168.0.93?slave" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='PostgreSQL 11 Streaming Replication' \
--wait
Creating PostgreSQL Cluster
\ Job 259 RUNNING    [█▋        ]  15% Installing helper packages

हमने पहला नोड निर्दिष्ट किया, 192.168.0.91 मास्टर के रूप में और बाकी दास हैं। चूंकि हमने रूट उपयोगकर्ता के माध्यम से पहले से ही पासवर्ड रहित एसएसएच कॉन्फ़िगर किया है, हमने ओएस उपयोगकर्ता को "रूट" के रूप में निर्दिष्ट किया है, साथ ही संबंधित एसएसएच कुंजी फ़ाइल --os-key-file ध्वज का उपयोग कर। --wait ध्वज का अर्थ है कि कार्य प्रतीक्षा करेगा और उसके समाप्त होने तक प्रगति की रिपोर्ट करेगा।

आप गतिविधि> कार्य> PostgreSQL क्लस्टर बनाना के अंतर्गत ClusterControl UI से परिनियोजन प्रगति की निगरानी भी कर सकते हैं :

एक बार परिनियोजन पूरा हो जाने पर, हम --stat ध्वज का उपयोग करके चल रहे क्लस्टर का सारांश देख सकते हैं:

$ s9s cluster --stat

मौजूदा क्लस्टर आयात करना

यदि मान लें कि आपके पास पहले से ही मैन्युअल रूप से तैनात एक PostgreSQL स्ट्रीमिंग प्रतिकृति क्लस्टर है, तो आप निम्न कमांड में दिखाए गए अनुसार --register ध्वज का उपयोग करके इसे ClusterControl में आयात कर सकते हैं:

$ s9s cluster \
--register \
--cluster-type=postgresql \
--nodes="192.168.0.91;192.168.0.92;192.168.0.93" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 11" \
--wait
Register PostgreSQL
- Job 263 RUNNING    [        █ ] ---% Importing Cluster

ClusterControl तब निर्दिष्ट नोड्स से कनेक्ट होगा, टोपोलॉजी की खोज करेगा और क्लस्टर को ClusterControl में पंजीकृत करेगा। जैसा कि ऊपर दिखाया गया है, आप 's9s क्लस्टर --stat' कमांड से सत्यापित कर सकते हैं।

नोड और क्लस्टर प्रबंधन

सेवा नियंत्रण

किसी क्लस्टर का रोलिंग पुनरारंभ करने के लिए, क्लस्टर आईडी निर्दिष्ट करें और --rolling-restart ध्वज का उपयोग करें:

$ s9s cluster --rolling-restart --cluster-id=8 --wait
Rolling Restart
- Job 264 RUNNING    [██▊       ]  27% Waiting for 192.168.0.91

क्लस्टर को रोकने के लिए घटक "क्लस्टर" के लिए --stop ध्वज का उपयोग करें। प्रोग्रेस बार के बजाय जॉब आउटपुट देखने के लिए, हम इसके बजाय --log फ्लैग का उपयोग कर सकते हैं:

$ s9s cluster --stop --cluster-id=8 --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Setting cluster to 'SHUTTING_DOWN' state.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting PostgreSQL top stop.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting PostgreSQL top stop.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting PostgreSQL top stop.
Setting cluster to 'STOPPED' state.

यह वेब UI के समान कार्य संदेशों की रिपोर्ट करेगा। उपरोक्त के समान, क्लस्टर शुरू करने के लिए, बस --स्टार्ट ध्वज का उपयोग करें (हम जॉब लॉग के बजाय प्रगति देखने के लिए --वेट ध्वज का उपयोग करते हैं):

$ s9s cluster --start --cluster-id=8 --wait
Starting Cluster
\ Job 272 RUNNING    [     █    ] ---% Start Cluster

डेटाबेस नोड पर PostgreSQL सेवा को पुनरारंभ करने के लिए, हम "नोड" घटक और --restart ध्वज का उपयोग करते हैं:

$ s9s node \
--restart \
--cluster-id=8 \
--nodes=192.168.0.92 \
--log
Preparing to restart host.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting to stop.
192.168.0.92:5432: Starting PostgreSQL.
192.168.0.92:5432: The postgresql service was started.
192.168.0.92:5432: Waiting to start.

PostgreSQL नोड को रोकने और शुरू करने के लिए, बस उसी कमांड को --stop या --start फ्लैग के साथ लागू करें, जैसा कि नीचे दिखाया गया है:

$ s9s node --stop --cluster-id=8 --nodes=192.168.0.92
$ s9s node --start --cluster-id=8 --nodes=192.168.0.92

ध्यान दें कि वे कार्रवाइयां सिस्टम को रीबूट नहीं करेंगी।

स्केलिंग नोड

क्लस्टर से नोड निकालने के लिए --remove-node फ्लैग का उपयोग करें:

$ s9s cluster \
--remove-node \
--nodes=192.168.0.93 \
--cluster-id=8 \
--log
Removing node 192.168.0.93: checking job parameters.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.93:5432: removed PostgreSQL Server
Updating load balancers.

एक नया नोड जोड़ना समान रूप से काम करता है, लेकिन आपको यह सुनिश्चित करना होगा कि नोड पहले से पासवर्ड रहित एसएसएच के माध्यम से पहुंच योग्य है। पहले इसे कॉन्फ़िगर करें और फिर --add-node ध्वज का उपयोग करके नोड जोड़ें:

$ s9s cluster \
--add-node \
--nodes=192.168.0.93 \
--cluster-id=8 \
--log
addNode: Verifying job parameters.
Found a master candidate: 192.168.0.91:5432, adding 192.168.0.93:5432 as a slave.
Verifying job parameters.
192.168.0.93:5432: Disabling SELinux/Apparmor.
192.168.0.93: Checking firewall.
192.168.0.93: Disabling firewalld.
192.168.0.93: Flushing iptables.
192.168.0.93:5432: Installing new node.
192.168.0.93:5432: Using the master's data directory '/var/lib/pgsql/11/data'.
192.168.0.91: Checking size of '/var/lib/pgsql/11/data'.
192.168.0.91: /var/lib/pgsql/11/data size is 103.00 MiB.
192.168.0.93: Checking free space in '/var/lib/pgsql/11/data'.
192.168.0.93: /var/lib/pgsql/11/data has 34.19 GiB free space.
192.168.0.93:5432: Setting SELinux in permissive mode.
192.168.0.93:5432: Disabling firewall.
192.168.0.93:5432: Tuning OS parameters.
192.168.0.93:5432: Setting vm.swappiness = 1.
192.168.0.93:5432: Installing helper packages.
192.168.0.93: Upgrading nss.
192.168.0.93: Upgrading ca-certificates.
192.168.0.93: Installing net-tools.
192.168.0.93: Installing netcat.
192.168.0.93: Installing nc.
192.168.0.93: Installing socat.
192.168.0.93: Installing perl-Data-Dumper.
192.168.0.93: Installing which.
192.168.0.93: Installing perl-Data-Dumper-Names.
192.168.0.93: Installing psmisc.
192.168.0.93: Installing rsync.
192.168.0.93: Installing libaio.
192.168.0.93: Installing libevent.
192.168.0.93: Installing wget.
192.168.0.93: Installing curl.
192.168.0.93: Installing gnupg2.
192.168.0.93: Installing pigz.
192.168.0.93: Installing bzip2.
192.168.0.93: Installing iproute2.
192.168.0.93: Installing tar.
192.168.0.93: Installing openssl.
192.168.0.93: Upgrading openssl openssl-libs.
192.168.0.93: Finished with helper packages.
192.168.0.93:5432: Using External repositories.
192.168.0.93:5432: Setting up PostgreSQL repositories.
192.168.0.93:5432: Uninstalling old PostgreSQL packages.
192.168.0.93:5432: Installing PostgreSQL 11 packages (centos-7).
192.168.0.93:5432: PostgreSQL installed, init-name: postgresql-11.
192.168.0.93: Updating PostgreSQL port (5432) and directory.
192.168.0.93:5432: Granting remote access to PostgreSQL server.
192.168.0.93:5432: Granting controller (10.0.2.15,192.168.0.19).
192.168.0.93:5432: Updating configuration.
192.168.0.93:5432: Enabling stat_statements plugin.
192.168.0.93:5432: Setting wal options.
192.168.0.93:5432: Performance tuning.
192.168.0.93:5432: Selected workload type: mixed
Detected system memory: 991.18 MiB
Using the following fine-tuning options:
  checkpoint_completion_target: 0.9
  effective_cache_size: 761229kB
  maintenance_work_mem: 63435kB
  max_connections: 100
  shared_buffers: 253743kB
  wal_keep_segments: 32
  work_mem: 5074kB
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: Restarting PostgreSQL service
192.168.0.93:5432: Testing connection (attempt #1).
192.168.0.93:5432: Connected ok.
192.168.0.93:5432: Using the master's data directory '/var/lib/pgsql/11/data'.
192.168.0.91:5432(master): Verifying PostgreSQL version.
Setting up replication 192.168.0.91:5432->192.168.0.93:5432
Collecting server variables.
192.168.0.91:5432: Using the pg_hba.conf contents for the slave.
192.168.0.93:5432: Updating slave configuration.
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: GRANT new node on members to do pg_basebackup.
192.168.0.91:5432: granting 192.168.0.93:5432.
192.168.0.93:5432: Stopping slave.
192.168.0.93:5432: Cleaning up slave data directory: /var/lib/pgsql/11/data
192.168.0.93:5432: detected version: 11.1
192.168.0.93:5432: Doing initial sync (pg_basebackup) from 192.168.0.91:5432.
192.168.0.93:5432: Synchronizing pg_hba.conf from master.
Writing file '192.168.0.93:/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.91:5432 as master.
192.168.0.93:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.93:5432: Restarting PostgreSQL
192.168.0.93:5432: Grant cluster members on the new node (for failover).
Grant connect access for new host in cluster.
Adding grant on 192.168.0.91:5432.
Adding grant on 192.168.0.92:5432.
192.168.0.93:5432: Waiting until service starts.
192.168.0.93:5432: Registering node.
192.168.0.93:5432: Verifying configuration.
192.168.0.93:5432: Checking 'listen_addresses'.
192.168.0.93:5432: Checking variables.
192.168.0.93:5432: Detected PostgreSQL 11.1.
192.168.0.93:5432: Registering host with host manager.
192.168.0.93:5432: Added host to cluster.
Replication slave job finished.
192.168.0.93: Installing cronie.
192.168.0.91:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.92:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.
192.168.0.93:5432: [postgres] Pulling '/var/lib/pgsql/11/data/postgresql.conf'.

जॉब लॉग से, हम देख सकते हैं कि चूंकि क्लस्टर में पहले से ही एक मास्टर चल रहा है (192.168.0.91), नए नोड को मास्टर के दास के रूप में तैनात किया जाएगा। इसके बाद ClusterControl सभी आवश्यक कार्य करेगा और दिए गए रोल के अनुसार नया नोड तैयार करेगा।

नए मास्टर पर स्विच करें

स्विचओवर करने के लिए, --promote-slave ध्वज के साथ नया मास्टर बनने के लिए दास में से किसी एक को चुनें:

$ s9s cluster \
--promote-slave \
--nodes=192.168.0.92 \
--cluster-id=8 \
--log
192.168.0.92:5432: Promoting server to master.
192.168.0.92:5432: Current master is 192.168.0.91:5432.

SERVER           HOST_STATUS            STATUS            ROLE RECEIVE/REPLAY
192.168.0.91     CmonHostOnline   NODE_CONNECTED         master 0/9000EF0; 0/9000EF0
192.168.0.92     CmonHostOnline   NODE_CONNECTED         slave  0/9000EF0; 0/9000EF0
192.168.0.93     CmonHostOnline   NODE_CONNECTED         slave  0/9000EF0; 0/9000EF0

Switching over to 192.168.0.92:5432 (previous master is 192.168.0.91:5432)
192.168.0.91:5432: Stopping the current master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.92:5432: Failover, using file.
192.168.0.92:5432: Waiting to become a master.
192.168.0.92:5432: Became master, ok.
Switching slaves to the new master.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.92:5432: Granting host (192.168.0.93:5432).
Running /usr/pgsql-11/bin/pg_rewind --target-pgdata=/var/lib/pgsql/11/data --source-server="host=192.168.0.92 port=5432 user=cmon password=***** dbname=postgres"
192.168.0.93: servers diverged at WAL location 0/9000F60 on timeline 1
no rewind required
192.168.0.93:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.92:5432 as master.
192.168.0.93:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.93:5432: Starting PostgreSQL.
192.168.0.93:5432: The postgresql service was started.
192.168.0.93:5432: Waiting to start.
192.168.0.93:5432: Restarted with new master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.92:5432: Granting host (192.168.0.91:5432).
Running /usr/pgsql-11/bin/pg_rewind --target-pgdata=/var/lib/pgsql/11/data --source-server="host=192.168.0.92 port=5432 user=cmon password=***** dbname=postgres"
192.168.0.91: servers diverged at WAL location 0/9000F60 on timeline 1
no rewind required
192.168.0.91:5432: Creating '/var/lib/pgsql/11/data/recovery.conf': Setting 192.168.0.92:5432 as master.
192.168.0.91:5432: Successfully created '/var/lib/pgsql/11/data/recovery.conf'.
192.168.0.91:5432: Starting PostgreSQL.
192.168.0.91:5432: The postgresql service was started.
192.168.0.91:5432: Waiting to start.
192.168.0.91:5432: Restarted with new master.
Servers after promote:
SERVER           HOST_STATUS            STATUS            ROLE RECEIVE/REPLAY
192.168.0.91     CmonHostOnline   NODE_CONNECTED         slave  0/9001F90; 0/9001F90
192.168.0.92     CmonHostOnline   NODE_CONNECTED         master 0/9001F90; 0/9001F90
192.168.0.93     CmonHostOnline   NODE_CONNECTED         slave  0/9001F90; 0/9001F90

192.168.0.92:5432: promote finished (this is the new master).
Successfully promoted a new master.

कार्य संदेश दिखाते हैं कि ClusterControl पहले वर्तमान टोपोलॉजी की खोज करेगा और क्लस्टर में सभी नोड्स को रोक देगा। फिर, यह नए मास्टर को कॉन्फ़िगर करता है और अन्य नोड्स को इससे दोहराने के लिए प्राप्त करता है। यह pg_rewind . चलाने का भी प्रयास करेगा नए बेस बैकअप के साथ डाउनग्रेड किए गए मास्टर के PGDATA को फिर से सिंक्रोनाइज़ करने के लिए। कार्य के अंत में, ClusterControl वर्तमान टोपोलॉजी और प्रचार की स्थिति की रिपोर्ट करता है।

फिर हम क्लस्टर आईडी 8 के लिए सभी नोड्स को सूचीबद्ध करके सत्यापित कर सकते हैं:

$ s9s node --list --cluster-id=8 --long
STAT VERSION    CID CLUSTER       HOST         PORT COMMENT
coC- 1.7.1.2985   8 PostgreSQL 11 192.168.0.19 9500 Up and running.
poS- 11.1         8 PostgreSQL 11 192.168.0.91 5432 Up and running.
poM- 11.1         8 PostgreSQL 11 192.168.0.92 5432 Up and running.
poS- 11.1         8 PostgreSQL 11 192.168.0.93 5432 Up and running.

सबसे बाएं कॉलम पर स्थित "poM-" का अर्थ निम्नलिखित है:

  • p - PostgreSQL नोड
  • ओ - ऑनलाइन
  • एम - मास्टर

डेटाबेस प्रबंधन

क्लस्टर पर पाए गए सभी डेटाबेस को सूचीबद्ध करने के लिए, घटक क्लस्टर पर --list-डेटाबेस ध्वज का उपयोग करें:

$ s9s cluster \
--list-database \
--long \
--cluster-id=8
SIZE      #TBL #ROWS   OWNER  GROUP  CLUSTER                          DATABASE
  7340032    0       0 system admins PostgreSQL Streaming Replication postgres
  7340032    0       0 system admins PostgreSQL Streaming Replication template1
  7340032    0       0 system admins PostgreSQL Streaming Replication template0
382730240   12 1156642 system admins PostgreSQL Streaming Replication sbtest

ध्यान दें कि यदि क्लस्टर में बहुत सारे डेटाबेस हैं, तो यह विकल्प उनमें से कुछ को नहीं दिखा सकता है। बड़ी संख्या में डेटाबेस का नमूना लेने से उच्च भार उत्पन्न होगा और इसलिए नियंत्रक की ऊपरी सीमा इसमें निर्मित होती है।

यदि आप क्लस्टर के लिए एक नया डेटाबेस बनाना चाहते हैं, तो बस यह करें:

$ s9s cluster \
--create-database \
--cluster-id=8 \
--db-name=my_shopping_db

एक नया डेटाबेस उपयोगकर्ता बनाने के लिए, इसके साथ जुड़े डेटाबेस के साथ (उसी डेटाबेस नाम का उपयोग करके), --create-account with --with-database ध्वज का उपयोग करें:

$ s9s cluster \
--create-account \
--cluster-id=1 \
--account=mysystem:[email protected] \
--with-database
Account 'mysystem' created.
192.168.0.91:5432: Allowing connections from 192.168.0.15.
192.168.0.92:5432: Allowing connections from 192.168.0.15.
192.168.0.93:5432: Allowing connections from 192.168.0.15.
Database 'mysystem' created.
Access for 'mysystem' to 'mysystem' granted.

ClusterControl उचित विशेषाधिकारों के साथ डेटाबेस और उपयोगकर्ता खाता बनाने के लिए आवश्यक कार्रवाई करेगा और सभी डेटाबेस नोड्स पर इसकी अनुमति देगा।

बैकअप प्रबंधन

ClusterControl PostgreSQL के लिए दो बैकअप विधियों का समर्थन करता है:

  • pgdump - उपनाम से pg_dumpall, क्लस्टर के सभी PostgreSQL डेटाबेस को एक स्क्रिप्ट फ़ाइल में लिखने के लिए एक उपयोगिता।
  • pg_basebackup - PostgreSQL डेटाबेस का एक पूर्ण, फ़ाइल सिस्टम-स्तरीय बैकअप बनाने के लिए एक उपयोगिता।

बैकअप बनाना

pg_dumpall का उपयोग करके एक नया बैकअप बनाने के लिए, एक डेटाबेस नोड चुनें और --बैकअप-विधि फ़्लैग में "pgdump" निर्दिष्ट करें:

$ s9s backup \
--create \
--backup-method=pgdump \
--cluster-id=8 \
--nodes=192.168.0.92 \
--backup-directory=/storage/backups \
    --on-controller

--on-controller ध्वज इंगित करता है कि हम चाहते हैं कि बनाए गए बैकअप को ClusterControl नोड पर /storage/backups निर्देशिका के अंतर्गत संग्रहीत किया जाए। यदि आप इसे डेटाबेस नोड पर ही संग्रहीत करना चाहते हैं तो ध्वज को छोड़ दें। pg_basebackup बैकअप बनाने के लिए समान आदेश लागू किया जा सकता है। बस "pgdump" को "pg_basebackup" से बदलें।

बैकअप को सूचीबद्ध करने के लिए, बस --list और --cluster-id फ़्लैग का उपयोग करें:

$ s9s backup --list --long --cluster-id=8
ID PI CID V I STATE     OWNER          HOSTNAME     CREATED  SIZE    TITLE
 8  -   8 - F COMPLETED admin          192.168.0.92 08:42:47    1204 Untitled Backup Record
 9  -   8 - F COMPLETED admin          192.168.0.92 08:45:52 3865462 Untitled Backup Record

बैकअप शेड्यूल करना

बैकअप शेड्यूल करना उस कमांड के समान है जिसका उपयोग हम बैकअप बनाने के लिए करते हैं, अतिरिक्त --recurrence फ्लैग के साथ:

$ s9s backup \
--create \
--backup-method=pg_basebackup \
--cluster-id=8 \
--nodes=192.168.0.92 \
--backup-directory=/storage/backups \
--on-controller \
--recurrence='30 0 * * *'

पुनरावृत्ति का मान उद्धरण के साथ और क्रॉस्टैब प्रारूप में संलग्न होना चाहिए।

बैकअप बहाल करना

किसी क्लस्टर में बैकअप को पुनर्स्थापित करने के लिए, --restore ध्वज का उपयोग करें और उस बैकअप आईडी को इंगित करें जिसका आप उपयोग करना चाहते हैं:

$ s9s backup \
--restore \
--cluster-id=8 \
--backup-id=9 \
--log
192.168.0.19: Checking 'socat' availability.
Stop slaves as restoring offline backup to master.
192.168.0.91:5432: Stopping PostgreSQL service.
192.168.0.91:5432: Waiting to stop.
192.168.0.93:5432: Stopping PostgreSQL service.
192.168.0.93:5432: Waiting to stop.
192.168.0.92:5432: Stopping node for restoring a base-backup.
192.168.0.92:5432: Stopping PostgreSQL service.
192.168.0.92:5432: Waiting to stop.
192.168.0.92:5432: Backing up the current datadir.
192.168.0.92: Mount point of '/var/lib/pgsql/11/data': '/'
192.168.0.92: Creating copy of datadir (using 'mv'): /var/lib/pgsql/11/data_bak
192.168.0.92: Checking 'socat' availability.
192.168.0.92: Starting: su - postgres -c 'socat -u tcp-listen:9999,reuseaddr stdout | tar -C/var/lib/pgsql/11/data -xzf-' 2>&1 > /tmp/netcat.pg.log
192.168.0.92: socat/nc is started.
192.168.0.92: Restoring from '192.168.0.19':'/storage/backups/BACKUP-9/base.tar.gz'
192.168.0.92:5432: Starting node after restored a base-backup.
192.168.0.92:5432: Starting PostgreSQL.
192.168.0.92:5432: The postgresql service was started.
192.168.0.92:5432: Waiting to start.
You may now rebuild your slaves.
Finished restoring.
Checking the cluster.
Setting cluster to 'STARTING' state.
192.168.0.91:5432: Starting PostgreSQL.
192.168.0.91:5432: The postgresql service was started.
192.168.0.93:5432: Starting PostgreSQL.
192.168.0.93:5432: The postgresql service was started.
Cluster is successfully started.
Cluster status is STARTED.

ध्यान दें कि pg_basebackup के बैकअप के लिए, पुनर्स्थापना कार्रवाई के लिए डेटाबेस डाउनटाइम की आवश्यकता होती है। सभी पोस्टग्रेएसक्यूएल नोड्स को बहाली से पहले रोक दिया जाएगा और अंतिम ज्ञात मास्टर पर बहाली होगी। पुनर्स्थापना पूर्ण होने के बाद इस स्वामी को पहले (सभी दासों के बाद) लाया जाएगा।

बैकअप सत्यापित करना

बैकअप को पुनर्स्थापित और सत्यापित करने के लिए, --verify ध्वज का उपयोग करें और --test-server ध्वज का उपयोग करके गंतव्य सर्वर निर्दिष्ट करें:

$ s9s backup \
--verify \
--cluster-id=8 \
--backup-id=9 \
--test-server=192.168.0.99 \
--log

परीक्षण सर्वर क्लस्टर का हिस्सा नहीं होना चाहिए और क्लस्टरकंट्रोल नोड से पासवर्ड रहित एसएसएच के माध्यम से पहुंच योग्य होना चाहिए। ClusterControl पहले लक्ष्य सर्वर को उसी PostgreSQL संस्करण के साथ स्थापित करेगा, स्ट्रीम करेगा और उस नोड पर बैकअप को पुनर्स्थापित करेगा। बैकअप सत्यापन बहाली के बाद अंतिम निकास कोड की तलाश करता है। यदि बैकअप बहाल करने योग्य है, तो ClusterControl परीक्षण सर्वर को रोक देगा और उसे ClusterControl से हटा देगा (लेकिन ClusterControl इसे बंद नहीं करेगा)। कार्य पूर्ण होने के बाद आपको निम्नलिखित देखना चाहिए:

Backup 9 was successfully verified.

बैकअप से क्लस्टर बनाएं

ClusterControl ने v1.7.1 में एक नई सुविधा पेश की, जहां कोई मौजूदा क्लस्टर द्वारा लिए गए बैकअप के आधार पर एक नया क्लस्टर बना सकता है। किसी भिन्न प्लेटफ़ॉर्म या डेटाबेस संस्करण पर अपने डेटाबेस का परीक्षण करने के लिए यह बहुत उपयोगी हो सकता है। इस उदाहरण में, हम बैकअप आईडी 214 के आधार पर दो-नोड पोस्टग्रेएसक्यूएल 9.6 क्लस्टर तैनात करना चाहेंगे:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.101?master;192.168.0.102?slave" \
--provider-version=9.6 \
--db-admin=postgres \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name="PostgreSQL 9.6 - Test"
--backup-id=214 \
--wait

ध्यान दें कि नए क्लस्टर के लिए व्यवस्थापक उपयोगकर्ता पासवर्ड पोस्टग्रेएसक्यूएल व्यवस्थापक पासवर्ड के समान होना चाहिए जैसा कि बैकअप में शामिल है। मूल रूप से, ClusterControl निम्न क्रम के आधार पर परिनियोजन कार्य करता है:

  1. सभी PostgreSQL नोड्स पर आवश्यक सॉफ़्टवेयर और निर्भरताएँ स्थापित करें।
  2. पहला नोड प्रारंभ करें।
  3. पहले नोड पर बैकअप स्ट्रीम करें और पुनर्स्थापित करें (ऑटो-रिस्टार्ट फ़्लैग के साथ)।
  4. बाकी नोड्स को कॉन्फ़िगर करें और जोड़ें।

फिर आप निम्न आदेश का उपयोग करके क्लस्टर सूची को सत्यापित कर सकते हैं:

$ s9s cluster --stat

कॉन्फ़िगरेशन प्रबंधन

नोड के PostgreSQL कॉन्फ़िगरेशन को सूचीबद्ध करने के लिए, --list-config ध्वज का उपयोग करें:

$ s9s node --list-config --cluster-id=8 --nodes=192.168.0.92
GROUP OPTION NAME                  VALUE
-     data_directory               '/var/lib/pgsql/11/data'
-     listen_addresses             '*'
-     port                         5432
-     max_connections              100
-     shared_buffers               253743kB
-     work_mem                     5074kB
-     maintenance_work_mem         63435kB
-     dynamic_shared_memory_type   posix
-     wal_level                    hot_standby
-     full_page_writes             on
-     wal_log_hints                on
-     max_wal_size                 1GB
-     min_wal_size                 80MB
-     checkpoint_completion_target 0.9
-     max_wal_senders              16
-     wal_keep_segments            32
-     hot_standby                  on
-     effective_cache_size         761229kB
-     log_destination              'stderr'
-     logging_collector            on
-     log_directory                'log'
-     log_filename                 'postgresql-%a.log'
-     log_truncate_on_rotation     on
-     log_rotation_age             1d
-     log_rotation_size            0
-     log_line_prefix              '%m [%p] '
-     log_timezone                 'UTC'
-     track_activity_query_size    2048
-     datestyle                    'iso, mdy'
-     timezone                     'UTC'
-     lc_messages                  'en_US.UTF-8'
-     lc_monetary                  'en_US.UTF-8'
-     lc_numeric                   'en_US.UTF-8'
-     lc_time                      'en_US.UTF-8'
-     default_text_search_config   'pg_catalog.english'
-     shared_preload_libraries     'pg_stat_statements'
-     pg_stat_statements.track     all

ClusterControl तदनुसार OPTION NAME और VALUE का आउटपुट देता है। PostgreSQL में GROUP कॉलम लागू नहीं है इसलिए आपको '-' मान देखना चाहिए।

कॉन्फ़िगरेशन विकल्प बदलने के लिए, --change-config ध्वज का उपयोग करें और पैरामीटर और मान को क्रमशः --opt-name और --opt-value का उपयोग करके निर्दिष्ट करें:

$ s9s node \
--change-config \
--nodes=192.168.0.92 \
--opt-name=min_wal_size \
--opt-value='100MB'
192.168.0.92:5432: Changed a read-only parameter. Node restart is required for change to take effect.

आपको ClusterControl को कॉन्फ़िगरेशन संशोधन स्थिति लौटाते हुए देखना चाहिए और यह सुनिश्चित करने के लिए अनुवर्ती प्रक्रिया की सलाह देनी चाहिए कि कॉन्फ़िगरेशन परिवर्तन प्रभावित होता है। फिर आप विशेष नोड को पुनः आरंभ करने के लिए "s9s node --restart" कमांड का उपयोग कर सकते हैं।

अंतिम विचार

जब आपके PostgreSQL डेटाबेस क्लस्टर के प्रबंधन और निगरानी की बात आती है तो ClusterControl बहुत लचीलापन प्रदान करता है। आपके पास वेब UI का विकल्प है, जो काफी सरल और सीधा प्लस कमांड लाइन इंटरफ़ेस है, जो आपको स्क्रिप्टिंग के माध्यम से पूर्ण डेटाबेस स्वचालन प्राप्त करने का अधिकार देता है। खुश प्रबंध!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सर्वर पर डीबी कनेक्शन कैसे प्रबंधित करें?

  2. PostgreSQL स्कीमा बनाएँ

  3. पोस्टग्रेज क्वेरी ऑप्टिमाइज़ेशन (इंडेक्स स्कैन के लिए बाध्य करना)

  4. केवल एक तालिका कैसे बनाएं यदि यह PostgreSQL में मौजूद नहीं है

  5. अद्यतन विवरण में अनावश्यक डेटा