MYSQL Replication


MySQL Replication + Centos 6.5
Системийн админд тавигдах шаардлага: 1рт backup авах зугтаалгах, 2рт backup авах зугтаалгах, 3рт backup авах зугтаалгах, …,  999рт backup авах зугтаалгах гэсэн үндсэн шаардлага тавигдана. Backup байхгүй бол уучлаарай та системийн админ биш тэнцэхгүй. Ямар ч туршлага, чадвартай байсан Backup заавал авч байх ёстой. Нэгэнт л техник хэрэглэж байгаа бол тэнд юу ч болж болох шүү дээ. Нэг саваагүй нь кофе асгахийг урьдчилж мэднэ гэж байхгүй. Тийм учраас Backup өдөр тутам, цаг тутам, минут тутам авах хэрэгтэй. Ийм л учраас энд MYSQL REPLICATION –ны талаар ярьж байгаа юм. Хандалт ихтэй сервертэй бол. Database чинь том хэмжээтэй бол. Backup яаж авах билээ? Шөнөөр хүн амьтан цөөтэй үеэр авч таарахуу? Backup авагдаж буй үед сервер рүүгээ бичилт хийх боломжгүй. Тэгэхээр шөнө нэг цагч юмуу ажилладаггүй сервертэй болохнээ дээ? Тийм байж болохгүй нь мэдээж хэрэг шүү дээ. Тийм учраас Mysql Replication бол Redundancy байдлын бас нэгэн баталгаа болж өгөх учиртай юм. Backup аваад нэг газар хадгалвал боломжийн. Хоёр газар хадгалвал дажгүй. Гурваас олон газар зугтаалгаж хадгалвал онц сайн гэсэн үг.

Энэхүү tutorial дээр дараахь IP хаягийг ашиглав:

12.34.56.78- Master Database
12.23.34.45- Slave Database

Суулгах
Хэрвээ Mysql суулгаж амжаагүй сервер бол дараах байдлаар суулгана:
sudo yum install mysql-server

Нэг—Master Database –г тохируулах
master server –н тохиргооны файлийг дараахь байдлаар нээнэ
vi /etc/mysql/my.cnf

Уг файлийг нээсний дараа
Серверийг Localhost той binding хийсэн дараах тохиргоог
bind-address = 127.0.0.1

Серверийнхээ үндсэн IP хаягаар солино
bind-address = 12.34.56.78

Үүний дараа Server-id тохируулна. Дурын тоо байж болох боловч сервер бүр дээр давтагдашгүй байх ёстой. Master server-г 1-ээр сонгон авлаа
server-id = 1

Үүний доор log_bin хэсэг байгаа. Юуны өмнө Replication яаж ажилладаг вэ гэвэл. Log файл дээр тулгуурлан ажилладаг. Mysql-bin.log файл дээр тухайн сервер дээр ямар үйлдэл хийгдсэн нь бүгд бичигддэг. Тийм учраас серверт ачаа үүрүүлэхгүйн тулд Replication тохируулагдсан серверүүд log дээр тулгуурлан ажилладаг. Log дээр юу ч бичигдсэн дагаж хийгээд хуулаад л байна гэсэн үг:
log_bin = /var/log/mysql/mysql-bin.log

Харин хамгийн сүүлд нь slave серверт хэрэглэгдэх log файлийг бичиж өгнө. Master server тэй холбогдсон хэдэн ч slave сервер байж болох ба доор бичигдсэн тохиргооны дагуу төдий олныг нэмж бичиж болно.
binlog_do_db = newdatabase

Тохиргоогоо хийж дууссаны дараа хадгалаад гарах хэрэгтэй

MySQL дахин ачааллуулах
sudo service mysql restart

Харин одоо MySQL доторхи үндсэн тохиргоог хийнэ

Эхлээд MySQL рүүгээ нэр, нууц үгээрээ нэвтэрч орно
mysql -u root -p

