You are on page 1of 10

A) MÔ HÌNH MASTER-SLAVE

Để thực hiện đồng bộ dữ liệu bằng replication với mô hình master-slave chúng ta sẽ
thực hiện những bước sau:

+ Chuẩn bị:
- Chuẩn bị 2 máy ảo(Master và Slave) đã cài đặt sẵn CentOs 6.5 hoặc cao
hơn
- 2 máy ảo đã cài sẵn MySQL
+ Bước 1: Xác định ip và thiết lập mô hình cần làm
- Kiểm tra địa chỉ ip của 2 máy Master và Slave: dùng lệnh ifconfig trên
terminal
- Xác định ip và thiết lập mô hình.
- VD:
Master: 192.168.75.128
Slave: 192.168.75.129
+ Bước 2: Kiểm tra kết nối giữa 2 máy
- Đối với máy ảo nên đặt card mạng ở chế độ Bridged để máy ảo có thể nhận
được địa chỉ card mạng của máy thật.
- Kiểm tra kết nối giữa 2 máy bằng lệnh “ping [địa chỉ ip máy cần kết nối
tới]” sau khi ping giữa các máy nhận tín hiền và đã kết nối được với nhau ta
tiến hành bước tiếp theo.(Ghi chú: Mở giao diện terminal bằng cách click
chuột phải vào màn hình desktop và chọn Open in Terminal)
+ Bước 3: Kiểm tra kết nối MySQL giữa 2 máy
- Đầu tiên kiểm tra MySQL đã được start chưa nếu chưa gõ lệnh “service
mysqld start”
- Vì MySQL kết nối với nhau thông qua port 3306 nên chúng ta sẽ vào
iptables để mở port này. Ta cấu hình trên Master như sau:

 Gõ lệnh vi /etc/sysconfig/iptables  nhấn Insert để nhập nội dung


 Copy dòng “-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j
ACCEPT” sau đó paste ra và sửa số 22 thành 3306 như hình dưới:

 Sau đó nhấn Esc để thoát chế độ Insert  nhấn “:wq” để lưu lại file.
 Tiếp theo gõ lệnh “service iptables restart”, sau đó làm lại tương tự
những bước trên cho Slave.
 Giải thích thông số đã copy:

-A INPUT: khai báo kiểu kết nối sẽ được áp dụng (A nghĩa là Append).
-m –state NEW: Kiểm tra trạng thái. NEW ở đây là bắt đầu thiết lập
connection.
-m tcp: Áp dụng cho các kết nối thuộc module tên là “Transfer Control
Protocol”.
-p tcp: Giao thức được áp dụng(ở đây là giao thức tcp).
–dport 3306: Cổng cho phép áp dụng(ở đây là cổng 3306).
-j ACCEPT: khai báo hành động sẽ được áp dụng cho quy tắc này (j
nghĩa là Jump)
- Để test kết nối giữa 2 máy ta đăng nhập vào MySQL trên Master bằng lệnh
sau “mysql –u [root] –p[password]”(root và password của MySQL đã cấu
hình từ khi cài MySQL)
- Sau khi đăng nhập vào ta tạo user để test kết nối bằng câu lệnh “GRANT
REPLICATION SLAVE ON *.* TO 'user1' IDENTIFIED BY '123456';” và
gõ lệnh “FLUSH PRIVILEGES;” có thể làm sạch quyền để thiết lập quyền
mới cho tài khoản mới khác.
- Sau khi tạo user xong ta sẽ sang máy Slave để đăng nhập thử bằng lệnh sau
“mysql –h[địa chỉ ip máy Master] –u user1 –p123456” nếu kết nối thành
công sẽ được như hình dưới:

- Có thể áp dụng những bước cấu hình trên Master cho Slave để test.
+ Bước 4: Cấu hình file my.cnf
- Trên Master:
 Vào my.cnf bằng lệnh “vi /etc/my.cnf” sau đó nhấn Insert để nhập nội
dung. Ta tiến hành copy đoạn cấu hình đã chuẩn bị sẵn chèn vào phía
dưới chữ [mysqld], sau đó nhấn Esc và gõ lệnh “:wq” để lưu lại.

event-scheduler = on
bind-address = 192.168.75.128
server-id = 128
log-bin
binlog-format=row
binlog-do-db=db1
binlog-ignore-db=mysql
sync_binlog=0
expire_logs_days=2

 Sau đó gõ lệnh “service mysqld restart” để khởi động lại dịch vụ


MySQL.
 Cần chú ý những dòng trong file cầu hình như: event-sheduler sẽ khác
với bên Slave, bind-address: địa chỉ máy Master, server-id: lấy số đuôi
của địa chỉ ip có thể lấy số khác nhưng phải phân biệt giữa 2 máy ở đây
nên lấy số đuôi ip của máy để dễ nhớ, binlog-do-db: là tên file database
sẽ dùng để đồng bộ.

