உபுண்டு 18.04 இல் MySQL மாஸ்டர்-ஸ்லேவ் பிரதிகளை எவ்வாறு அமைப்பது


MySQL மாஸ்டர்-ஸ்லேவ் ரெப்ளிகேஷன் என்பது ஒரு பிணையத்தில் ஒன்று அல்லது அதற்கு மேற்பட்ட முனைகளில் தரவுத்தள கோப்புகளை நகலெடுக்க அல்லது நகலெடுக்க அனுமதிக்கும் ஒரு செயல்முறையாகும். இந்த அமைப்பு பணிநீக்கம் மற்றும் தவறு சகிப்புத்தன்மையை வழங்குகிறது, அதாவது மாஸ்டர் முனையில் தோல்வி ஏற்பட்டால், தரவுத்தளங்களை அடிமை முனையில் மீட்டெடுக்க முடியும். தரவுத்தளங்களின் பிரதி இன்னும் வேறுபட்ட சேவையகத்திலிருந்து மீட்டெடுக்கப்படலாம் என்பதால் இது எந்தவொரு நிகழ்விலும் இழக்கப்படாது என்பதை பயனர்களுக்கு மன அமைதி அளிக்கிறது.

இந்த வழிகாட்டியில், உபுண்டு 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] பிரிவில் சேவையக-ஐடி பண்புக்கூறுக்கான மதிப்பைக் குறிப்பிடவும். நீங்கள் தேர்வுசெய்த எண் வேறு எந்த சேவையக ஐடி எண்ணுடனும் பொருந்தக்கூடாது. 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

அடுத்து, பிரதி பயனரை உருவாக்க கீழேயுள்ள கேள்விகளைத் தொடரவும் மற்றும் பிரதி அடிமைக்கு அணுகலை வழங்கவும். உங்கள் ஐபி முகவரியைப் பயன்படுத்த நினைவில் கொள்க.

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

வெளியீடு நீங்கள் கீழே காணக்கூடியதைப் போலவே இருக்க வேண்டும்.

ஆர்வமாக இருங்கள் மற்றும் mysql-bin.000002 மதிப்பு மற்றும் நிலை ஐடி 1643 ஐ கவனியுங்கள். அடிமை சேவையகத்தை அமைக்கும் போது இந்த மதிப்புகள் முக்கியமானதாக இருக்கும்.

படி 3: MySQL அடிமை சேவையகத்தை உள்ளமைக்கவும்

அடிமை சேவையகத்திற்குச் செல்லுங்கள், நாங்கள் முதன்மை சேவையகத்தைப் போலவே, MySQL உள்ளமைவு கோப்பையும் திறக்கவும்.

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

முதன்மை சேவையகத்தைப் போலவே, பின்வரும் வரிகளைத் திருத்தவும்.

bind-address           = 10.128.0.29

முன்பு போல, [mysqld] பிரிவில் சேவையக-ஐடி பண்புக்கூறுக்கான மதிப்பைக் குறிப்பிடவும். இந்த முறை வேறு மதிப்பைத் தேர்ந்தெடுக்கவும். 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;

நீங்கள் போதுமான ஆர்வத்துடன் இருந்தால், அடிமை பிரதி பயனரை உருவாக்கிய பின் காண்பிக்கப்படும் mysql-bin.00002 மதிப்பு மற்றும் நிலை ஐடி 1643 ஐ நாங்கள் பயன்படுத்தியிருப்பதை நீங்கள் கவனிப்பீர்கள்.

கூடுதலாக, முதன்மை சேவையகத்தின் ஐபி முகவரி, பிரதி பயனர் மற்றும் கடவுச்சொல் பயன்படுத்தப்பட்டுள்ளன.

பின்னர், நீங்கள் முன்பு நிறுத்திய நூலைத் தொடங்குங்கள்.

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 மாஸ்டர்-ஸ்லேவ் ரெப்ளிகேஷன் அமைப்பை எவ்வாறு அமைப்பது என்பதை நீங்கள் கற்றுக்கொண்டீர்கள்.