Làm thế nào để setup Master Slave Replication in MySQL

1.MySQl relication là gì?

Mysql relication là một quá trình cho phép bạn dễ dàng duy trì nhiều bản sao của một dự liệu MySQL bằng cách copy tự động từ một master đến một slave database. Điều này hữu ích vì nhiều lý do bao gồm tạo điều kiện sao lưu dữ liệu, cách phân tích dữ liệu mà không cần sử dụng cơ sở dữ liệu chính hoặc đơn giản là phương tiện để mở rộng quy mô.

Bài viết này sẽ bao gồm một ví dụ đơn giản cho mysql relocation-một master sẽ gửi thông tin đến một slave.

Bài viết này sẽ sử dụng theo địa chỉ Ip :

12.34.56.789-Master Database

12.23.34.456-Slave Database

2.Setup

Cài đặt mysql

Bạn có thể cài đăt bằng lên sau:

sudo apt-get install mysql-server mysql-client

Bước 1-Cấu hình master database

Mở file cấu hình trên master server

sudo nano /etc/mysql/my.cnf

Trong file này chúng ta càn thay đôỉ một vài chỗ.

Bước đầu tiên chúng ra tìm phần trông như này

bind-address = 127.0.0.1

Thay thế IP tiêu chuẩn với ip của server:

bind-address = 12.34.56.789

Thay đổi cấu hình tiếp theo đề cập đến id máy chủ, nằm trong phần [mysqld]. Bạn có thể chọn bất kỳ số nào cho vị trí này , nhưng số này phải là duy nhất và không thể khớp với bất kỳ id máy chủ nào khác trong nhóm sao chép của bạn. Tôi sẽ đặt là 1. server-id = 1

chuyển sang dòng log_bin. Đây là nơi giữ các chi tiết thực sự của bản sao. Slave sẽ sao chép tất cả các thay đổi được đăng ký trong nhật ký. Đối với bước này, chúng ta chỉ cần bỏ comment log_bin

Cuối cùng, chúng ta cần chỉ định cơ sở dữ liệu sẽ được sao chép trên máy chủ slave. Bạn setup nhiều hơn một cơ sở dữ liệu bằng cách lặp lại dòng này cho tất cả các cơ sở dữ liệu bạn sẽ cần.

Sau đó thoát khỏi file cấu hình mysql và restart mysql.

sudo service mysql restart

Bước kế tiếp chúng ta sẽ chúng ta sẽ login mysql.

mysql -u root -p

Chúng ta cần cấp đặc quyền cho slave. Bạn có thể sử dụng dòng này để đặt tên cho slave của bạn và thiết lập mật khẩu cho chúng. Lệnh phải ở định dạng này

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';

Theo rõi với :

FLUSH PRIVILEGES;

Bước kế tiếp chúng ta chon db "newdatabase"

Use newdatabase;

Theo đó, khóa cơ sở dữ liệu để ngăn chặn mọi thay đổi mới:

FLUSH TABLES WITH READ LOCK:

Sau đó thực thi lệnh:

SHOW MASTER STATUS;

Bạn sẽ nhìn thấy bảng giống như này:


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

Đây là vị trí mà cơ sở dự liệu slave sẽ bắt đầu sao chép .Ghi lại những này con số này sẽ có ích sau này Bây giờ chúng ta thực hiên export database sử dụng mysqldump:

mysqldump -u root -p --opt newdatabase > newdatabase.sql

UNLOCK TABLES:

QUIT;

Bây giờ chúng ta đã xong việc cấu hình của master db

Bước 2 - Cấu hình slave Database

Bạn cần tạo một schema newdatabase từ mysqldump lúc trước chúng ta export:

CREATE DATABASE newdatabase;

EXIT;

mysql -u root -p newdatabase < /path/to/newdatabase.sql

Bây giờ chúng ta vào file config slave db và cấu hình một vài thay đổi:

sudo nano /etc/mysql/my.cnf

server-id = 2

Lưu ý là ko được đặt là 1 vì master db bên trên chúng ta đã đặt là một rồi

relay-log = /var/log/mysql/mysql-relay-bin.log

log_bin = /var/log/mysql/mysql-bin.log

binlog_do_db = newdatabase

Restart MySQL:

sudo service mysql restart

Bước kế tiếp là cho phép replication.

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

Lệnh này thực hiện một số điều cùng một lúc:

  1. Nó chỉ đinh máy chủ hiện tại là slave của master server
  2. Nó cung cấp cho máy chủ thông tin đăng nhập chính xác:
  3. Cuối cùng Nó Cho slave server biết bắt sao chép đâu ;master log file và log postion đến từ nhưng con số lúc trước và chúng ta đã cấu hình một master và slave server.

Kích hoạt slave server:

START SLAVE;

Bạn có thể xem chi tiết của bản sao slave bằng cách gõ vào lệnh này. \ G sắp xếp lại văn bản để dễ đọc hơn

SHOW SLAVE STATUS\G

Nếu có vấn đề trong việc kết nối, bạn có thể thử bắt đầu slave bằng một lệnh để bỏ qua nó :

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START;

3.Kết luận

MySQL replication có nhiều option khác nhau và đây chỉ là một ví dụ ngắn gọn. Bài viết tham khảo từ nguồn : https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

All Rights Reserved