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

कठपुतली के साथ डेटाबेस स्वचालन:MySQL और मारियाडीबी प्रतिकृति की तैनाती

कठपुतली कॉन्फ़िगरेशन प्रबंधन को केंद्रीकृत और स्वचालित करने के लिए एक खुला स्रोत सिस्टम प्रबंधन उपकरण है। स्वचालन उपकरण मैन्युअल और दोहराए जाने वाले कार्यों को कम करने में मदद करते हैं, और बहुत समय बचा सकते हैं।

कठपुतली सर्वर/एजेंट मॉडल में डिफ़ॉल्ट रूप से काम करती है। एजेंट मास्टर से अपना "कैटलॉग" (अंतिम वांछित स्थिति) प्राप्त करते हैं और इसे स्थानीय रूप से लागू करते हैं। फिर वे सर्वर को वापस रिपोर्ट करते हैं। कैटलॉग की गणना "तथ्यों" के आधार पर की जाती है जो मशीन सर्वर, उपयोगकर्ता इनपुट (पैरामीटर) और मॉड्यूल (सोर्स कोड) को भेजती है।

इस ब्लॉग में, हम आपको दिखाएंगे कि कठपुतली के माध्यम से MySQL/MariaDB उदाहरणों को कैसे परिनियोजित और प्रबंधित किया जाए। MySQL/MariaDB के आस-पास कई प्रौद्योगिकियां हैं जैसे प्रतिकृति (मास्टर-दास, गैलेरा या MySQL के लिए समूह प्रतिकृति), SQL- जागरूक लोड बैलेंसर जैसे प्रॉक्सीएसक्यूएल और मारियाडीबी मैक्सस्केल, बैकअप और रिकवरी टूल और कई और जिन्हें हम इसमें शामिल करेंगे ब्लॉग श्रृंखला। कठपुतली फोर्ज में समुदाय द्वारा निर्मित और अनुरक्षित कई मॉड्यूल भी उपलब्ध हैं जो कोड को सरल बनाने और पहिया को फिर से शुरू करने से बचने में हमारी मदद कर सकते हैं। इस ब्लॉग में, हम MySQL प्रतिकृति पर ध्यान केंद्रित करने जा रहे हैं।

कठपुतली/mysql

यह अभी MySQL और MariaDB (और शायद बाजार में सबसे अच्छा) के लिए सबसे लोकप्रिय कठपुतली मॉड्यूल है। यह मॉड्यूल MySQL की स्थापना और कॉन्फ़िगरेशन दोनों का प्रबंधन करता है, साथ ही साथ कठपुतली को MySQL संसाधनों, जैसे डेटाबेस, उपयोगकर्ता और अनुदान के प्रबंधन की अनुमति देता है।

मॉड्यूल को आधिकारिक तौर पर कठपुतली टीम (कठपुतली लैब्स जीथब रिपॉजिटरी के माध्यम से) द्वारा बनाए रखा जाता है और कठपुतली एंटरप्राइज 2019 के सभी प्रमुख संस्करणों का समर्थन करता है। डेबियन, SLES, साइंटिफिक, CentOS, OracleLinux प्लेटफॉर्म। उपयोगकर्ता के पास पैकेज रिपॉजिटरी को अनुकूलित करके MySQL, MariaDB और Percona सर्वर को स्थापित करने के विकल्प हैं

निम्न उदाहरण दिखाता है कि MySQL सर्वर को कैसे परिनियोजित किया जाए। कठपुतली मास्टर पर MySQL मॉड्यूल स्थापित करें और मेनिफेस्ट फ़ाइल बनाएँ:

(puppet-master)$ puppet module install puppetlabs/mysql
(puppet-master)$ vim /etc/puppetlabs/code/environments/production/manifests/mysql.pp

निम्नलिखित पंक्तियाँ जोड़ें:

node "db1.local" {
  class { '::mysql::server':
    root_password => 't5[sb^D[+rt8bBYu',
    remove_default_accounts => true,
    override_options => {
      'mysqld' => {
        'log_error' => '/var/log/mysql.log',
        'innodb_buffer_pool_size' => '512M'
      }
      'mysqld_safe' => {
        'log_error' => '/var/log/mysql.log'
      }
    }
  }
}

फिर कठपुतली एजेंट नोड पर, कॉन्फ़िगरेशन कैटलॉग लागू करने के लिए निम्न कमांड चलाएँ:

(db1.local)$ puppet agent -t

पहली बार चलाने पर, आपको निम्न त्रुटि मिल सकती है:

Info: Certificate for db1.local has not been signed yet

प्रमाण पत्र पर हस्ताक्षर करने के लिए कठपुतली मास्टर पर बस निम्न आदेश चलाएँ:

(puppet-master)$ puppetserver ca sign --certname=db1.local
Successfully signed certificate request for db1.local

हस्ताक्षरित प्रमाणपत्र के साथ कनेक्शन फिर से शुरू करने के लिए "कठपुतली एजेंट-टी" कमांड के साथ पुन:प्रयास करें।

उपरोक्त परिभाषा OS वितरण रिपॉजिटरी में उपलब्ध मानक MySQL-संबंधित पैकेजों को स्थापित करेगी। उदाहरण के लिए, उबुंटू 18.04 (बायोनिक) पर, आपको MySQL 5.7.26 पैकेज इंस्टाल होंगे:

(db1.local) $ dpkg --list | grep -i mysql
ii  mysql-client-5.7                5.7.26-0ubuntu0.18.04.1           amd64        MySQL database client binaries
ii  mysql-client-core-5.7           5.7.26-0ubuntu0.18.04.1           amd64        MySQL database core client binaries
ii  mysql-common                    5.8+1.0.4                         all          MySQL database common files, e.g. /etc/mysql/my.cnf
ii  mysql-server                    5.7.26-0ubuntu0.18.04.1           all          MySQL database server (metapackage depending on the latest version)
ii  mysql-server-5.7                5.7.26-0ubuntu0.18.04.1           amd64        MySQL database server binaries and system database setup
ii  mysql-server-core-5.7           5.7.26-0ubuntu0.18.04.1           amd64        MySQL database server binaries

आप रिपॉजिटरी पर अतिरिक्त कॉन्फ़िगरेशन के साथ Oracle, Percona या MariaDB जैसे अन्य विक्रेताओं का विकल्प चुन सकते हैं (विवरण के लिए README अनुभाग देखें)। निम्नलिखित परिभाषा मारियाडीबी पैकेज को मारियाडीबी उपयुक्त भंडार से स्थापित करेगी (उपयुक्त कठपुतली मॉड्यूल की आवश्यकता है):

$ puppet module install puppetlabs/apt
$ vim /etc/puppetlabs/code/environments/production/manifests/mariadb.pp
# include puppetlabs/apt module
include apt

# apt definition for MariaDB 10.3
apt::source { 'mariadb':
  location => 'http://sgp1.mirrors.digitalocean.com/mariadb/repo/10.3/ubuntu/',
  release  => $::lsbdistcodename,
  repos    => 'main',
  key      => {
    id     => 'A6E773A1812E4B8FD94024AAC0F47944DE8F6914',
    server => 'hkp://keyserver.ubuntu.com:80',
  },
  include => {
    src   => false,
    deb   => true,
  },
}

# MariaDB configuration
class {'::mysql::server':
  package_name     => 'mariadb-server',
  service_name     => 'mysql',
  root_password    => 't5[sb^D[+rt8bBYu',
  override_options => {
    mysqld => {
      'log-error' => '/var/log/mysql/mariadb.log',
      'pid-file'  => '/var/run/mysqld/mysqld.pid',
    },
    mysqld_safe => {
      'log-error' => '/var/log/mysql/mariadb.log',
    },
  }
}

# Deploy on db2.local
node "db2.local" {
Apt::Source['mariadb'] ->
Class['apt::update'] ->
Class['::mysql::server']
}

कुंजी-> आईडी मान पर ध्यान दें, जहां इस आलेख में दिखाए गए अनुसार 40-वर्ण आईडी पुनर्प्राप्त करने का एक विशेष तरीका है:

$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ apt-key adv --list-public-keys --with-fingerprint --with-colons
uid:-::::1459359915::6DC53DD92B7A8C298D5E54F950371E2B8950D2F2::MariaDB Signing Key <[email protected]>::::::::::0:
sub:-:4096:1:C0F47944DE8F6914:1459359915::::::e::::::23:
fpr:::::::::A6E773A1812E4B8FD94024AAC0F47944DE8F6914:

जहां आईडी मान "fpr" से शुरू होने वाली पंक्ति में है, जो 'A6E773A1812E4B8FD94024AAC0F47944DE8F6914' है।

कठपुतली कैटलॉग लागू होने के बाद, आप स्पष्ट पासवर्ड के बिना सीधे MySQL कंसोल को रूट के रूप में एक्सेस कर सकते हैं क्योंकि मॉड्यूल स्वचालित रूप से ~/.my.cnf को कॉन्फ़िगर और प्रबंधित करता है। अगर हम रूट पासवर्ड को किसी और चीज़ पर रीसेट करना चाहते हैं, तो बस कठपुतली परिभाषा में root_password मान बदलें और एजेंट नोड पर कैटलॉग लागू करें।

MySQL प्रतिकृति परिनियोजन

MySQL प्रतिकृति सेटअप को परिनियोजित करने के लिए, मास्टर और स्लेव कॉन्फ़िगरेशन को अलग करने के लिए कम से कम दो प्रकार के कॉन्फ़िगरेशन बनाने होंगे। मास्टर पढ़ने/लिखने की अनुमति देने के लिए केवल-पढ़ने के लिए अक्षम होगा, जबकि दास केवल-पढ़ने के लिए सक्षम के साथ कॉन्फ़िगर किए जाएंगे। इस उदाहरण में, हम कॉन्फ़िगरेशन को सरल बनाने के लिए GTID- आधारित प्रतिकृति का उपयोग करने जा रहे हैं (क्योंकि सभी नोड्स का कॉन्फ़िगरेशन बहुत समान होगा)। हम दास के उठने के ठीक बाद मास्टर को प्रतिकृति लिंक शुरू करना चाहेंगे।

माना कि हमारे पास 3 नोड्स MySQL मास्टर-स्लेव प्रतिकृति हैं:

  • db1.स्थानीय - मास्टर
  • db2.local - गुलाम #1
  • db3.स्थानीय - गुलाम #2

उपरोक्त आवश्यकताओं को पूरा करने के लिए, हम अपने मैनिफेस्ट को कुछ इस तरह लिख सकते हैं:

# Puppet manifest for MySQL GTID-based replication MySQL 5.7 on Ubuntu 18.04 (Puppet v6.4.2) 
# /etc/puppetlabs/code/environments/production/manifests/replication.pp

# node's configuration
class mysql {
  class {'::mysql::server':
    root_password           => '[email protected]#',
    create_root_my_cnf      => true,
    remove_default_accounts => true,
    manage_config_file      => true,
    override_options        => {
      'mysqld' => {
        'datadir'                 => '/var/lib/mysql',
        'bind_address'            => '0.0.0.0',
        'server-id'               => $mysql_server_id,
        'read_only'               => $mysql_read_only,
        'gtid-mode'               => 'ON',
        'enforce_gtid_consistency'=> 'ON',
        'log-slave-updates'       => 'ON',
        'sync_binlog'             => 1,
        'log-bin'                 => '/var/log/mysql-bin',
        'read_only'               => 'OFF',
        'binlog-format'           => 'ROW',
        'log-error'               => '/var/log/mysql/error.log',
        'report_host'             => ${fqdn},
        'innodb_buffer_pool_size' => '512M'
      },
      'mysqld_safe' => {
        'log-error'               => '/var/log/mysql/error.log'
      }
    }
  }
  
  # create slave user
  mysql_user { "${slave_user}@192.168.0.%":
      ensure        => 'present',
      password_hash => mysql_password("${slave_password}")
  }

  # grant privileges for slave user
  mysql_grant { "${slave_user}@192.168.0.%/*.*":
      ensure        => 'present',
      privileges    => ['REPLICATION SLAVE'],
      table         => '*.*',
      user          => "${slave_user}@192.168.0.%"
  }

  # /etc/hosts definition
  host {
    'db1.local': ip => '192.168.0.161';
    'db2.local': ip => '192.169.0.162';
    'db3.local': ip => '192.168.0.163';
  }

  # executes change master only if $master_host is defined
  if $master_host {
    exec { 'change master':
      path    => '/usr/bin:/usr/sbin:/bin',
      command => "mysql --defaults-extra-file=/root/.my.cnf -e \"CHANGE MASTER TO MASTER_HOST = '$master_host', MASTER_USER = '$slave_user', MASTER_PASSWORD = '$slave_password', MASTER_AUTO_POSITION = 1; START SLAVE;\"",
      unless  => "mysql --defaults-extra-file=/root/.my.cnf -e 'SHOW SLAVE STATUS\G' | grep 'Slave_SQL_Running: Yes'"
    }
  }
}

## node assignment

# global vars
$master_host = undef
$slave_user = 'slave'
$slave_password = 'Replicas123'

# master
node "db1.local" {
  $mysql_server_id = '1'
  $mysql_read_only = 'OFF'
  include mysql
}

# slave1
node "db2.local" {
  $mysql_server_id = '2'
  $mysql_read_only = 'ON'
  $master_host = 'db1.local'
  include mysql
}

# slave2
node "db3.local" {
  $mysql_server_id = '3'
  $mysql_read_only = 'ON'
  $master_host = 'db1.local'
  include mysql
}

एजेंट को कैटलॉग लागू करने के लिए बाध्य करें:

(all-mysql-nodes)$ puppet agent -t

मास्टर (db1.local) पर, हम सभी जुड़े हुए दासों को सत्यापित कर सकते हैं:

mysql> SHOW SLAVE HOSTS;
+-----------+-----------+------+-----------+--------------------------------------+
| Server_id | Host      | Port | Master_id | Slave_UUID                           |
+-----------+-----------+------+-----------+--------------------------------------+
|         3 | db3.local | 3306 |         1 | 2d0b14b6-8174-11e9-8bac-0273c38be33b |
|         2 | db2.local | 3306 |         1 | a9dfa4c7-8172-11e9-8000-0273c38be33b |
+-----------+-----------+------+-----------+--------------------------------------+

"निष्पादन {'चेंज मास्टर':" अनुभाग पर अतिरिक्त ध्यान दें, जहां इसका अर्थ है कि शर्त पूरी होने पर प्रतिकृति लिंक आरंभ करने के लिए एक MySQL कमांड निष्पादित किया जाएगा। कठपुतली द्वारा निष्पादित सभी "निष्पादन" संसाधन बेकार होने चाहिए, जिसका अर्थ है कि ऑपरेशन जिसका एक ही प्रभाव होगा चाहे आप इसे एक बार चलाएं या 10,001 बार। कई शर्त विशेषताएँ हैं जिनका आप उपयोग कर सकते हैं जैसे "जब तक", "केवल अगर" और "बनाएँ" सही स्थिति की सुरक्षा के लिए और कठपुतली को आपके सेटअप के साथ खिलवाड़ करने से रोकने के लिए। यदि आप प्रतिकृति लिंक को मैन्युअल रूप से आरंभ करना चाहते हैं तो आप उस अनुभाग को हटा/टिप्पणी कर सकते हैं।

MySQL प्रबंधन

इस मॉड्यूल का उपयोग कई MySQL प्रबंधन कार्यों को करने के लिए किया जा सकता है:

  • कॉन्फ़िगरेशन विकल्प (संशोधित करें, लागू करें, कस्टम कॉन्फ़िगरेशन)
  • डेटाबेस संसाधन (डेटाबेस, उपयोगकर्ता, अनुदान)
  • बैकअप (बनाएं, शेड्यूल करें, बैकअप उपयोगकर्ता, संग्रहण)
  • साधारण पुनर्स्थापना (केवल mysqldump)
  • प्लगइन्स इंस्टालेशन/सक्रियण

डेटाबेस संसाधन

जैसा कि आप ऊपर दिए गए उदाहरण में देख सकते हैं, हमने क्रमशः उपयोगकर्ता बनाने और उपयोगकर्ता के लिए विशेषाधिकार प्रदान करने के लिए दो MySQL संसाधनों - mysql_user और mysql_grant को परिभाषित किया है। हम यह सुनिश्चित करने के लिए mysql::db क्लास का भी उपयोग कर सकते हैं कि संबंधित उपयोगकर्ता और विशेषाधिकारों वाला डेटाबेस मौजूद है, उदाहरण के लिए:

  # make sure the database and user exist with proper grant
  mysql::db { 'mynewdb':
    user          => 'mynewuser',
    password      => 'passw0rd',
    host          => '192.168.0.%',
    grant         => ['SELECT', 'UPDATE']
  } 

ध्यान दें कि MySQL प्रतिकृति में, सभी लेखन केवल मास्टर पर ही किए जाने चाहिए। इसलिए, सुनिश्चित करें कि उपरोक्त संसाधन मास्टर को सौंपा गया है। अन्यथा, गलत लेन-देन हो सकता है।

बैकअप लें और पुनर्स्थापित करें