Доорхи query-р slave серверт хандах эрх олгоно. Хэрвээ хоёр Slave үүсгэхийг хүсвэл мөн адил зөвшөөрөл олгох хэрэгтэй.
GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘password’;

Үүний дараа доорхи коммандаар идэвхижүүлнэ.
FLUSH PRIVILEGES;

Харин дараа нь Lock хийж байгаа database –үүдээ backup хийж авах хэрэгтэй. Учир нь slave серверт автоматаар database, table –үүд үүсдэггүй гэдгийг марталгүй санаж байх хэрэгтэй. Slave server дээр зайлшгүй database, table-үүдийг үүсгэж өгнө. Мөн Lock хийсэн шалтгаан нь Доор харагдаж буй Position хэмээх зүйл юм. Энэ зүйл маань Log дээр бичигдсэн мөрийг заах бөгөөд Slave сервер дээрээ энэхүү мөрийг зааж өгөхгүй бол Log дээр энэхүү мөрөөс хойшхи бичигдсэн зүйлүүд Slave server дээр хуулагдахгүй үлдэх аюултай. Ийм учраас л Replication гэж нэрлэсэн боловуу.

“newdatabase” database рүү нэвтэрнэ
USE newdatabase;
Lock хийхдээ:
FLUSH TABLES WITH READ LOCK;

Үүний дараа STATUS –ийг харахдаа:
SHOW MASTER STATUS;

Status нэг иймэрхүү харагдана.
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 107 | newdatabase | |
+——————+———-+————–+——————+
1 row in set (0.00 sec)

Харин одоо MySQL –ээс гараад. Linux дээрээсээ backup дараах байдлаар авна.
mysqldump -u root -p –opt newdatabase > newdatabase.sql

Үүний дараа Unlock дараахь байдлаар хийнэ. /MYSQL -ээс/
UNLOCK TABLES;
QUIT;
Энэ бүхний хийснээр Master server-н тохиргоо дуусч байна

Хоёр—Slave Database тохируулах
Slave server дээр MYSQL –ийн горимоос түрүүний бичсэний дагуу Database үүсгэнэ
CREATE DATABASE newdatabase;
EXIT;

Үүний дараа backup хуулна
mysql -u root -p newdatabase < /path/to/newdatabase.sql

Дараа нь MYSQL –н тохиргооны файлыг өөрчилнө
vi /etc/mysql/my.cnf

server-id = 2

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

хадгалаад гарна

MySQL серверээ дахин ачааллуулна
sudo service mysql restart

Сервер ассаны дараа MYSQL горимоос дараах query-г бичнэ. Мөн өөрийн сервертэй тохируулж өөрчлөх ёстойг анхаарна уу

CHANGE MASTER TO MASTER_HOST=’12.34.56.78′,MASTER_USER=’slave_user’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS= 107;
MASTER_LOG_POS master сервер дээр lock хийсэн байсан үеийнхтэй адил дугаартай байгааг анхаарна уу
Үүний дараа дараах коммандаар эхлүүлнэ
START SLAVE;

STATUS –ийг нь харахдаа:
SHOW SLAVE STATUS\G

One Response to MYSQL Replication

  1. Mark says:

    Sain er hun boloh 30 odor iin urgeljlel tavildoo

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Эмзэгхэн дэлбээ

This WordPress.com site is the bee's knees

Delgeen.com

Бидний блог

Миний...

Бидний блог

The Weatherman

Бидний блог

Mонголчууд

Бидний блог

Free Writers' Club

Бидний блог

PEARL'S SPACE

НОМЫН УТГЫГ АРВАН ТОХОЙ ӨРГӨН ДЭЛГЭРҮҮЛЭХЭЭС ГАНЦ ТОХОЙ ГҮН МЭДЭХ НЬ ЧУХАЛ

Амьдрал гэгч...

Бидний блог

%d bloggers like this: