ഉബുണ്ടു 18.04-ൽ MySQL മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ എങ്ങനെ സജ്ജീകരിക്കാം


ഒരു നെറ്റ്uവർക്കിലെ ഒന്നോ അതിലധികമോ നോഡുകളിലുടനീളം ഡാറ്റാബേസ് ഫയലുകൾ പകർത്താനോ പകർത്താനോ അനുവദിക്കുന്ന ഒരു നടപടിക്രമമാണ് MySQL മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ. ഈ സജ്ജീകരണം ആവർത്തനവും തെറ്റ് സഹിഷ്ണുതയും നൽകുന്നു, മാസ്റ്റർ നോഡിൽ ഒരു പരാജയം സംഭവിച്ചാൽ, സ്ലേവ് നോഡിൽ ഡാറ്റാബേസുകൾ വീണ്ടെടുക്കാനാകും. ഡാറ്റാബേസുകളുടെ ഒരു പകർപ്പ് മറ്റൊരു സെർവറിൽ നിന്ന് വീണ്ടെടുക്കാനാകുമെന്നതിനാൽ, ഒരു സാഹചര്യത്തിലും എല്ലാം നഷ്uടപ്പെടില്ലെന്ന് ഇത് ഉപയോക്താക്കൾക്ക് മനസ്സമാധാനം നൽകുന്നു.

ഈ ഗൈഡിൽ, ഒരു ഉബുണ്ടു 18.04 സിസ്റ്റത്തിൽ ഒരു MySQL ഡാറ്റാബേസ് മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ എങ്ങനെ നടത്താമെന്ന് നിങ്ങൾ പഠിക്കാൻ പോകുന്നു.

സജ്ജീകരണത്തിൽ, ഇനിപ്പറയുന്ന ഐപി വിലാസങ്ങളുള്ള ഉബുണ്ടു 18.04 പ്രവർത്തിക്കുന്ന രണ്ട് സെർവറുകൾ ഞങ്ങൾക്കുണ്ട്.

Master server: 10.128.0.28
Slave server: 10.128.0.29

നമുക്ക് ഇപ്പോൾ ഡൈവ് ചെയ്ത് ഉബുണ്ടുവിൽ മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ സജ്ജീകരണം എങ്ങനെ ക്രമീകരിക്കാമെന്ന് നോക്കാം.

ഘട്ടം 1: മാസ്റ്റർ, സ്ലേവ് നോഡുകളിൽ MySQL ഇൻസ്റ്റാൾ ചെയ്യുക

ഉബുണ്ടു റിപ്പോസിറ്ററികളിൽ MySQL-ന്റെ 5.7 പതിപ്പ് അടങ്ങിയിരിക്കുന്നു. പുതിയ ഫീച്ചറുകൾ പ്രയോജനപ്പെടുത്തുന്നതിനും സാധ്യമായ പ്രശ്നങ്ങൾ ഒഴിവാക്കുന്നതിനും, നിങ്ങൾ ഏറ്റവും പുതിയ MySQL പതിപ്പ് ഇൻസ്റ്റാൾ ചെയ്യണം. എന്നാൽ ആദ്യം, ഇനിപ്പറയുന്ന apt കമാൻഡ് ഉപയോഗിച്ച് രണ്ട് നോഡുകൾ അപ്ഡേറ്റ് ചെയ്യാം.

$ sudo apt update

രണ്ട് നോഡുകളിലും MySQL ഇൻസ്റ്റാൾ ചെയ്യാൻ, കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുക.

$ sudo apt install mysql-server mysql-client

അടുത്തതായി, mysql കോൺഫിഗറേഷൻ ഫയൽ തുറക്കുക.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

മാസ്റ്റർ നോഡിൽ, താഴെ കാണിച്ചിരിക്കുന്നതുപോലെ സ്ക്രോൾ ചെയ്ത് bind-address ആട്രിബ്യൂട്ട് കണ്ടെത്തുക.

bind-address 	 =127.0.0.1

മാസ്റ്റർ നോഡിന്റെ ഐപി വിലാസവുമായി പൊരുത്തപ്പെടുന്നതിന് ലൂപ്പ്ബാക്ക് വിലാസം മാറ്റുക.

bind-address  	=10.128.0.28

അടുത്തതായി, [mysqld] വിഭാഗത്തിൽ server-id ആട്രിബ്യൂട്ടിനായി ഒരു മൂല്യം വ്യക്തമാക്കുക. നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന നമ്പർ മറ്റേതെങ്കിലും സെർവർ-ഐഡി നമ്പറുമായി പൊരുത്തപ്പെടരുത്. നമുക്ക് 1 മൂല്യം നൽകാം.

server-id	 =1

കോൺഫിഗറേഷൻ ഫയലിന്റെ അവസാനത്തിൽ, ചുവടെയുള്ള വരികൾ പകർത്തി ഒട്ടിക്കുക.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

മാസ്റ്റർ നോഡിൽ മാറ്റങ്ങൾ പ്രാബല്യത്തിൽ വരുന്നതിനായി കോൺഫിഗറേഷൻ ഫയലിൽ നിന്ന് പുറത്തുകടന്ന് MySQL സേവനം പുനരാരംഭിക്കുക.

$ sudo systemctl restart mysql

MySQL സെർവർ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കാൻ, കമാൻഡ് നൽകുക.

$ sudo systemctl status mysql

തികഞ്ഞത്! MySQL സെർവർ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു!

സ്റ്റെപ്പ് 2: മാസ്റ്റർ നോഡിൽ റെപ്ലിക്കേഷനായി ഒരു പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കുക

ഈ വിഭാഗത്തിൽ, ഞങ്ങൾ മാസ്റ്റർ നോഡിൽ ഒരു റെപ്ലിക്കേഷൻ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ പോകുന്നു. ഇത് നേടുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ MySQL സെർവറിലേക്ക് ലോഗിൻ ചെയ്യുക.

$ sudo mysql -u root -p

അടുത്തതായി, ഒരു പകർപ്പ് ഉപയോക്താവിനെ സൃഷ്uടിക്കുന്നതിനും റെപ്ലിക്കേഷൻ സ്ലേവിലേക്ക് ആക്uസസ് അനുവദിക്കുന്നതിനും ചുവടെയുള്ള ചോദ്യങ്ങൾ തുടരുക. നിങ്ങളുടെ IP വിലാസം ഉപയോഗിക്കാൻ ഓർമ്മിക്കുക.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

അടുത്തതായി, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

mysql> SHOW MASTER STATUS\G

ഔട്ട്uപുട്ട് നിങ്ങൾക്ക് ചുവടെ കാണാൻ കഴിയുന്നതിന് സമാനമായിരിക്കണം.

ശ്രദ്ധാലുക്കളായിരിക്കുകയും mysql-bin.000002 മൂല്യവും സ്ഥാന ഐഡി 1643 ശ്രദ്ധിക്കുകയും ചെയ്യുക. സ്ലേവ് സെർവർ സജ്ജീകരിക്കുമ്പോൾ ഈ മൂല്യങ്ങൾ നിർണായകമാകും.

ഘട്ടം 3: MySQL സ്ലേവ് സെർവർ കോൺഫിഗർ ചെയ്യുക

സ്ലേവ് സെർവറിലേക്ക് പോകുക, ഞങ്ങൾ മാസ്റ്റർ സെർവറിൽ ചെയ്തത് പോലെ, MySQL കോൺഫിഗറേഷൻ ഫയൽ തുറക്കുക.

$ sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

മാസ്റ്റർ സെർവർ പോലെ, ഇനിപ്പറയുന്ന വരികൾ എഡിറ്റുചെയ്യാൻ തുടരുക.

bind-address           = 10.128.0.29

മുമ്പത്തെപ്പോലെ, [mysqld] വിഭാഗത്തിൽ server-id ആട്രിബ്യൂട്ടിനായി ഒരു മൂല്യം വ്യക്തമാക്കുക. ഈ സമയം മറ്റൊരു മൂല്യം തിരഞ്ഞെടുക്കുക. നമുക്ക് 2 ഉപയോഗിച്ച് പോകാം.

server-id		=2 

വീണ്ടും, കോൺഫിഗറേഷൻ ഫയലിന്റെ അവസാനത്തിൽ താഴെയുള്ള വരികൾ ഒട്ടിക്കുക.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

അടുത്തതായി സ്ലേവ് നോഡിൽ MySQL സെർവർ പുനരാരംഭിക്കുക.

$ sudo systemctl restart mysql

ചെയ്തുകഴിഞ്ഞാൽ, ടെക്സ്റ്റ് എഡിറ്ററിൽ നിന്ന് സംരക്ഷിച്ച് പുറത്തുകടക്കുക