आमतौर पर, पूरे क्लस्टर के लिए केवल एक बैकअप होस्ट की आवश्यकता होती है (जब तक कि आप डेटा के सबसेट को दोहराते नहीं हैं)। बैकअप संसाधन तैयार करने के लिए हम mysql::server::backup क्लास का उपयोग कर सकते हैं। मान लीजिए कि हमारे मैनिफेस्ट में निम्नलिखित घोषणाएं हैं:

  # Prepare the backup script, /usr/local/sbin/mysqlbackup.sh
  class { 'mysql::server::backup':
    backupuser     => 'backup',
    backuppassword => 'passw0rd',
    backupdir      => '/home/backup',
    backupdirowner => 'mysql',
    backupdirgroup => 'mysql',
    backupdirmode  => '755',
    backuprotate   => 15,
    time           => ['23','30'],   #backup starts at 11:30PM everyday
    include_routines  => true,
    include_triggers  => true,
    ignore_events     => false,
    maxallowedpacket  => '64M',
    optional_args     => ['--set-gtid-purged=OFF'] #extra argument if GTID is enabled
  }

कठपुतली बैकअप चलाने से पहले सभी पूर्वापेक्षाएँ कॉन्फ़िगर करेगी - बैकअप उपयोगकर्ता बनाना, गंतव्य पथ तैयार करना, स्वामित्व और अनुमति प्रदान करना, क्रॉन जॉब सेट करना और बैकअप कमांड विकल्प सेट करना / usr / स्थानीय पर स्थित बैकअप स्क्रिप्ट में उपयोग करना /sbin/mysqlbackup.sh। इसके बाद स्क्रिप्ट को चलाना या शेड्यूल करना उपयोगकर्ता पर निर्भर करता है। तत्काल बैकअप लेने के लिए, बस इनवाइट करें:

$ mysqlbackup.sh

यदि हम उपरोक्त के आधार पर वास्तविक mysqldump कमांड निकालते हैं, तो यह ऐसा दिखता है:

$ mysqldump --defaults-extra-file=/tmp/backup.NYg0TR --opt --flush-logs --single-transaction --events --set-gtid-purged=OFF --all-databases

जो लोग Percona Xtrabackup, MariaDB बैकअप (केवल MariaDB) या MySQL एंटरप्राइज़ बैकअप जैसे अन्य बैकअप टूल का उपयोग करना चाहते हैं, उनके लिए मॉड्यूल निम्नलिखित निजी कक्षाएं प्रदान करता है:

  • mysql::backup::xtrabackup (Percona Xtrabackup और MariaDB बैकअप)
  • mysql::backup::mysqlbackup (MySQL एंटरप्राइज़ बैकअप)

Percona Xtrabackup के साथ उदाहरण घोषणा:

  class { 'mysql::backup::xtrabackup':
    xtrabackup_package_name => 'percona-xtrabackup',
    backupuser     => 'xtrabackup',
    backuppassword => 'passw0rd',
    backupdir      => '/home/xtrabackup',
    backupdirowner => 'mysql',
    backupdirgroup => 'mysql',
    backupdirmode  => '755',
    backupcompress => true,
    backuprotate   => 15,
    include_routines  => true,
    time              => ['23','30'], #backup starts at 11:30PM
    include_triggers  => true,
    maxallowedpacket  => '64M',
    incremental_backups => true
  }

उपरोक्त दो बैकअप शेड्यूल करेगा, एक पूर्ण बैकअप प्रत्येक रविवार को रात 11:30 बजे और एक वृद्धिशील बैकअप हर दिन रविवार को छोड़कर, जैसा कि उपरोक्त मैनिफेस्ट लागू होने के बाद क्रॉन जॉब आउटपुट द्वारा दिखाया गया है:

(db1.local)$ crontab -l
# Puppet Name: xtrabackup-weekly
30 23 * * 0 /usr/local/sbin/xtrabackup.sh --target-dir=/home/backup/mysql/xtrabackup --backup
# Puppet Name: xtrabackup-daily
30 23 * * 1-6 /usr/local/sbin/xtrabackup.sh --incremental-basedir=/home/backup/mysql/xtrabackup --target-dir=/home/backup/mysql/xtrabackup/`date +%F_%H-%M-%S` --backup

इस वर्ग (और अन्य वर्गों) के लिए उपलब्ध अधिक विवरण और विकल्पों के लिए, यहां विकल्प संदर्भ देखें।

