Percona लेबलों वाले संदेश दिखाए जा रहे हैं. सभी संदेश दिखाएं
Percona लेबलों वाले संदेश दिखाए जा रहे हैं. सभी संदेश दिखाएं

रविवार, 1 मार्च 2026

क्या हर PXC Node पर XtraBackup इंस्टॉल करना ज़रूरी है?

Percona फोरम में नियमित रूप से उठने वाला एक प्रश्न: क्या Percona XtraDB Cluster (PXC) के हर नोड पर XtraBackup इंस्टॉल होना चाहिए? यह एक उचित प्रश्न है, विशेष रूप से मिश्रित वातावरण प्रबंधित करते समय या कुछ नोड्स पर सॉफ्टवेयर फुटप्रिंट को न्यूनतम करने की कोशिश करते समय। यहाँ वास्तविक मैकेनिक्स और टेस्टिंग द्वारा पुष्टि की गई बातें हैं।

छोटा उत्तर (लेकिन आगे पढ़ें)

यह इस बात पर निर्भर करता है कि आप उस नोड से क्या करवाना चाहते हैं। यहाँ बारीकी बहुत मायने रखती है, इसलिए Percona XtraDB Cluster (PXC) में State Snapshot Transfer (SST) कैसे काम करता है और किसी दिए गए नोड पर XtraBackup की मौजूदगी — या अनुपस्थिति — क्यों महत्वपूर्ण है, इसकी व्याख्या करना उचित है।

PXC में SST पर त्वरित पुनरावलोकन

जब एक नया नोड Percona XtraDB Cluster में जुड़ता है, या जब कोई मौजूदा नोड इतना लंबे समय तक डाउन रहता है कि Incremental State Transfer (IST) संभव नहीं रह जाता, तो क्लस्टर State Snapshot Transfer (SST) करता है। यह मूल रूप से डोनर नोड से जॉइनर नोड तक पूर्ण डेटा कॉपी है।

PXC कई SST विधियों का समर्थन करता है, जो my.cnf में कॉन्फ़िगर की जाती हैं:

[mysqld]
wsrep_sst_method = xtrabackup-v2

उपलब्ध SST विधियाँ शामिल हैं:

  • xtrabackup-v2 — PXC के लिए अनुशंसित विधि, Percona XtraBackup का उपयोग करके; SST करता है बिना डोनर को लंबे समय के लिए लॉक किए
  • clone — PXC 8.0.22+ में उपलब्ध, MySQL के बिल्ट-इन Clone Plugin का उपयोग करके; SST के लिए XtraBackup निर्भरता हटाता है
  • mysqldump — धीमी और ट्रांसफर के दौरान डोनर को लॉक करती है; प्रोडक्शन के लिए अनुशंसित नहीं
  • rsync — ट्रांसफर के दौरान डोनर को रीड-ओनली रहने की आवश्यकता, राइट्स को ब्लॉक करती है; लाइव क्लस्टर्स के लिए अनुशंसित नहीं

xtrabackup-v2 विधि ऐतिहासिक रूप से डिफ़ॉल्ट अप्रोच रही है और मौजूदा डिप्लॉयमेंट्स में व्यापक रूप से उपयोग की जाती है ठीक इसलिए क्योंकि यह ट्रांसफर के दौरान डोनर नोड को राइट्स के लिए उपलब्ध रखती है। अन्य पुरानी विधियाँ डोनर पर राइट्स को ब्लॉक कर सकती हैं, जो प्रोडक्शन क्लस्टर में आमतौर पर अस्वीकार्य है। ध्यान दें कि Percona PXC 8.0.22 और उसके बाद के नए इंस्टॉलेशन्स के लिए clone विधि की अनुशंसा बढ़ा रहा है, क्योंकि यह SST लेयर पर बाहरी टूल निर्भरता हटा देती है।

XtraBackup को कहाँ इंस्टॉल करना आवश्यक है?

जब xtrabackup-v2 का उपयोग करके SST ट्रिगर होता है, तो डोनर और जॉइनर दोनों को XtraBackup इंस्टॉल और पहुँच योग्य होना चाहिए। यहाँ कारण है कि दोनों पक्ष शामिल हैं:

``````html
  • donor XtraBackup चलाता है ताकि स्नैपशॉट डेटा को आउटबाउंड स्ट्रीम किया जा सके
  • joiner XtraBackup चलाता है — विशेष रूप से xbstream और xbcrypt उपयोगिताओं को — ताकि स्ट्रीम्ड डेटा को प्राप्त किया जा सके और लागू किया जा सके

यदि joiner नोड पर XtraBackup इंस्टॉल नहीं है और आप xtrabackup-v2 का उपयोग करके इसे क्लस्टर में जोड़ने का प्रयास करते हैं, तो SST विफल हो जाएगा। joiner पर एरर लॉग में आमतौर पर कुछ इस तरह का संदेश दिखाई देगा:

[ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2
...
wsrep_sst_xtrabackup-v2: line 522: xbstream: command not found
[ERROR] WSREP: SST failed: 2 (No such file or directory)

यह एक स्पष्ट और निर्विवाद विफलता मोड है। यदि xbstream joiner पर मौजूद नहीं है, तो SST पूरा नहीं होगा।

वे नोड्स जिन्हें कभी joiner बनना ही नहीं है?

तकनीकी रूप से, यदि कोई नोड हमेशा donor के रूप में कार्य करेगा और कभी क्लस्टर में शून्य से दोबारा शामिल होने की आवश्यकता नहीं पड़ेगी, तो आप यह तर्क दे सकते हैं कि उसे केवल donor क्षमता के लिए XtraBackup की आवश्यकता है। लेकिन व्यवहार में, कोई भी नोड joiner बन सकता है — क्रैश के बाद, नियोजित रखरखाव के बाद, या नेटवर्क पार्टिशन से रिकवर करने के बाद। कोई भी विश्वसनीय तरीका नहीं है जो गारंटी दे सके कि किसी नोड को कभी SST प्राप्त करने की आवश्यकता नहीं पड़ेगी।

यहाँ व्यावहारिक मार्गदर्शन सरल है: हर PXC नोड पर XtraBackup इंस्टॉल करें, बिना किसी अपवाद के। इसे इंस्टॉल करने का ओवरहेड नगण्य है। अनियोजित आउटेज के दौरान विफल SST की लागत नहीं है।

क्लोन प्लगइन विकल्प (PXC 8.0.22+)

PXC 8.0.22 से शुरू करके, Percona ने MySQL Clone Plugin को SST विधि के रूप में समर्थन जोड़ा है। यह जानना महत्वपूर्ण है क्योंकि यह SST उद्देश्यों के लिए XtraBackup निर्भरता को पूरी तरह से हटा देता है:

[mysqld]
wsrep_sst_method = clone

क्लोन विधि के साथ, Clone Plugin को सभी नोड्स पर लोड करना आवश्यक है:

INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SHOW PLUGINS WHERE Name = 'clone';
+-------+--------+-------+----------------+---------+
| Name  | Status | Type  | Library        | License |
+-------+--------+-------+----------------+---------+
| clone | ACTIVE | CLONE | mysql_clone.so | GPL     |
+-------+--------+-------+----------------+---------+

क्लोन विधि XtraBackup के बिना SST निर्भरता के साथ मानकीकरण के लिए एक मजबूत विकल्प है। फिर भी, XtraBackup आपके बाहरी बैकअप रणनीति के लिए वास्तविक मूल्य रखता है, भले ही आप कौन सी SST विधि चुनें। SST एक क्लस्टर सिंक्रोनाइजेशन तंत्र है — यह बैकअप नहीं है, और इसे कभी बैकअप के रूप में व्यवहार नहीं करना चाहिए।

अपने वर्तमान SST कॉन्फ़िगरेशन की जाँच करना

आप अपने वर्तमान SST विधि और Galera-संबंधित सेटिंग्स को इस कमांड से सत्यापित कर सकते हैं:

SHOW VARIABLES LIKE 'wsrep_sst_method';
+------------------+---------------+
| Variable_name    | Value         |
+------------------+---------------+
| wsrep_sst_method | xtrabackup-v2 |
+------------------+---------------+

क्लस्टर स्थिति की जाँच करने और यह पुष्टि करने के लिए कि कौन सा नोड donor के रूप में कार्य कर रहा है:

SHOW STATUS LIKE 'wsrep_local_state_comment';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+
SHOW STATUS LIKE 'wsrep_connected';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| wsrep_connected | ON    |
+-----------------+-------+
SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

व्यावहारिक अवलोकन

PXC वातावरणों के साथ सीधे काम करने से कुछ उल्लेखनीय बातें:

``````html
  • XtraBackup का संस्करण आपके PXC संस्करण से मेल खाना चाहिए। XtraBackup 2.x को PXC 8.0 के साथ उपयोग करने से SST विफलताएँ होंगी। PXC 8.0 के साथ Percona XtraBackup 8.0 का उपयोग करें, और किसी भी अपग्रेड के बाद संस्करण संरेखण की पुष्टि करें।
  • भले ही आप clone SST विधि पर स्विच कर दें, XtraBackup को स्थापित रखें अनुसूचित बैकअप के लिए। आपकी बैकअप रणनीति और आपकी SST विधि अलग-अलग चिंताएँ हैं और इन्हें उसी तरह व्यवहार किया जाना चाहिए।
  • <wsrep_sst_donor चर आपको एक पसंदीदा दाता नोड निर्दिष्ट करने की अनुमति देता है, जो SST को आपके सबसे व्यस्त या सबसे विलंबता-संवेदनशील सदस्य से दूर निर्देशित करने के लिए उपयोगी है।
  • यदि आप PXC के साथ Percona Toolkit चला रहे हैं, तो अपने विशिष्ट PXC संस्करण में DDL replication कैसे काम करता है, इसकी जागरूकता रखें — Total Order Isolation (TOI) बनाम Rolling Schema Upgrade (RSU) व्यवहार अलग होता है और उत्पादन में स्कीमा परिवर्तन चलाने से पहले इसका विशेष रूप से अध्ययन करना उचित है।

सारांश

प्रश्न का सीधा उत्तर देने के लिए: यदि आप xtrabackup-v2 को अपनी SST विधि के रूप में उपयोग कर रहे हैं — जो कई मौजूदा PXC तैनाती में डिफ़ॉल्ट बना हुआ है — तो हाँ, हर क्लस्टर सदस्य पर XtraBackup स्थापित होना चाहिए। कोई भी नोड परिस्थितियों के आधार पर दाता या जॉइनर दोनों हो सकता है, और दोनों भूमिकाओं के लिए इस विधि का उपयोग करते समय XtraBackup की उपस्थिति आवश्यक है।

यदि आप PXC 8.0.22 या उसके बाद के संस्करण पर हैं और SST स्तर पर उस निर्भरता को समाप्त करना चाहते हैं, तो Clone Plugin विधि एक व्यवहार्य विकल्प है और नई तैनाती के लिए Percona की अनुशंसित पसंद बनती जा रही है। यदि आप ताज़ा शुरुआत कर रहे हैं, तो PXC 8.4 LTS वर्तमान दीर्घकालिक समर्थन रिलीज़ है और नई स्थापणाओं के लिए अनुशंसित लक्ष्य है। भले ही SST के लिए clone का उपयोग करें, XtraBackup आपके वास्तविक बैकअप कार्यों के लिए सही उपकरण बना रहता है।

XtraBackup को चुनिंदा नोड्स पर छोड़कर कुछ मेगाबाइट डिस्क स्थान बचाने की कोशिश न करें। उस निर्णय से अंततः होने वाली SST विफलता एक ऐसा समझौता नहीं है जो值得 करने लायक हो।

संसाधन

शनिवार, 21 फ़रवरी 2026

MySQL 8.0 JSON Functions: व्यावहारिक उदाहरण और इंडेक्सिंग

This article was originally published in English at AnotherMySQLDBA.

यह पोस्ट MySQL 8.0 के JSON functions का हाथों-हाथ walkthrough कवर करती है। JSON support MySQL में 5.7 से है, लेकिन 8.0 ने एक सार्थक सुधारों का सेट जोड़ा — बेहतर indexing strategies, नए functions, और multi-valued indexes — जो JSON data के साथ काम करना काफी अधिक व्यावहारिक बनाते हैं। निम्नलिखित सबसे आमतौर पर आवश्यक patterns को दस्तावेज करता है, जिसमें EXPLAIN output और performance observations शामिल हैं जो जानने लायक हैं।

यह "JSON vs. relational" बहस पोस्ट नहीं है। यदि आप MySQL में JSON स्टोर कर रहे हैं, तो आपके पास पहले से ही आपके कारण हैं। यहाँ का लक्ष्य यह सुनिश्चित करना है कि आप उपलब्ध tooling का प्रभावी ढंग से उपयोग कर रहे हैं।

परिवेश

mysql> SELECT @@version, @@version_comment\G
*************************** 1. row ***************************
        @@version: 8.0.36
@@version_comment: MySQL Community Server - GPL

टेस्टिंग एक VM पर की गई जिसमें 8GB RAM था और innodb_buffer_pool_size को 4G पर सेट किया गया था। एक housekeeping नोट जो उल्लेख करने लायक है: query_cache_type 8.0 में अप्रासंगिक है क्योंकि query cache को पूरी तरह हटा दिया गया था। यदि आपने 5.7 instance को migrate किया है और आपके my.cnf में अभी भी वह variable है, तो इसे हटा दें — MySQL 8.0 startup error फेंकेगा।

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

टेस्ट टेबल एक काफी सामान्य pattern को simulate करती है — एक application जो user profile data और event metadata को JSON blobs के रूप में स्टोर करती है:

CREATE TABLE user_events (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id     INT UNSIGNED NOT NULL,
  event_data  JSON NOT NULL,
  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  INDEX idx_user (user_id)
) ENGINE=InnoDB;

INSERT INTO user_events (user_id, event_data) VALUES
(1, '{"action":"login","ip":"192.168.1.10","tags":["mobile","vpn"],"score":88}'),
(1, '{"action":"purchase","ip":"192.168.1.10","tags":["desktop"],"score":72,"amount":49.99}'),
(2, '{"action":"login","ip":"10.0.0.5","tags":["mobile"],"score":91}'),
(3, '{"action":"logout","ip":"10.0.0.9","tags":["desktop","vpn"],"score":65}'),
(2, '{"action":"purchase","ip":"10.0.0.5","tags":["mobile"],"score":84,"amount":129.00}');

बेसिक एक्सट्रैक्शन: JSON_VALUE बनाम JSON_EXTRACT

JSON_VALUE() को MySQL 8.0.21 में पेश किया गया था और यह scalar values को निकालने का साफ़-सुथरा तरीका है जिसमें built-in type casting है। उसके पहले, आप JSON_EXTRACT() (या -> shorthand) का उपयोग कर रहे थे और manually casting कर रहे थे, जो काम करता है लेकिन आपकी queries में noise जोड़ता है।

-- Pre-8.0.21 approach
SELECT user_id,
       JSON_EXTRACT(event_data, '$.action') AS action,
       CAST(JSON_EXTRACT(event_data, '$.score') AS UNSIGNED) AS score
FROM user_events;

-- Cleaner 8.0.21+ approach
SELECT user_id,
       JSON_VALUE(event_data, '$.action') AS action,
       JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED) AS score
FROM user_events;

दूसरी query का आउटपुट:

+---------+----------+-------+
| user_id | action   | score |
+---------+----------+-------+
|       1 | login    |    88 |
|       1 | purchase |    72 |
|       2 | login    |    91 |
|       3 | logout   |    65 |
|       2 | purchase |    84 |
+---------+----------+-------+
5 rows in set (0.00 sec)

RETURNING clause वास्तव में उपयोगी है। यह awkward double-cast pattern को समाप्त करता है और बाद में query code पढ़ते समय intent को स्पष्ट बनाता है।

Multi-Valued Indexes: असली गेम चेंजर

यहीं 8.0 ने वास्तव में JSON workloads के लिए सुई को हिलाया। Multi-valued indexes, जो MySQL 8.0.17 से उपलब्ध हैं, आपको JSON column के अंदर array elements को सीधे index करने की अनुमति देते हैं। यह practice में कैसा दिखता है:

ALTER TABLE user_events
  ADD INDEX idx_tags ((CAST(event_data->'$.tags' AS CHAR(64) ARRAY)));

यहाँ EXPLAIN tag value से filter करने वाली query पर before और after दिखाता है:

-- Without the multi-valued index:
EXPLAIN SELECT * FROM user_events
WHERE JSON_CONTAINS(event_data->'$.tags', '"vpn"')\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user_events
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 5
     filtered: 100.00
        Extra: Using where

-- After adding the multi-valued index:
EXPLAIN SELECT * FROM user_events
WHERE JSON_CONTAINS(event_data->'$.tags', '"vpn"')\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user_events
   partitions: NULL
         type: range
possible_keys: idx_tags
          key: idx_tags
      key_len: 67
          ref: NULL
         rows: 2
     filtered: 100.00
        Extra: Using where

Full table scan से range scan तक। 5 rows पर यह trivial है, लेकिन लाखों rows वाली table और frequent tag-based filtering पर, वह अंतर महत्वपूर्ण है। सुधार table size और query frequency के साथ सीधे scale करता है।

एक महत्वपूर्ण gotcha: MEMBER OF() और JSON_OVERLAPS() भी multi-valued indexes से लाभान्वित होते हैं, लेकिन JSON_SEARCH() नहीं। यह design time पर query pattern चुनते समय मायने रखता है:

-- This WILL use the multi-valued index:
SELECT * FROM user_events
WHERE 'vpn' MEMBER OF (event_data->'$.tags');

-- This will NOT use it:
SELECT * FROM user_events
WHERE JSON_SEARCH(event_data->'$.tags', 'one', 'vpn') IS NOT NULL;

JSON को Aggregate और Transform करना

कुछ aggregation functions जो अच्छी तरह जानने लायक हैं:

``````html
-- Build a JSON array of actions per user
SELECT user_id,
       JSON_ARRAYAGG(JSON_VALUE(event_data, '$.action')) AS actions
FROM user_events
GROUP BY user_id;

+---------+----------------------+
| user_id | actions              |
+---------+----------------------+
|       1 | ["login","purchase"] |
|       2 | ["login","purchase"] |
|       3 | ["logout"]           |
+---------+----------------------+
3 rows in set (0.01 sec)

-- Summarize into a JSON object keyed by action
SELECT user_id,
       JSON_OBJECTAGG(
         JSON_VALUE(event_data, '$.action'),
         JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED)
       ) AS score_by_action
FROM user_events
GROUP BY user_id;

+---------+--------------------------------+
| user_id | score_by_action                |
+---------+--------------------------------+
|       1 | {"login": 88, "purchase": 72}  |
|       2 | {"login": 91, "purchase": 84}  |
|       3 | {"logout": 65}                 |
+---------+--------------------------------+
3 rows in set (0.00 sec)

JSON_OBJECTAGG() त्रुटि फेंकेगा यदि किसी समूह में डुप्लिकेट कुंजियाँ हों। यह जानना उपयोगी है इससे पहले कि आप इसे प्रोडक्शन ETL पाइपलाइन में सामना करें। उस स्थिति में, आपको अपस्ट्रीम में डुप्लिकेट हटाने होंगे या एप्लिकेशन लॉजिक में इसे हैंडल करना होगा इससे पहले कि डेटा इस एग्रीगेशन स्टेप तक पहुँचे।

JSON-हैवी क्वेरीज़ के बाद SHOW STATUS चेक करना

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

FLUSH STATUS;

SELECT * FROM user_events
WHERE JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED) > 80;

SHOW STATUS LIKE 'Handler_read%';

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Handler_read_first         | 1     |
| Handler_read_key           | 0     |
| Handler_read_last          | 0     |
| Handler_read_next          | 4     |
| Handler_read_prev          | 0     |
| Handler_read_rnd           | 0     |
| Handler_read_rnd_next      | 6     |
+----------------------------+-------+
7 rows in set (0.00 sec)

Handler_read_rnd_next मान पूर्ण स्कैन की पुष्टि करता है — आश्चर्य की कोई बात नहीं क्योंकि score मान पर कोई फंक्शनल इंडेक्स नहीं है। स्केल पर score-आधारित फिल्टरिंग के लिए, एक जेनरेटेड कॉलम जिसमें इंडेक्स हो, सही उत्तर है:

ALTER TABLE user_events
  ADD COLUMN score_val TINYINT UNSIGNED
    GENERATED ALWAYS AS (JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED)) VIRTUAL,
  ADD INDEX idx_score (score_val);

उसे जोड़ने के बाद, वही क्वेरी एक उचित इंडेक्स रेंज स्कैन पर आ जाती है। JSON फील्ड्स पर जेनरेटेड कॉलम MySQL 8.0 और Percona Server 8.0 दोनों में उपलब्ध हैं, और वे किसी भी सार्थक स्केल पर स्केलर JSON फील्ड फिल्टरिंग के लिए सबसे विश्वसनीय मार्ग बने रहते हैं।

यदि आप Percona Server चला रहे हैं, तो Percona Toolkit से pt-query-digest अभी भी सबसे व्यावहारिक तरीका है जिससे आप यह पहचान सकें कि कौन सी JSON-हैवी क्वेरीज़ वास्तव में प्रोडक्शन में दर्द पैदा कर रही हैं इससे पहले कि आप सट्टेबाजी में इंडेक्स जोड़ना शुरू करें।

व्यावहारिक अवलोकन

  • मल्टी-वैल्यूड इंडेक्स (8.0.17+) एक लंबे समय से लंबित सुधार हैं और अच्छा काम करते हैं जब आपके क्वेरी पैटर्न JSON_CONTAINS() या MEMBER OF() के साथ संरेखित हों
  • JSON_VALUE() with RETURNING (8.0.21+) पुराने cast-after-extract पैटर्न से साफ-सुथरा है और इसे लगातार अपनाना चाहिए
  • जेनरेटेड कॉलम प्लस इंडेक्स स्केल पर स्केलर JSON फील्ड फिल्टरिंग के लिए सबसे विश्वसनीय मार्ग बने रहते हैं
  • ग्रुप्ड डेटा में JSON_OBJECTAGG() डुप्लिकेट कुंजी त्रुटियों पर नजर रखें — यह ETL पाइपलाइनों में कठोर त्रुटि के रूप में उभरता है और टेस्टिंग में आसानी से छूट सकता है यदि आपका सैंपल डेटा संयोग से साफ हो
  • हमेशा EXPLAIN से इंडेक्स उपयोग की जाँच करें — ऑप्टिमाइज़र हमेशा जटिल WHERE क्लॉज़ में मल्टी-वैल्यूड इंडेक्स को नहीं चुनता, और मान लेने के बजाय पुष्टि करना उचित है

सारांश

MySQL 8.0 के JSON सुधार वास्तव में उपयोगी हैं, विशेष रूप से मल्टी-वैल्यूड इंडेक्स और JSON_VALUE() टाइप कास्टिंग के साथ। वे अच्छे स्कीमा डिज़ाइन की जगह नहीं लेते, लेकिन उन मामलों के लिए जहाँ JSON स्टोरेज उचित है या विरासत में मिला है, आपके पास अब वास्तविक टूल्स हैं काम करने के लिए बजाय सिर्फ आशा करने के कि ऑप्टिमाइज़र इसे समझ लेगा। विशेष रूप से जेनरेटेड कॉलम पैटर्न का मूल्यांकन जल्दी करना चाहिए यदि आपको पता है कि कुछ JSON फील्ड्स WHERE क्लॉज़ में नियमित रूप से उपयोग होंगे।

उपयोगी संदर्भ:

मंगलवार, 15 अप्रैल 2025

होमलैब

 https://anothermysqldba.blogspot.com/2025/04/homelab.html

सिर्फ मनोरंजन के लिए...

MySQL और सामान्य डेटाबेस इंस्टैंस के परीक्षण के लिए कई विकल्प मौजूद हैं।

यह सिर्फ एक उदाहरण है कि आप कैसे  प्रोक्समॉक्स का उपयोग करके  दोहराए जाने वाले परीक्षण और पहुंच के लिए एक सरल, तेज सेटअप प्राप्त कर सकते हैं।

