MySQL Database Replication දත්ත ගබඩා ප්‍රත්‍යුත්තරය - TechLanka

TechLanka is a provides a new technologies and new trends news

Post Top Ad

MySQL Database Replication දත්ත ගබඩා ප්‍රත්‍යුත්තරය

Share This

DB Replication

MySQL Database Replication දත්ත ගබඩා ප්‍රත්‍යුත්තරය

ප්‍රත්‍යුත්තරය යන වචනය් කියවීමට අපහසු උවත් මෙමගින් ලැබෙන්නාවූ ප්‍රයෝජනය අතිමහත්ය. Database Replication කිරීමෙන් ඔබගේ පරිගණක පද්දතියේ දත්ත ආරක්ෂාකාරිව තබාගත හැකි අතර පරිගණක පද්දතියේ ඇතිවන්නාවූ බිදවැටීම් නවතාලනු ලබයි.

ඔබ නොදන්නවා උවත් දත්ත ගබඩාවක් සහිත (Database) ඕනෑම පරිගණක පද්දතියක්ම පාහේ උපස්ථ දත්ත ගබඩාවකින්ද (Backup) සමන්විත වන අතර එක් ඒකකයක බිඳ වැටීමක් සිදුවුවද මෙම උපස්ථ පද්දතිය මගින් එකී පරිගණක පද්දතියට කිසිදු බාධාවක් නොවේ.

DB SERVER 1: 192.168.0.50 |  DB SERVER 2: 192.168.0.55
ඉහත සිද්දිය සැලකීමේදී පරිගණකය මගින් server දෙකට සම්බන්ද වී ඇත, නමුත් දෙවන server එක සඳහා සම්බන්ද වනුයේ පළමු වන server එක බිඳ වැටීමෙන් අනතුරුව වේ. දෙවන server එක සඳහා සම්බන්ද වී කටයුතු කරගෙන යාමට පළමු server එකේ දත්ත අවශ්‍ය බැවින් අප විසින් මෙම server දෙක Replication කරනු ලබයි.

MySQL Server Replication කරන අකාර කිහිපයක් ඇත.
  - Master – Master Replication (Active – Active)
  - Master – Slave


1. Master – Master Replication (Active – Active) යනු දත්ත ලබා ගැනීම මෙන්ම දත්ත ගබඩා කිරීම සඳහා අවකාශය ලබා දෙමින් කරන්නා වූ Replication ක්‍රමය වේ.

2. Master – Slave යනු දත්ත ගබඩා කිරීම සඳහා Master server එක බාවිතා කරන අතර දත්ත ලබා ගැනීම සඳහා Slave server එක බාවිතා කරයි.

Master – Master Replication (Active – Active) සකසා ගන්නා ආකාරය

(මෙම සැකසුම් සකසා ඇත්තේ centos 6 මෙහෙයුම් පද්දතිය සඳහා වන අතර එහි MySQL ස්ථාපනය කර ඇත)

DB Server 1: 192.168.0.50
DB Server 2: 192.168.0.55
Database: test

MySQL Master Server 1 සැකසුම් සකසා ගැනීම (192.168.0.50)

# vi /etc/my.cnf

පහත සැකසුම් සකසා ගන්න

[mysqld]

server_id = 1
binlog-do-db = test [Replication කිරීමට අවශ්‍ය දත්ත ගොනුව]
Binlog_Ignore_DB = mysql [ Replication කිරීමට අවශ්‍ය නොවන දත්ත ගොනුව]
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
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 1

MySQL නැවත පණ ගැන්වීම

# service mysqld restart

MySQL වෙත පිවිසී user privileges ලබාදීම

# mysql -u root -p
# mysql> GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password';

user - ඔබ කැමති නමක් ලබාදෙන්න
password - ඔබ කැමති මුරපදයක් ලබාදෙන්න

# mysql> FLUSH PRIVILEGES;
# mysql> FLUSH TABLES WITH READ LOCK
# mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 227      |         test | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

# mysql> STOP SLAVE;

# mysql> CHANGE MASTER TO master_host='192.168.0.55, master_port=3306, master_user='user', master_password='password', master_log_file='mysql-bin.000011', master_log_pos=250;

[sever 2 විස්තර ලබාදෙන්න]

# mysql> START SLAVE;

MySQL නැවත පණ ගැන්වීම

# service mysqld restart 

MySQL Replication සාර්ථක බව පහත ආකාරයට දිස්වේ.

# mysql> show slave status\G; [servers දෙකම සකසා ගත් පසු මෙසේ දිස්වේ]

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.55
Master_User: user
Master_Port: 13000
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 1307
Relay_Log_File: slave-relay-bin.000003
Relay_Log_Pos: 1508
Relay_Master_Log_File: master-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1307
Relay_Log_Space: 1858
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562
Master_Info_File: /var/mysqld.2/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 10
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_name:
Master_TLS_Version: TLSv1.2
Master_public_key_path: 
Get_master_public_key: 0



MySQL Master Server 2 සැකසුම් සකසා ගැනීම (192.168.0.55)

# vi /etc/my.cnf

පහත සැකසුම් සකසා ගන්න

[mysqld]

server_id = 2
binlog-do-db = test [Replication කිරීමට අවශ්‍ය දත්ත ගොනුව]
Binlog_Ignore_DB = mysql [ Replication කිරීමට අවශ්‍ය නොවන දත්ත ගොනුව]
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
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 2

MySQL නැවත පණ ගැන්වීම

# service mysqld restart
 
MySQL වෙත පිවිසී user privileges ලබාදීම

# mysql -u root -p
# mysql> GRANT REPLICATION SLAVE ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
 
user - ඉහත සාදාගත් පරිශීලකයා යොදන්න
password - ඉහත සාදාගත් පරිශීලකයාගේ මුරපදය ලබාදෙන්න 

# mysql> FLUSH PRIVILEGES;
# mysql> FLUSH TABLES WITH READ LOCK;
# mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 250      |         test | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

# mysql> STOP SLAVE;
 
# mysql> CHANGE MASTER TO master_host='192.168.0.55, master_port=3306, master_user='user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=227;

[sever 1 විස්තර ලබාදෙන්න]

# mysql> START SLAVE;

MySQL නැවත පණ ගැන්වීම

# service mysqld restart 

MySQL Replication සාර්ථක බව පහත ආකාරයට දිස්වේ.
 
# mysql> show slave status\G; [servers දෙකම සකසා ගත් පසු මෙසේ දිස්වේ]

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.50
Master_User: user
Master_Port: 13000
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 1307
Relay_Log_File: slave-relay-bin.000003
Relay_Log_Pos: 1508
Relay_Master_Log_File: master-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1307
Relay_Log_Space: 1858
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562
Master_Info_File: /var/mysqld.2/data/master.info
SQL_Delay: 0
SQL_Remainin_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 10
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_name:
Master_TLS_Version: TLSv1.2
Master_public_key_path: 
Get_master_public_key: 0


 
**********************************************************************************

අවශ්‍ය පරිදි 192.168.0.50  test database එක තුල වෙනස්කම් සිදු කර 192.168.0.55 test database එක තුල එම වෙනස්කම් සිදු වී ඇතිදැයි බලන්න.



** අපැහැදිලි කොටස් තිබේ නම් විමසන්න 

No comments:

Post a Comment

Post Bottom Ad

Pages