അടുത്തതായി, കാണിച്ചിരിക്കുന്നതുപോലെ MySQL ഷെല്ലിലേക്ക് ലോഗിൻ ചെയ്യുക.

$ sudo mysql -u root -p

ഈ ഘട്ടത്തിൽ, സ്ലേവ് സെർവറിനെ മാസ്റ്റർ സെർവറുമായി ബന്ധിപ്പിക്കാൻ അനുവദിക്കുന്ന ചില കോൺഫിഗറേഷൻ നിങ്ങൾ നടത്തേണ്ടതുണ്ട്. എന്നാൽ ആദ്യം, കാണിച്ചിരിക്കുന്നതുപോലെ സ്ലേവ് ത്രെഡുകൾ നിർത്തുക.

mysql> STOP SLAVE; 

മാസ്റ്റർ സെർവർ പകർത്താൻ സ്ലേവ് സെർവറിനെ അനുവദിക്കുന്നതിന്, കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email ', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

നിങ്ങൾക്ക് വേണ്ടത്ര താൽപ്പര്യമുണ്ടെങ്കിൽ, സ്ലേവ് റെപ്ലിക്കേഷൻ ഉപയോക്താവിനെ സൃഷ്uടിച്ചതിന് ശേഷം ഞങ്ങൾ മുമ്പ് പ്രദർശിപ്പിച്ച mysql-bin.00002 മൂല്യവും സ്ഥാന ഐഡി 1643 ഉപയോഗിച്ചതായി നിങ്ങൾ നിരീക്ഷിക്കും.

കൂടാതെ, മാസ്റ്റർ സെർവറിന്റെ ഐപി വിലാസം, റെപ്ലിക്കേഷൻ ഉപയോക്താവ്, പാസ്uവേഡ് എന്നിവ ഉപയോഗിച്ചു.

പിന്നീട്, നിങ്ങൾ നേരത്തെ നിർത്തിയ ത്രെഡ് ആരംഭിക്കുക.

mysql> START SLAVE;

ഘട്ടം 4: MySQL മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ പരിശോധിക്കുക

സജ്ജീകരണം പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കാൻ, ഞങ്ങൾ മാസ്റ്ററിൽ ഒരു പുതിയ ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ പോകുകയാണ്, അത് MySQL സ്ലേവ് സെർവറിൽ പകർത്തിയിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക.

മാസ്റ്റർ സെർവറിൽ MySQL-ലേക്ക് ലോഗിൻ ചെയ്യുക.

$ sudo mysql -u root -p

നമുക്ക് ഒരു ടെസ്റ്റ് ഡാറ്റാബേസ് ഉണ്ടാക്കാം. ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ replication_db എന്ന ഒരു ഡാറ്റാബേസ് സൃഷ്ടിക്കും.

mysql> CREATE DATABASE replication_db;

ഇപ്പോൾ, സ്ലേവ് സെർവറിൽ നിങ്ങളുടെ MySQL ഉദാഹരണത്തിലേക്ക് ലോഗിൻ ചെയ്യുക.

$ sudo mysql -u root -p

ഇപ്പോൾ ചോദ്യം ഉപയോഗിച്ച് ഡാറ്റാബേസുകൾ ലിസ്റ്റ് ചെയ്യുക.

mysql> SHOW DATABASES;

നിങ്ങൾ മാസ്റ്ററിൽ സൃഷ്ടിച്ച ഡാറ്റാബേസ് സ്ലേവിൽ പകർത്തിയതായി നിങ്ങൾ ശ്രദ്ധിക്കും. ഭയങ്കരം ! നിങ്ങളുടെ MySQL മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു! എന്തെങ്കിലും പരാജയം സംഭവിച്ചാൽ, ഡാറ്റാബേസ് ഫയലുകളുടെ പകർപ്പുകൾ സ്ലേവ് സെർവറിലേക്ക് പകർത്തപ്പെടുമെന്ന് നിങ്ങൾക്ക് ഇപ്പോൾ ഉറപ്പിക്കാം.

ഈ ഗൈഡിൽ, ഉബുണ്ടു 18.04-ൽ ഒരു MySQL മാസ്റ്റർ-സ്ലേവ് റെപ്ലിക്കേഷൻ സെറ്റപ്പ് എങ്ങനെ സജ്ജീകരിക്കാമെന്ന് നിങ്ങൾ പഠിച്ചു.