यह उदाहरण MySQL और अन्य किसी भी चीज़ के लिए होम लैब बनाने का एक अच्छा और सस्ता विकल्प है।

मैंने जो होमलैब वर्चुअलाइजेशन चुना वह  विस्तारित NFS स्टोरेज के लिए प्रॉक्समॉक्स  और  ओपनमीडियावॉल्ट था ( ओपनमीडियावॉल्ट  पर 100% बेचा नहीं गया  , डेबियन अकेले ही यह कर सकता था)

हार्डवेयर मैंने एक सरल और कॉम्पैक्ट सेटअप चुना:

यह वर्चुअलाइजेशन आपको ऐसा वातावरण प्रदान करता है जिसे आवश्यकतानुसार चलाया जा सकता है, बंद किया जा सकता है, या जब चाहें तब हटाया और वापस लाया जा सकता है। 

एक बार सेटअप हो जाने पर, यदि आप चाहें तो अतिरिक्त इंस्टेंस और परीक्षण के लिए प्रत्येक इंस्टेंस को क्लोन करने की भी अनुमति देता है। 

यह इन सभी के लिए एक बहुत ही सरल प्रत्यक्ष सेटअप होगा।

यदि आप चाहें तो प्रत्येक डेटा निर्देशिका या NFS के लिए ब्लॉक डिवाइस बना सकते हैं, लेकिन यह सब डेमो के लिए स्थानीय प्रत्यक्ष इंस्टॉलेशन होगा।

परीक्षण और डेमो का लक्ष्य:

  • स्थापित करना
  • निगरानी
  • वॉल्ट पासवर्ड रोटेशन

डेबियन बेस 

4GB और 4 CPU के साथ Debian 12 इंस्टेंस सेट करें।
फिर मैंने इसे एक टेम्पलेट के रूप में परिवर्तित किया ताकि मैं इससे अन्य सभी इंस्टेंस को लिंक कर सकूँ।
इससे अन्य इंस्टेंस सेट करना बहुत तेज़ हो जाता है और साथ ही शुरू करने के लिए एक ही आधार भी मिलता है।


┌──(रूट㉿debian12-सर्वर)-[~]
└─# uname -a
Linux debian12-server 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux

उपयुक्त इंस्टॉल अनज़िप
सीडी /usr/स्थानीय/src/
wget https://releases.hashicorp.com/vault/1.4.2/vault_1.4.2_linux_amd64.zip
vault_1.4.2_linux_amd64.zip अनज़िप करें
एमवी वॉल्ट /usr/bin/
सेटकैप cap_ipc_lock=+ep /usr/bin/vault
# वॉल्ट -v
वॉल्ट v1.4.2

मारियाडीबी 11 रोलिंग 

vi /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.100
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# होस्टनाम
mariadb1.sqlhjalp.com

sudo apt-get install apt-transport-https कर्ल
सुडो mkdir -p /etc/apt/keyrings
सुडो कर्ल -ओ /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
vi /etc/apt/sources.list.d/mariadb.sources

┌──(root㉿mariadb1)-[~]
└─# बिल्ली /etc/apt/sources.list.d/mariadb.sources
# MariaDB 11 रोलिंग रिपोजिटरी सूची - 2025-04-01 15:13 UTC पर बनाई गई
# https://mariadb.org/download/
X-रेपोलिब-नाम: MariaDB
प्रकार: डेब
# deb.mariadb.org एक डायनेमिक मिरर है, अगर आपका पसंदीदा मिरर ऑफ़लाइन हो जाता है। विवरण के लिए https://mariadb.org/mirrorbits/ देखें।
# यूआरआई: https://deb.mariadb.org/11/debian
यूआरआई: https://mirror.its.dal.ca/mariadb/repo/11.rolling/debian
सुइट्स: किताबी कीड़ा
घटक: मुख्य
हस्ताक्षरित: /etc/apt/keyrings/mariadb-keyring.pgp

┌──(root㉿mariadb1)-[~]
└─# apt-get अपडेट

┌──(root㉿mariadb1)-[~]
└─# apt-get install mariadb-server -y

┌──(root㉿mariadb1)-[~]
└─# मारियाडीबी
MariaDB मॉनिटर में आपका स्वागत है। कमांड ; या \g से समाप्त होते हैं।
आपका MariaDB कनेक्शन आईडी 32 है
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण

कॉपीराइट (c) 2000, 2018, ओरेकल, मारियाडीबी कॉर्पोरेशन एबी और अन्य।

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

मारियाडीबी [(कोई नहीं)]>
मारियाडीबी [(कोई नहीं)]> बाहर निकलें
अलविदा

┌──(root㉿mariadb1)-[~]
└─# systemctl स्टॉप mariadb.service

बस स्पष्ट होने के लिए। हाँ, एक प्रॉक्समॉक्स लिंक्ड सर्वर के साथ आप पुनः आरंभ कर सकते हैं और यह आपके सभी मान और सेटअप को बनाए रखता है

┌──(root㉿mariadb1)-[~]
└─# अपटाइम
 10:27:29 1 मिनट तक, 2 उपयोगकर्ता, लोड औसत: 0.15, 0.11, 0.04

┌──(root㉿mariadb1)-[~]
└─# मारियाडीबी
MariaDB मॉनिटर में आपका स्वागत है। कमांड ; या \g से समाप्त होते हैं।
आपका MariaDB कनेक्शन आईडी 33 है
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण

कॉपीराइट (c) 2000, 2018, ओरेकल, मारियाडीबी कॉर्पोरेशन एबी और अन्य।

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

MariaDB [(none)]> स्थिति
--------------
11.7.2 से मारियाडीबी-मारियाडीबी, क्लाइंट 15.2 डेबियन-लिनक्स-ग्नू (x86_64) के लिए EditLine रैपर का उपयोग कर रहा है

कनेक्शन आईडी: 33
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: root@localhost
SSL: उपयोग में आने वाला सिफर TLS_AES_256_GCM_SHA384 है, प्रमाणपत्र ठीक है
वर्तमान पेजर: stdout
आउटफ़ाइल का उपयोग: ''
सीमांकक का उपयोग करना: ;
सर्वर: मारियाडीबी
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण
प्रोटोकॉल संस्करण: 10
कनेक्शन: UNIX सॉकेट के माध्यम से लोकलहोस्ट
सर्वर कैरेक्टरसेट: utf8mb4
डीबी कैरेक्टरसेट: utf8mb4
क्लाइंट कैरेक्टरसेट: utf8mb3
कनेक्ट कैरेक्टरसेट: utf8mb3
यूनिक्स सॉकेट: /run/mysqld/mysqld.sock
अपटाइम: 1 मिनट 45 सेकंड

थ्रेड: 1 प्रश्न: 61 धीमी क्वेरीज़: 0 ओपन: 33 खुली टेबल: 26 क्वेरीज़ प्रति सेकंड औसत: 0.580
--------------

MySQL नवाचार 

vi /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.101
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4


# apt इंस्टॉल gnupg -y
# सीडी /usr/स्थानीय/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│ आप कौन सा सर्वर संस्करण प्राप्त करना चाहते हैं? │
  मायएसक्यूएल-8.0  
  mysql-innovation <-- इसे चुना गया
  mysql-8.4-lts    
  mysql-क्लस्टर-8.0   
  mysql-क्लस्टर-नवाचार    
  mysql-क्लस्टर-8.4-lts    
  कोई नहीं

 आप कौन सा MySQL उत्पाद कॉन्फ़िगर करना चाहते हैं?                                                                                                                           
 MySQL सर्वर और क्लस्टर (वर्तमान में चयनित: mysql-innovation)
 MySQL कनेक्टर (वर्तमान में चयनित: सक्षम)
 ठीक है

# apt-अपडेट प्राप्त करें
# apt-get mysql-server -y स्थापित करें

─# mysql -u रूट -p
पास वर्ड दर्ज करें:
MySQL मॉनिटर में आपका स्वागत है। कमांड्स ; या \g से समाप्त होते हैं।
आपका MySQL कनेक्शन आईडी 9 है
सर्वर संस्करण: 9.2.0 MySQL सामुदायिक सर्वर - GPL

कॉपीराइट (c) 2000, 2025, ओरेकल और/या उसके सहयोगी।

