අලුත් ලිපි

මූනු පොතේ අපේ ඉසව්ව

Saturday, September 14, 2013

මයි ඇස් කිව් ඇල් - රෙප්ලිකේෂන්



ඔබත් දත්ත කටයුතු සදහා MySQL Databases භාවිතා කරන්නෙක් විය හැක. MySQL රෙප්ලිකේෂන් මගින් ඔබට ඔබගේ Database එකේ සිදුවන සිදුකරන සියලුම දේ වෙනත් තැනක හෝ පිටතින් පිහිටි Server එකක් තුල Database එකකට සිදුකල හැක. මෙහිදී ප්‍රධාන Server එක Master ලෙසත් රෙප්ලිකේෂන් වන Server එක SLAVE ලෙසත් හැදින්වේ.

Photo Credit :- blog.webyog.com


උදාහරණයක් ලෙස ඔබගේ Database එකට හැම අතින්ම සමන තවත් Database එකක් පවත්වාගත හැක. මෙම ක්‍රමය මගින් බොහෝ වාසි ලබාගතහැක.


  • ප්‍රධාන Database එක බිදවැටීමකදී දත්ත හානිය වලක්වාගැනීම
  • ක්ෂනිකව SLAVE Server එක Master Server එක බවට පත්කිරීමේ හැකියාව
  • අධික ලෙස යොදා ගැනෙන SELECT QUERY SLAVE සර්වරය මගින් කරගැනීම මගින් Master Server හි කාර්යක්ෂමතාවය වැඩිකරගැනීම
රෙප්ලිකේෂන්  ක්‍රියාත්මක කරගැනීම සදහා MySQL පමණක් ප්‍රමාණවත් වේ. අමතර මෘදුකාංග යොදාගතයුතු නැත. 

ඔබගේ ප්‍රධාන MySQL Database එක එක් සර්වරයක පවත්වාගන්න. SLAVE Server ලෙස Network Access තිබෙන පරිදි තවත් සමාන Server එකක් යොදාගන්න . මෙහි Database නමට සමාන නමකින් තුලද Database එකක් සකසාගන්න.




Master Server තුල කරන සැකසුම්

1. MySQL සැකසුම් කරන ෆයිල් එක විවෘත කරගන්න. 
ලිනක්ස් තුල
sudo nano /etc/mysql/my.cnf
හෝ
vim /etc/mysql/my.cnf
මගින්

වින්ඩෝස් තුල
WAMP Panel එක මගින්

2. පහත සැකසුම් සිදුකරන්න
bind-address            = 121.31.6.79    
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = newdatabase

bind-address ලෙස Master හි අයි පී ලිපිනය, server-id ලෙස Master හට අනන්‍ය වූ අංකයක්, log_bin ලෙස log ෆයිල් ගබඩාවන ස්ථානය (වින්ඩෝස් තුල මෙය වෙනස් වේ) හා binlog_do_db  ලෙස රෙප්ලිකේෂන් කලයුතු  Database එක.

3. MySQL නැවත පණගන්වන්න
ලිනක්ස් තුල
sudo service mysql restart
වින්ඩෝස් තුල
WAMP Panel එක මගින්

4. MySQL වෙත ලොග් වන්න
mysql -u root -p

5. රෙප්ලිකේෂන් සදහා User කෙනෙක් සාදන්න
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

6. අදාල database තුලට යොමුවන්න
USE newdatabase;

7. Database එක Write කල නොහැකි ලෙස සකසා අදාල log ෆයිල් පිහිටීම ලබාගන්න.
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

එවිට මෙවැනි පිලිතුරක් ලැබේ. මෙය පිටපත් කරගන්න.

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      101 | newdatabase  |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

8. Database බැකප් එකක් ලබාගන්න.
mysqldump -u root -p --opt newdatabase > newdatabase.sql

9. UNLOCK කර ඉවත්වන්න.

UNLOCK TABLES;
QUIT;

Master Server හි කාර්‍ය අවසන්.


SLAVE Server තුල කරන සැකසුම්

1.  Database බැකප් එක Restore කරන්න
mysql -u root -p newdatabase < /path/to/newdatabase.sql


2. MySQL සැකසුම් කරන ෆයිල් එක විවෘත කරගන්න. 
ලිනක්ස් තුල
sudo nano /etc/mysql/my.cnf
හෝ
vim /etc/mysql/my.cnf
මගින්

වින්ඩෝස් තුල
WAMP Panel එක මගින්

3. පහත සැකසුම් සිදුකරන්න

server-id               = 2
relay-log               = /var/log/mysql/mysql-relay-bin.log
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = newdatabase

server-id ලෙස SLAVE  ට අනන්‍ය වූ අංකයක්, log_bin හා relay-log ලෙස log ෆයිල් ගබඩාවන ස්ථානය (වින්ඩෝස් තුල මෙය වෙනස් වේ) හා binlog_do_db  ලෙස රෙප්ලිකේෂන් කරනු ලබන Database එක.

4. MySQL නැවත පණගන්වන්න
ලිනක්ස් තුල
sudo service mysql restart
වින්ඩෝස් තුල
WAMP Panel එක මගින්

5. පෙරදී පිටපත් කරගත් අදාල පිහිටුම සහ අයි පී ලිපිනය ලබාදී log ආරම්භ කරන්න.

CHANGE MASTER TO MASTER_HOST='121.31.6.79 ',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  101;

6. SLAVE අරඹන්න
START SLAVE;

7. වැඩේ අහවරයි.

SLAVE  තුලදී SHOW SLAVE STATUS\G විධානය මගින් මෙහි තත්වය පිරික්සිය හැක.

දැන් ඔබ MASTER තුල කරන සියලුම Update සහ Insert QUERY SLAVE තුලද එම අවස්ථාවේම සිදුවනු දැකගත හැක.

මතක තබාගන්න - SLAVE  තුල Update / Insert ආදී SQL Query යෙදීමෙන් වලකින්න. හදිසියකදී භාවිත කිරීමට හෝ SELECT QUERY සදහා පමනක් SLAVE  යොදාගන්න.


ගැටලු කමෙන්ට් කරන්න...

උපුටා නැවත පලකිරීමෙන් වලකින්න