पुनर्स्थापना पहलू के लिए, मॉड्यूल केवल mysql::db वर्ग का उपयोग करके डेटाबेस में सीधे SQL फ़ाइल आयात करके, mysqldump बैकअप विधि के साथ बहाली का समर्थन करता है, उदाहरण के लिए:

mysql::db { 'mydb':
  user     => 'myuser',
  password => 'mypass',
  host     => 'localhost',
  grant    => ['ALL PRIVILEGES'],
  sql      => '/home/backup/mysql/mydb/backup.gz',
  import_cat_cmd => 'zcat',
  import_timeout => 900
}

SQL फ़ाइल केवल एक बार लोड की जाएगी और प्रत्येक रन पर नहीं, जब तक कि Enforce_sql => true का उपयोग नहीं किया जाता है।

कॉन्फ़िगरेशन विकल्प

इस उदाहरण में, हमने अपनी कॉन्फ़िगरेशन लाइनों को संरचित करने के लिए manage_config_file => true का उपयोग ओवरराइड_ऑप्शन के साथ किया, जिसे बाद में कठपुतली द्वारा बाहर धकेल दिया जाएगा। मेनिफेस्ट फ़ाइल में कोई भी संशोधन केवल लक्ष्य MySQL कॉन्फ़िगरेशन फ़ाइल की सामग्री को प्रतिबिंबित करेगा। यह मॉड्यूल न तो कॉन्फ़िगरेशन को रनटाइम में लोड करेगा और न ही कॉन्फ़िगरेशन फ़ाइल में परिवर्तनों को पुश करने के बाद MySQL सेवा को पुनरारंभ करेगा। परिवर्तनों को सक्रिय करने के लिए सेवा को फिर से शुरू करने की जिम्मेदारी sysadmin की है।

कस्टम MySQL कॉन्फ़िगरेशन जोड़ने के लिए, हम अतिरिक्त फ़ाइलों को "includedir" में रख सकते हैं, डिफ़ॉल्ट रूप से /etc/mysql/conf.d. यह हमें सेटिंग्स को ओवरराइड करने या अतिरिक्त जोड़ने की अनुमति देता है, जो तब मददगार होता है जब आप mysql::server क्लास में ओवरराइड_ऑप्शन का उपयोग नहीं करते हैं। कठपुतली टेम्पलेट का उपयोग करने की यहाँ अत्यधिक अनुशंसा की जाती है। कस्टम कॉन्फ़िगरेशन फ़ाइल को मॉड्यूल टेम्पलेट निर्देशिका के अंतर्गत रखें (डिफ़ॉल्ट रूप से , /etc/puppetlabs/code/environments/production/modules/mysql/templates) और फिर मेनिफेस्ट में निम्न पंक्तियां जोड़ें:

# Loads /etc/puppetlabs/code/environments/production/modules/mysql/templates/my-custom-config.cnf.erb into /etc/mysql/conf.d/my-custom-config.cnf

file { '/etc/mysql/conf.d/my-custom-config.cnf':
  ensure  => file,
  content => template('mysql/my-custom-config.cnf.erb')
}

संस्करण विशिष्ट मापदंडों को लागू करने के लिए, संस्करण निर्देश का उपयोग करें, उदाहरण के लिए [mysqld-5.5]। यह MySQL के विभिन्न संस्करणों के लिए एक कॉन्फ़िगरेशन की अनुमति देता है।

कठपुतली बनाम क्लस्टर नियंत्रण

क्या आप जानते हैं कि आप ClusterControl का उपयोग करके MySQL या MariaDB प्रतिकृति परिनियोजन को भी स्वचालित कर सकते हैं? आप इसे स्थापित करने के लिए, या बस इसे हमारी वेबसाइट से डाउनलोड करके ClusterControl कठपुतली मॉड्यूल का उपयोग कर सकते हैं।