ओरेकल ओरेकल कॉर्पोरेशन और/या उसके का एक पंजीकृत ट्रेडमार्क है
अन्य नाम उनके संबंधित ट्रेडमार्क हो सकते हैं
मालिकों.

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

mysql> स्थिति
--------------
MySQL संस्करण 9.2.0 लिनक्स के लिए x86_64 पर (MySQL सामुदायिक सर्वर - GPL)

कनेक्शन आईडी: 9
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: root@localhost
SSL: उपयोग में नहीं
वर्तमान पेजर: stdout
आउटफ़ाइल का उपयोग: ''
सीमांकक का उपयोग करना: ;
सर्वर संस्करण: 9.2.0 MySQL सामुदायिक सर्वर - GPL
प्रोटोकॉल संस्करण: 10
कनेक्शन: UNIX सॉकेट के माध्यम से लोकलहोस्ट
सर्वर कैरेक्टरसेट: utf8mb4
डीबी कैरेक्टरसेट: utf8mb4
क्लाइंट कैरेक्टरसेट: utf8mb4
कनेक्ट कैरेक्टरसेट: utf8mb4
यूनिक्स सॉकेट: /var/run/mysqld/mysqld.sock
बाइनरी डेटा इस रूप में: हेक्साडेसिमल
अपटाइम: 47 सेकंड

थ्रेड: 2 प्रश्न: 6 धीमी क्वेरीज़: 0 ओपन: 119 फ्लश टेबल: 3 ओपन टेबल: 38 क्वेरीज़ प्रति सेकंड औसत: 0.127

MySQL इनोवेशन NDB क्लस्टर 

बिल्ली /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.102
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.103
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.103
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल gnupg -y
# सीडी /usr/स्थानीय/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│ आप कौन सा सर्वर संस्करण प्राप्त करना चाहते हैं?                                                                                                                            
 मायएसक्यूएल-8.0  
 mysql-नवाचार     
 mysql-8.4-lts        
 mysql-क्लस्टर-8.0       
 mysql-cluster-innovation <-- इसे चुना गया    
 mysql-क्लस्टर-8.4-lts   
 कोई नहीं

 आप कौन सा MySQL उत्पाद कॉन्फ़िगर करना चाहते हैं?                                                                             
  MySQL सर्वर और क्लस्टर (वर्तमान में चयनित: mysql-cluster-innovation)  
  MySQL कनेक्टर (वर्तमान में चयनित: सक्षम)     
  ठीक है

# apt-अपडेट प्राप्त करें
# apt-get mysql-cluster-community-server -y स्थापित करें
# apt-get install mysql-cluster-community-management-server <-- हम बाद में चुन सकते हैं कि किसका उपयोग करना है
# apt-get mysql-cluster-community-data-node -y इंस्टॉल करें

# vi /etc/mysql/conf.d/mysql.cnf

[मायएसक्यूएलडी]
# mysqld प्रक्रिया के लिए विकल्प:
ndbcluster # NDB स्टोरेज इंजन चलाएँ

[mysql_क्लस्टर]
# NDB क्लस्टर प्रक्रियाओं के लिए विकल्प:
ndb-connectstring=192.168.3.102 # प्रबंधन सर्वर का स्थान

# mkdir /var/lib/mysql-क्लस्टर
# सीडी /var/lib/mysql-क्लस्टर
# vi कॉन्फ़िगरेशन.ini
[एनडीबीडी डिफ़ॉल्ट]
# सभी डेटा नोड्स पर ndbd प्रक्रियाओं को प्रभावित करने वाले विकल्प:
NoOfReplicas=2 # खंड प्रतिकृतियों की संख्या
DataMemory=98M # डेटा संग्रहण के लिए कितनी मेमोरी आवंटित की जाए

[एनडीबी_एमजीएमडी]
# प्रबंधन प्रक्रिया विकल्प:
HostName=192.168.3.102 # प्रबंधन नोड का होस्टनाम या IP पता
DataDir=/var/lib/mysql-cluster # प्रबंधन नोड लॉग फ़ाइलों के लिए निर्देशिका

[एनडीबीडी]
# डेटा नोड "A" के लिए विकल्प:
                                # (प्रति डेटा नोड एक [ndbd] अनुभाग)
होस्टनाम=192.168.3.103 # होस्टनाम या आईपी पता
NodeId=2 # इस डेटा नोड के लिए नोड आईडी
DataDir=/var/lib/mysql/data # इस डेटा नोड की डेटा फ़ाइलों के लिए निर्देशिका

[एनडीबीडी]
# डेटा नोड "B" के लिए विकल्प:
होस्टनाम=192.168.3.104 # होस्टनाम या आईपी पता
NodeId=3 # इस डेटा नोड के लिए नोड आईडी
DataDir=/var/lib/mysql/data # इस डेटा नोड की डेटा फ़ाइलों के लिए निर्देशिका

[मायएसक्यूएलडी]
# SQL नोड विकल्प:
होस्टनाम=192.168.3.102 # होस्टनाम या आईपी पता
                                # (अतिरिक्त mysqld कनेक्शन जोड़ा जा सकता है)
                                # इस नोड के लिए विभिन्न प्रकार से निर्दिष्ट
                                # प्रयोजन जैसे ndb_restore चलाना)


┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
MySQL क्लस्टर प्रबंधन सर्वर mysql-9.2.0 ndb-9.2.0
चेतावनी: जब mgmd को -f या config-file से प्रारंभ किया जाता है तो --ndb-connectstring को नजरअंदाज कर दिया जाता है।

┌──(रूट㉿ndb2)-[/var/lib/mysql-क्लस्टर]
└─#एनडीबीडी
2025-04-01 11:53:11 [ndbd] जानकारी -- एंजेल '192.168.3.102:1186' से कनेक्ट हो गया
2025-04-01 11:53:12 [ndbd] जानकारी -- एन्जेल को नोडआईडी आवंटित किया गया: 2

┌──(रूट㉿ndb3)-[/var/lib/mysql-क्लस्टर]
└─#एनडीबीडी
2025-04-01 11:53:19 [ndbd] जानकारी -- एंजेल '192.168.3.102:1186' से कनेक्ट हो गया
2025-04-01 11:53:20 [ndbd] जानकारी -- एन्जेल को नोडआईडी आवंटित किया गया: 3


┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# एनडीबी_एमजीएम
-- एनडीबी क्लस्टर -- प्रबंधन क्लाइंट --
ndb_mgm> दिखाएँ
192.168.3.102 पोर्ट 1186 पर प्रबंधन सर्वर से कनेक्ट किया गया (क्लियरटेक्स्ट का उपयोग करके)
क्लस्टर कॉन्फ़िगरेशन
---------------------
[ndbd(NDB)] 2 नोड
id=2 @192.168.3.103 (mysql-9.2.0 ndb-9.2.0, नोडग्रुप: 0, *)
id=3 @192.168.3.104 (mysql-9.2.0 ndb-9.2.0, नोडग्रुप: 0)

[ndb_mgmd(एमजीएम)] 1 नोड
आईडी=1 @192.168.3.102 (mysql-9.2.0 ndb-9.2.0)

[mysqld(API)] 1 नोड
id=4 (कनेक्ट नहीं है, 192.168.3.102 से कनेक्ट स्वीकार कर रहा है)

┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb1.sqlhjalp.com |
+-------------------+

┌──(रूट㉿ndb2)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb2.sqlhjalp.com |
+-------------------+

┌──(रूट㉿ndb3)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb3.sqlhjalp.com |
+-------------------+

पेरकोना सर्वर 

# बिल्ली /etc/नेटवर्क/इंटरफेस
 
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.105
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल कर्ल gnupg gnupg2 lsb-release -y
# सीडी /usr/स्थानीय/src/
# कर्ल -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# percona-release केवल सक्षम ps-84-lts रिलीज़
# percona-release उपकरण रिलीज़ सक्षम करें
# apt इंस्टॉल percona-server-server

┌──(रूट㉿ps1)-[/usr/local/src]
└─# ps -ef |grep mysql
MySQL 5832 1 0 11:58 ? 00:00:03 /usr/sbin/mysqld
रूट 5924 501 0 12:04 अंक/1 00:00:00 grep --color=ऑटो mysql