- Trên Slave:
 Thực hiện như trên mở file my.cnf copy đoạn cấu hình ở dưới, lưu lại và
gõ lệnh “service mysqld restart” để khởi động lại dịch vụ MySQL.

event_scheduler=off
bind-address = 192.168.75.129
server-id=129
log-bin
binlog-format=row
binlog-do-db=db1
binlog-ignore-db=mysql
transaction-isolation=read-committed
sync_binlog=0
expire_logs_days=2
+ Bước 5: Tạo user replication [trên Master]
- Để tao user ta phải login vào mysql.
- Sau đó gõ hai lệnh sau như hướng dẫn kết nối nhưng chú ý có thêm ip ở đây
là địa chỉ của máy Slave
 GRANT REPLICATION SLAVE ON *.* TO
'slave_user'@'192.168.75.129' IDENTIFIED BY '123456';
 FLUSH PRIVILEGES;
+ Bước 6: Tạo dữ liệu để test tạo [trên Master]
- Để tạo database ta phải login vào mysql.
- Sau đó gõ những lệnh sau để tạo database và tables:
 CREATE DÂTABASE db1;
 USE db1;
 CREATE TABLE tb1(id int, name varchar(50));
 CREATE TABLE tb2(id int, name varchar(50));
- Sau khi tạo bảng xong gõ lệnh “SHOW TABLES;” để kiểm tra bảng đã
được tao hay chưa.
+ Bước 7: Tạo Replication và kiểm tra [trên Master và Slave]
- Nguyên tắc khi tạo replication là phải LOCK tất cả các table trên Master,
để dữ liệu không thay đổi, sau đó xác định File binlog và Position, 2 thông
số dùng để cấu hình trên Slave xác định đoạn dữ liệu bắt đầu đồng bộ.

- Trên Master: login vào MySQL. Gõ lệnh sau để khóa table, xem biglog và
position:
 FLUSH TABLES WITH READ LOCK;
 SHOW MASTER STATUS;

- Giá trị cần quan tâm:


 Mysqld-bin.000002
 259
- Sau đó ta sẽ dump dữ liệu từ Master và đẩy qua Slave (sau khi dump xong
có thể gõ lệnh “UNLOCK TABLES;” để Master có thể hoạt động lại). Tiếp
theo sẽ dùng lệnh rsync để gửi file backup sang máy Slave
 mysqldump -uroot -p db1 > db1_032016.sql
 rsync -avz -P -e'ssh' db1_032016.sql root@192.168. 75.129:/root/
- Chú ý địa chỉ ip là của máy Slave và có thể đặt tên tùy thích cho file backup
để dễ nhớ ở VD trên là db1_032016.sql
- Trên Slave: vào mục root để kiểm tra xem đã nhận được file backup chưa.
Sau khi nhận được đăng nhập vào MySQL và tạo database db1. Sau đó exit
khỏi MySQL và restore database bằng lệnh sau “mysql -uroot -p db1 <
/root/db1_032016.sql”

- Tiếp theo vẫn trên Slave login vào lại MySQL và thực hiện tiếp những
dòng lệnh dưới để có thể kết nối Master với Slave
 CHANGE MASTER TO
MASTER_HOST='192.168.75.128',MASTER_USER='slave_user',
MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysqld-
bin.000002', MASTER_LOG_POS=259;
 START SLAVE;
 SHOW SLAVE STATUS\G
- Chú ý đến MATER_HOST là địa chỉ ip của máy Master, MASTER_USER
và MATER_PASSWORD đã tạo ở bước 5, MASTER_LOG_FILE và
MATER_LOG_POS có được khi show master status ở bước 7.
- Sau khi gõ lệnh SHOW SLAVE STATUS\G cần chú ý những thông số
sau:
 Last_Error: 0
 Last_SQL_Error
 Seconds_Behind_Master: 0
- Hai thông số đầu tiên là lỗi khi Slave DB thực thi các event đọc từ relay
log. Thông số Seconds_Behind_Master cho ta biết dữ liệu của Slave DB
đang bị trễ (delay, lag) bao nhiêu giây so với Master DB. Các phần sau ta sẽ
nói kỹ hơn về replication lag này. Nếu như bị lỗi kết nối hãy thử qua bên
Master đăng nhập vào MySQL và gõ lệnh “FLUSH HOSTS;” hoặc kiểm
tra lại những thông số đã nhập trước đó.
+ Bước 8: Test Replication
- Trên Master: Login vào MySQL sau đó tạo table tb3 để test.
 USE db1;
 CREATE TABLE tb3(id int, name varchar(50));
 SHOW TABLES; (kiểm tra xem đã có bảng tb3 hay chưa)

- Trên Slave: Login vào MySQL để kiểm tra xem có tb3 hay chưa nếu có quá
trình replication đã thực hiện thành công.
 USE db1;
 SHOW TABLES;

You might also like