ClusterControl से तुलना करने पर, आप निम्न अंतरों की अपेक्षा कर सकते हैं:

  • मेनिफेस्ट लिखने से पहले कठपुतली वाक्य रचना, स्वरूपण, संरचनाओं को समझने के लिए थोड़ा सीखने की अवस्था।
  • मेनिफेस्ट का नियमित रूप से परीक्षण किया जाना चाहिए। यह बहुत आम है कि आपको कोड पर एक संकलन त्रुटि मिलेगी, खासकर यदि कैटलॉग को पहली बार लागू किया गया हो।
  • कठपुतली कोड को बेवकूफ मानती है। परीक्षण/जांच/सत्यापन की स्थिति एक चल रहे सिस्टम के साथ खिलवाड़ से बचने के लिए लेखक की जिम्मेदारी के अंतर्गत आती है।
  • कठपुतली को प्रबंधित नोड पर एक एजेंट की आवश्यकता होती है।
  • पिछड़ी असंगति। कुछ पुराने मॉड्यूल नए संस्करण पर सही ढंग से नहीं चलेंगे।
  • डेटाबेस/होस्ट मॉनिटरिंग को अलग से सेट करना होगा।

ClusterControl का परिनियोजन विज़ार्ड परिनियोजन प्रक्रिया का मार्गदर्शन करता है:

वैकल्पिक रूप से, आप समान परिणाम प्राप्त करने के लिए "s9s" नामक ClusterControl कमांड लाइन इंटरफ़ेस का उपयोग कर सकते हैं। निम्न आदेश एक तीन-नोड MySQL प्रतिकृति क्लस्टर बनाता है (बशर्ते सभी नोड्स को पासवर्ड रहित पहले से कॉन्फ़िगर किया गया हो):

$ s9s cluster --create \
  --cluster-type=mysqlreplication \
      --nodes=192.168.0.41?master;192.168.0.42?slave;192.168.0.43?slave;192.168.0.44?master; \
  --vendor=oracle \
  --cluster-name='MySQL Replication 8.0' \
  --provider-version=8.0 \
  --db-admin='root' \
  --db-admin-passwd='$ecR3t^word' \
  --log
संबंधित संसाधन क्लस्टर नियंत्रण के लिए कठपुतली मॉड्यूल - अपने मौजूदा डेटाबेस क्लस्टर में प्रबंधन और निगरानी जोड़ना s9s CLI और शेफ का उपयोग करके MySQL गैलेरा क्लस्टर की तैनाती को स्वचालित कैसे करें ईकामर्स के लिए डेटाबेस इन्फ्रास्ट्रक्चर ऑटोमेशन के लिए एक DevOps गाइड - रीप्ले और स्लाइड

निम्नलिखित MySQL/MariaDB प्रतिकृति सेटअप समर्थित हैं:

  • मास्टर-दास प्रतिकृति (फ़ाइल/स्थिति-आधारित)
  • जीटीआईडी ​​(MySQL/Percona) के साथ मास्टर-स्लेव प्रतिकृति
  • MariaDB GTID के साथ मास्टर-स्लेव प्रतिकृति
  • मास्टर-मास्टर प्रतिकृति (सेमी-सिंक/async)
  • मास्टर-स्लेव चेन प्रतिकृति (सेमी-सिंक/एसिंक)

परिनियोजन के बाद, नोड्स/क्लस्टर की निगरानी की जा सकती है और क्लस्टरकंट्रोल द्वारा पूरी तरह से प्रबंधित किया जा सकता है, जिसमें स्वचालित विफलता का पता लगाना, मास्टर फ़ेलओवर, स्लेव प्रमोशन, स्वचालित पुनर्प्राप्ति, बैकअप प्रबंधन, कॉन्फ़िगरेशन प्रबंधन आदि शामिल हैं। इन सभी को एक उत्पाद में एक साथ बंडल किया गया है। सामुदायिक संस्करण (हमेशा के लिए मुफ़्त!) परिनियोजन और निगरानी प्रदान करता है। औसतन, आपका डेटाबेस क्लस्टर 30 मिनट में तैयार हो जाएगा और चलने लगेगा। इसे लक्ष्य नोड्स के लिए केवल पासवर्ड रहित SSH की आवश्यकता है।

अगले भाग में, हम आपको उसी कठपुतली मॉड्यूल का उपयोग करके गैलेरा क्लस्टर परिनियोजन के बारे में बताने जा रहे हैं। बने रहें!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB में किसी तिथि से एक वर्ष कैसे घटाएं?

  2. कैसे कम () मारियाडीबी में काम करता है

  3. "ERROR 1054 (42S22) को ठीक करें:मारियाडीबी में 'ऑर्डर क्लॉज" में अज्ञात कॉलम 'कॉलनेम'

  4. कैसे WEEKOFYEAR () मारियाडीबी में काम करता है

  5. Amazon RDS पॉइंट-इन-टाइम रिकवरी की तुलना ClusterControl से करना