┌──(रूट㉿ps1)-[/usr/local/src]
└─# mysql -u रूट -p
पास वर्ड दर्ज करें:
MySQL मॉनिटर में आपका स्वागत है। कमांड्स ; या \g से समाप्त होते हैं।
आपका MySQL कनेक्शन आईडी 9 है
सर्वर संस्करण: 8.4.4-4 पेरकोना सर्वर (GPL), रिलीज़ '4', संशोधन '844fde07'

कॉपीराइट (c) 2009-2025 पेरकोना एलएलसी और/या इसके सहयोगी
कॉपीराइट (c) 2000, 2025, ओरेकल और/या उसके सहयोगी।

ओरेकल ओरेकल कॉर्पोरेशन और/या उसके का एक पंजीकृत ट्रेडमार्क है
अन्य नाम उनके संबंधित ट्रेडमार्क हो सकते हैं
मालिकों.

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

पेरकोना क्लस्टर 

# बिल्ली /etc/नेटवर्क/इंटरफेस
iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल कर्ल gnupg gnupg2 lsb-release -y
# सीडी /usr/स्थानीय/src/
# कर्ल -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# उपयुक्त अद्यतन
# percona-रिलीज़ सेटअप pxc80
# apt install -y percona-xtradb-क्लस्टर

 
बिल्ली /etc/my.cnf
[ग्राहक]
सॉकेट=/var/run/mysqld/mysqld.sock

[एक्सट्राबैकअप]
खुली-फ़ाइलें-सीमा = 1000000

[मायएसक्यूएलडी]
सर्वर-आईडी=1
डेटा निर्देशिका = / var / lib / mysql
सॉकेट=/var/run/mysqld/mysqld.sock
लॉग-त्रुटि=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
सुरक्षित-लॉग-पथ=/var/lib/mysql-फ़ाइलें/
# बाइनरी लॉग समाप्ति अवधि 604800 सेकंड है, जो 7 दिनों के बराबर है
binlog_expire_logs_seconds=604800

यूजरस्टेट = 1

 └─# cat /etc/my.cnf | grep एन्क्रिप्ट
pxc-एन्क्रिप्ट-क्लस्टर-ट्रैफ़िक = बंद
 
┌──(रूट㉿pxc1)-[/]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.106

┌──(रूट㉿pxc1)-[/etc/mysql/conf.d]
└─# systemctl प्रारंभ mysql@bootstrap

mysql> 'wsrep_c%' जैसी स्थिति दिखाएं;
+--------------------------------+--------------------------------------+
| चर_नाम | मान |
+--------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
| wsrep_commit_oooe | 0 |
| wsrep_commit_oool | 0 |
| wsrep_commit_window | 0 |
| wsrep_cert_index_size | 0 |
| wsrep_cert_bucket_count | 1 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0 |
| wsrep_cluster_weight | 1 |
| wsrep_क्लस्टर_क्षमताएं | |
| wsrep_cluster_conf_id | 1 |
| wsrep_cluster_size | 1 |
| wsrep_cluster_state_uuid | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | प्राथमिक |
| wsrep_connected | चालू |
+--------------------------------+--------------------------------------+
सेट में 15 पंक्तियाँ (0.00 सेकंड)

┌──(रूट㉿pxc2)-[/etc]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.107

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# आरएम-आरएफ *

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# एलएस -tla
कुल 8
drwxr-x--- 2 mysql mysql 4096 अप्रैल 1 13:36 .
drwxr-xr-x 26 रूट रूट 4096 अप्रैल 1 12:34 ..

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# systemctl mysql प्रारंभ करें

┌──(रूट㉿pxc2)-[/etc]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.107
 ┌──(root㉿pxc3)-[/var/lib/mysql]
└─# आरएम-आरएफ *

┌──(root㉿pxc3)-[/var/lib/mysql]
└─# systemctl mysql प्रारंभ करें


mysql> 'wsrep_c%' जैसी स्थिति दिखाएं;
+--------------------------------+--------------------------------------+
| चर_नाम | मान |
+--------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
| wsrep_commit_oooe | 0 |
| wsrep_commit_oool | 0 |
| wsrep_commit_window | 0 |
| wsrep_cert_index_size | 0 |
| wsrep_cert_bucket_count | 1 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0 |
| wsrep_cluster_weight | 3 |
| wsrep_क्लस्टर_क्षमताएं | |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | प्राथमिक |
| wsrep_connected | चालू |
+--------------------------------+--------------------------------------+
सेट में 15 पंक्तियाँ (0.00 सेकंड)

MySQL एक्सपोर्टर्स और प्रोमेथियस सेटअप करें 

प्रत्येक मशीन के लिए...

apt install -y प्रोमेथियस-mysqld-एक्सपोर्टर
 
CREATE USER IF NOT EXISTS 'prometheus'@'localhost' IDENTIFIED BY '<PASSWORDHERE>'; 
mysql> show grants for 'prometheus'@'localhost'; +------------------------------------------------------------------------------------------------+ | prometheus@localhost के लिए अनुदान | +------------------------------------------------------------------------------------------------+ | `prometheus`@`localhost` को *.* पर चयन, प्रक्रिया, प्रतिकृति क्लाइंट प्रदान करें | +------------------------------------------------------------------------------------------------+ सेट में 1 पंक्ति (0.00 सेकंड) ┌──(रूट㉿pxc1)-[~] └─# ls -ltr /etc/mysql/debian.cnf -rw-r--r-- 1 रूट रूट 50 अप्रैल 1 16:52 /etc/mysql/debian.cnf # vi /etc/default/prometheus-mysqld-exporter systemctl पुनः प्रारंभ prometheus-mysqld-exporter.service # systemctl पुनः प्रारंभ prometheus-mysqld-exporter.service

प्रोमेथियस सर्वर 

रूट@प्रोमेथियस:/etc/प्रोमेथियस# vi प्रोमेथियस.yml


  - नौकरी का नाम: mysqld-एक्सपोर्टर
    स्थैतिक_कॉन्फ़िगरेशन:
      - लक्ष्य:
          - 'mysql1.sqlhjalp.com:9104'
          - 'mariadb1.sqlhjarp.com:9104'
          - 'ps1.sqlhjalp.com:9104'
          - 'pxc1.sqlhjalp.com:9104'
          - 'pxc2.sqlhjalp.com:9104'
          - 'pxc3.sqlhjalp.com:9104'
          - 'ndb1.sqlhjalp.com:9104'
          - 'ndb2.sqlhjalp.com:9104'
          - 'ndb3.sqlhjalp.com:9104'
        लेबल:
          देश: अमेरिका
          db_env: 'होम'
          वातावरण: "डेमो"
          लिनक्स: डेबियन
          नोड्यूज़: सर्वर


mysql_up{पर्यावरण="डेमो"}

तत्व मान
mysql_up{country="US",db_env="home",environment="demo",instance="mariadb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="mysql1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ps1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1

वॉल्ट खाता सेटअप 

mysql> यदि मौजूद नहीं है तो रोल बनाएं vaultaccess;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `vaultaccess`@`%` WITH GRANT OPTION;
 
उपयोगकर्ता `vaultadmin`@`%` बनाएं जिसे '<PASSWORDHERE>' द्वारा पहचाना गया है डिफ़ॉल्ट भूमिका `vaultaccess`@`%` कोई पासवर्ड आवश्यक नहीं है समाप्ति डिफ़ॉल्ट खाता पासवर्ड अनलॉक करें इतिहास डिफ़ॉल्ट पासवर्ड पुनः उपयोग अंतराल डिफ़ॉल्ट पासवर्ड वर्तमान डिफ़ॉल्ट आवश्यक है;
mysql> vaultadmin के लिए अनुदान दिखाएँ;

यदि READONLY मौजूद नहीं है तो भूमिका बनाएं;
`READONLY`@`%` को चयन, निष्पादन प्रदान करें;

मारियाडीबी

MariaDB [(none)]> CREATE USER `vaultadmin`@`%` IDENTIFIED BY '<PASSWORDHERE>'; 
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO `vaultadmin`@`%` WITH GRANT OPTION;

वॉल्ट डेटाबेस इंजन - प्रति DB इंस्टेंस दोहराया गया 

वॉल्ट डेटाबेस/कॉन्फ़िगरेशन/MYSQL प्लगइन_नाम=mysql-डेटाबेस-प्लगइन कनेक्शन_url="{{उपयोगकर्ता नाम}}:{{पासवर्ड}}@tcp(mysql1.sqlhjalp.com:3306)/" अनुमत_भूमिकाएं="मेरी-भूमिका" उपयोगकर्ता नाम="वॉल्टएडमिन" पासवर्ड="<पासवर्डयहां>"
वॉल्ट डेटाबेस/कॉन्फ़िगरेशन/MYSQL पढ़ें मुख्य मूल्य --- ----- अनुमत_भूमिकाएँ [] कनेक्शन_विवरण मानचित्र[बैकएंड:डेटाबेस कनेक्शन_url:{{उपयोगकर्ता नाम}}:{{पासवर्ड}}@tcp(mysql1.sqlhjalp.com:3306)/ अधिकतम_कनेक्शन_लाइफटाइम:0s अधिकतम_निष्क्रिय_कनेक्शन:0 अधिकतम_खुले_कनेक्शन:4 उपयोगकर्ता नाम:vaultadmin] स्वचालित रोटेशन अक्षम करें असत्य पासवर्ड_नीति n/a प्लगइन_नाम mysql-डेटाबेस-प्लगइन प्लगइन_संस्करण n/a रूट_क्रेडेंशियल्स_रोटेट_स्टेटमेंट्स [] रोटेशन_पीरियड 0s रोटेशन_शेड्यूल n/a रोटेशन_विंडो 0 skip_static_role_import_rotation गलत सत्यापित_कनेक्शन सत्य वॉल्ट डेटाबेस/भूमिकाएँ/DEMOREADONLY पढ़ें मुख्य मूल्य --- ----- क्रिएशन_स्टेटमेंट्स [CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}'; *.* पर '{{name}}'@'%';] को चयन का अधिकार प्रदान करें क्रेडेंशियल_टाइप पासवर्ड db_name MYSQL डिफ़ॉल्ट_टीटीएल 1 घंटा अधिकतम_टीटीएल 24 घंटे नवीकरण_विवरण [] निरस्तीकरण_कथन [यदि '{{name}}'@'%' मौजूद है तो उपयोगकर्ता को हटा दें;] रोलबैक_स्टेटमेंट्स []

वॉल्ट गतिशील उपयोगकर्ता उदाहरण 

वॉल्ट डेटाबेस/क्रेड्स/DEMOREADONLY पढ़ें
मुख्य मूल्य
--- -----
lease_id डेटाबेस/creds/DEMOREADONLY/1SACMdnTGXseMewbA6ek1T42
लीज़_अवधि 1 घंटा
lease_renewable सच
पासवर्ड -piWu8YfOFxUkAqR347a
उपयोगकर्ता नाम v-userpass-k-DEMOREADON-HFRYaNGE


mysql> 'v-userpass-k-DEMOREADON-HFRYaNGE'@'%' के लिए अनुदान दिखाएँ;
+----------------------------------------------------------------------+
| v-userpass-k-DEMOREADON-HFRYaNGE@% के लिए अनुदान |
+----------------------------------------------------------------------+
| `v-userpass-k-DEMOREADON-HFRYaNGE`@`%` पर चयन का अधिकार प्रदान करें |
+----------------------------------------------------------------------+
सेट में 1 पंक्ति (0.00 सेकंड)

इसके अलावा..... 

पोस्टग्रेएसक्यूएल

https://docs.ultr.com/how-to-install-postgresql-on-debian-12

# apt install -y postgresql-common
# /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
# उपयुक्त अद्यतन
# apt-cache नीति postgresql
# apt इंस्टॉल postgresql -y
# systemctl प्रारंभ postgresql
# systemctl स्थिति postgresql
# sudo -u पोस्टग्रेज psqlsudo -u पोस्टग्रेज psql
# postgres=# एन्क्रिप्टेड पासवर्ड '<पासवर्ड>' के साथ पोस्टग्रेज की भूमिका बदलें;
भूमिका बदलें
#

ओरेकल डाटाबेस XE 


wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# yum इंस्टॉल ./oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm ./oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# /etc/init.d/oracle-xe-21c कॉन्फ़िगर करें

$ निर्यात ORACLE_SID=XE
$ निर्यात ORAENV_ASK=NO
$ . /opt/oracle/product/21c/dbhomeXE/bin/oraenv

ORACLE_HOME = [] ? /opt/oracle/product/21c/dbhomeXE
Oracle आधार को /opt/oracle पर सेट किया गया है


[रूट@लोकलहोस्ट ~]# इको ​​$ORACLE_HOME
/opt/oracle/product/21c/dbhomeXE
[रूट@लोकलहोस्ट ~]# सीडी $ORACLE_HOME
[रूट@लोकलहोस्ट dbhomeXE]# pwd
/opt/oracle/product/21c/dbhomeXE

[रूट@लोकलहोस्ट dbhomeXE]# सीडी बिन

[रूट@लोकलहोस्ट बिन]# sqlplus /nolog

SQL*Plus: रिलीज़ 21.0.0.0.0 - उत्पादन गुरुवार अप्रैल 3 10:35:15 2025 पर
संस्करण 21.3.0.0.0

कॉपीराइट (c) 1982, 2021, Oracle. सभी अधिकार सुरक्षित।

एसक्यूएल>

SQL> कनेक्ट SYS AS SYSDBA
पास वर्ड दर्ज करें:
जुड़े हुए।
एसक्यूएल>

SQL> सेट लाइनसाइज़ 1500
SQL> DBA_USERS से उपयोगकर्ता नाम, account_status का चयन करें;

उपयोगकर्ता नाम खाता_स्थिति
------------------------------------------------------------------------------------------------------------------------------------------------------------------
सिस्टम खुला
सिस्टम खुला
XS$NULL लॉक किया गया
OJVMSYS लॉक किया गया
LBACSYS लॉक
आउटलाइन लॉक
DBSNMP लॉक किया गया
APPQOSSYS लॉक किया गया
DBSFWUSER लॉक किया गया
GGSYS लॉक किया गया
अनाम लॉक किया गया
 
एसक्यूएल> छोड़ें
Oracle Database 21c Express Edition रिलीज़ 21.0.0.0.0 - प्रोडक्शन से डिस्कनेक्ट किया गया
संस्करण 21.3.0.0.0

एसक्यूएलसर्वर 

# कर्ल -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# yum इंस्टॉल -y mssql-सर्वर
# /opt/mssql/bin/mssql-conf सेटअप
# systemctl स्थिति mssql-सर्वर

कर्ल https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo

# yum इंस्टॉल -y mssql-tools18 unixODBC-devel

#यम चेक-अपडेट
# yum अपडेट mssql-tools18

इको 'एक्सपोर्ट PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
स्रोत ~/.bash_profile

# /opt/mssql/bin/mssql-conf सेट-sa-पासवर्ड
SQL सर्वर सिस्टम व्यवस्थापक पासवर्ड दर्ज करें:
SQL सर्वर सिस्टम व्यवस्थापक पासवर्ड की पुष्टि करें:
SQL सर्वर कॉन्फ़िगर किया जा रहा है...

# sqlcmd -S लोकलहोस्ट -नहीं -U sa

# sqlcmd -S लोकलहोस्ट -नहीं -U sa
पासवर्ड:
1> डेटाबेस टेस्टडीबी बनाएं;
2> sys.databases से नाम का चयन करें;
3> जाओ
नाम
--------------------------------------------------------------------------------------------------------------------------------
मालिक
टेम्पडीबी
नमूना
एमएसडीबी
टेस्टडीबी

(5 पंक्तियाँ प्रभावित)


टेस्टडीबी का उपयोग करें;

dbo.Inventory टेबल बनाएं
(
    आईडी INT, नाम NVARCHAR (50), मात्रा INT, प्राथमिक कुंजी (आईडी)
);
भगवान

INSERT INTO dbo.Inventory VALUES (1, 'केला', 150);
INSERT INTO dbo.Inventory VALUES (2, 'नारंगी', 154);

जाना


SELECT * FROM dbo.Inventory जहां मात्रा > 152;
जाना

1> dbo.Inventory से * का चयन करें;
2> जाओ
आईडी नाम मात्रा
----------- -------------------------------------------------- --------
          1 केला 150
          2 नारंगी 154

मोंगोदब - पेरकोना

https://docs.percona.com/percona-server-for-mongodb/8.0/install/apt.html

# apt इंस्टॉल -y gnupg2 gnupg कर्ल
# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70प्रो
psmdb-70-प्रो psmdb-60-प्रो
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-प्रो psmdb-70-प्रो
psmdb-70-प्रो psmdb-60-प्रो

# percona-release psmdb-80 रिलीज़ सक्षम करें
# उपयुक्त अद्यतन
# apt percona-server-mongodb इंस्टॉल करें
# apt-cache मैडिसन percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 रूट रूट 1403 फरवरी 11 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# बिल्ली /etc/systemd/system/enable-transparent-huge-pages.service
[इकाई]
विवरण=पारदर्शी विशाल पृष्ठ (THP) सक्षम करें
डिफ़ॉल्ट निर्भरताएँ=नहीं
बाद=sysinit.target स्थानीय-fs.target
पहले=mongod.service

[सेवा]
प्रकार=वनशॉट
ExecStart=/bin/sh -c 'echo हमेशा | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[स्थापित करना]
वांटेडबाय=बेसिक.टारगेट

# systemctl डेमन-रीलोड
# systemctl प्रारंभ सक्षम-पारदर्शी-विशाल-पृष्ठ
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[हमेशा] मैडवाइज़ कभी नहीं
हमेशा टालना [आस्थगित+विचार करना] कभी नहीं टालना
0
1

# systemctl सक्षम सक्षम-पारदर्शी-विशाल-पृष्ठ
# ls -lr /var/lib/mongodb/
कुल 0


# systemctl प्रारंभ mongod
# systemctl स्थिति mongod
# मोंगोश
वर्तमान मोंगोश लॉग आईडी: 67ed4eb0cd874b942d98ebcf
इससे कनेक्ट हो रहा है: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: कनेक्ट ECONNREFUSED 127.0.0.1:27017

मोंगोडीबी

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/

 
# apt-get gnupg कर्ल स्थापित करें
# कर्ल -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   सुडो gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
  --डियरमोर
# इको ​​"डेब [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | सुडो टी /etc/apt/sources.list.d/mongodb-org-8.0.list
# apt-अपडेट प्राप्त करें
# apt-get install -y mongodb-org
# systemctl डेमन-रीलोड
# ulimit -c असीमित
# यूलिमिट -एन 64000
# ulimit -f असीमित
# ulimit -t असीमित
# ulimit -l असीमित
# ulimit -m असीमित
# यूलिमिट -u 64000
# यूलिमिट -ए
वास्तविक समय गैर-अवरुद्ध समय (माइक्रोसेकंड, -R) असीमित
कोर फ़ाइल आकार (ब्लॉक, -c) असीमित
डेटा सेग आकार (kbytes, -d) असीमित
शेड्यूलिंग प्राथमिकता (-e) 0
फ़ाइल आकार (ब्लॉक, -f) असीमित
लंबित सिग्नल (-i) 15471
अधिकतम लॉक मेमोरी (kbytes, -l) असीमित
अधिकतम मेमोरी आकार (kbytes, -m) असीमित
खुली फ़ाइलें (-n) 64000
पाइप आकार (512 बाइट्स, -p) 8
POSIX संदेश कतारें (बाइट्स, -q) 819200
वास्तविक समय प्राथमिकता (-r) 0
स्टैक आकार (kbytes, -s) 8192
सीपीयू समय (सेकंड, -t) असीमित
अधिकतम उपयोगकर्ता प्रक्रियाएँ (-u) 64000
वर्चुअल मेमोरी (kbytes, -v) असीमित
फ़ाइल लॉक (-x) असीमित

# systemctl प्रारंभ mongod

# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70प्रो
psmdb-70-प्रो psmdb-60-प्रो
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-प्रो psmdb-70-प्रो
psmdb-70-प्रो psmdb-60-प्रो

# percona-release psmdb-80 रिलीज़ सक्षम करें
# उपयुक्त अद्यतन
# apt percona-server-mongodb इंस्टॉल करें
# apt-cache मैडिसन percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 रूट रूट 1403 फरवरी 11 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# बिल्ली /etc/systemd/system/enable-transparent-huge-pages.service
[इकाई]
विवरण=पारदर्शी विशाल पृष्ठ (THP) सक्षम करें
डिफ़ॉल्ट निर्भरताएँ=नहीं
बाद=sysinit.target स्थानीय-fs.target
पहले=mongod.service

[सेवा]
प्रकार=वनशॉट
ExecStart=/bin/sh -c 'echo हमेशा | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[स्थापित करना]
वांटेडबाय=बेसिक.टारगेट

# systemctl डेमन-रीलोड
# systemctl प्रारंभ सक्षम-पारदर्शी-विशाल-पृष्ठ
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[हमेशा] मैडवाइज़ कभी नहीं
हमेशा टालना [आस्थगित+विचार करना] कभी नहीं टालना
0
1

# systemctl सक्षम सक्षम-पारदर्शी-विशाल-पृष्ठ
# ls -lr /var/lib/mongodb/
कुल 0


# systemctl प्रारंभ mongod
# systemctl स्थिति mongod
# मोंगोश
वर्तमान मोंगोश लॉग आईडी: 67ed4eb0cd874b942d98ebcf
इससे कनेक्ट हो रहा है: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: कनेक्ट ECONNREFUSED 127.0.0.1:27017


कैसेंड्रा

https://docs.ultr.com/how-to-install-apache-cassandra-on-debian-12

# उपयुक्त अद्यतन
# बिल्ली /etc/apt/source.list
देब https://deb.debian.org/debian बुकवर्म मुख्य गैर-मुक्त-फर्मवेयर
deb http://deb.debian.org/debian bookworm-updates मुख्य
देब http://deb.debian.org/debian-security बुकवर्म-सिक्योरिटी मुख्य
deb http://deb.debian.org/debian अस्थिर मुख्य गैर-मुक्त योगदान

# उपयुक्त अद्यतन
# apt इंस्टॉल कर्ल
# apt openjdk-17-jdk इंस्टॉल करें
# जावा --संस्करण
openjdk 17.0.14 2025-01-21
OpenJDK रनटाइम एनवायरनमेंट (बिल्ड 17.0.14+7-Debian-1deb12u1)
OpenJDK 64-बिट सर्वर VM (बिल्ड 17.0.14+7-Debian-1deb12u1, मिश्रित मोड, साझाकरण)

# इको ​​"डेब [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x मुख्य" | सुडो टी -a /etc/apt/sources.list.d/cassandra.sources.list
# कर्ल -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS
# उपयुक्त अद्यतन
# apt इंस्टॉल कैसंड्रा

# ls -lr /etc/cassandra/cassandra.yaml
-rw-r--r-- 1 रूट रूट 91468 जनवरी 27 07:28 /etc/cassandra/cassandra.yaml

# vi /etc/cassandra/cassandra.yaml
# systemctl कैसंड्रा पुनः प्रारंभ करें

# ls -lr /var/log/कैसेंड्रा/
कुल 0

# systemctl स्थिति कैसंड्रा
# नोडटूल स्थिति
nodetool: '127.0.0.1:7199' से कनेक्ट करने में विफल - ConnectException: 'कनेक्शन अस्वीकृत'.

# cqlsh -u कैसंड्रा -p कैसंड्रा

चेतावनी: कमांड लाइन इंटरफ़ेस पर पासवर्ड का उपयोग असुरक्षित हो सकता है।
अनुशंसा: पासवर्ड सुरक्षित रूप से प्रदान करने के लिए क्रेडेंशियल फ़ाइल का उपयोग करें।

कनेक्शन त्रुटि: ('किसी भी सर्वर से कनेक्ट करने में असमर्थ', {'127.0.0.1:9042': ConnectionRefusedError(111, "[('127.0.0.1', 9042)] से कनेक्ट करने का प्रयास किया। अंतिम त्रुटि: कनेक्शन अस्वीकृत")})