Triển khai MySQL Replication

Trong quá trình triển khai mô hình MySQL Relication, thì chú ý khai báo 2 thông số quan trọng server-idlog-bin

Bài viết tham khảo từ http://quantrilinux.com/diendan/Thread-tutorial-trien-khai-mysql-replication–147

Nội dung trình bày :
– Cài đặt MySQL Replication với mô hình 1 master và 1 slave
– Mở rộng mô hình trên với việc thêm 1 slave nữa

I. Địa chỉ IP các server :
Master server : 192.168.1.250
Slave server 1 : 192.168.1.251
Slave server 2 : 192.168.1.252

II. Mô hình một master – một slave :
1. Cấu hình trên master :
– Kiểm tra skip_networking , nếu giá trị này là ON thì master và slave sẽ không connect với nhau được => thêm vào /etc/my.cnf dòng “skip_networking=Off” để tắt nó đi

Code:
mysql> show variables like "skip_networking";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| skip_networking | OFF   |
+-----------------+-------+
1 row in set (0.00 sec)

– Khai báo server-id và binlog : thêm các dòng sau vào /etc/my.cnf dưới tag [mysqld] :

Code:
server-id=1
log-bin=/var/lib/mysql/mysql-bin

– Tạo user để slave dùng user này kết nối vào server replicate dữ liệu :

Code:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.251' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;

=> User : replication , Pass : 123456 . Chú ý phần IP là IP của slave.

– Restart lại mysql để đọc lại thông tin cấu hình mới trong /etc/my.cnf

Code:
/etc/init.d/mysqld restart

– Kiểm tra status của master server :

Code:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |       98 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

=> Để ý phần “File” và “Position” , giá trị của chúng sẽ được dùng ở bước khai báo thông tin master server bên slave server

2. Cấu hình trên slave server :
– Khai báo slave : thêm dòng sau vào file /etc/my.cnf dưới tag [mysqld] :

Code:
server-id=2

– Khai báo thông tin của master server để slave có thể kết nối :

Code:
mysql> change master to  master_host='192.168.1.250', master_user='replication', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=98;

– Start slave :

Code:
mysql> start slave;

Đến đây bạn đã cấu hình hoàn tất mô hình replication master – slave.

3. Kiểm tra hoạt động :
– Tạo db quantrilinux trên master server :

Code:
mysql> create database quantrilinux;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
| quantrilinux       |
| test               |
+——————–+
4 rows in set (0.00 sec)

– Kiểm tra trên slave server , thấy database đã được replicate :

Code:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| quantrilinux       |
| test               |
+--------------------+
4 rows in set (0.00 sec)

III. Thêm server slave 2 vào mô hình trên
1. Cấu hình trên slave 1 :
– Bật tính năng read only để không ghi thêm dữ liệu mới vào database và tắt replication :

Code:
mysql> flush table with read lock;
mysql> stop slave;

2. Cấu hình trên slave2 :
– Đồng bộ hóa database giữa slave2 và slave1 :

Code:
rsync -a 192.168.1.251:/var/lib/mysql/ /var/lib/mysql

– Khai báo enable tính năng replication : thêm vào file /etc/my.cnf :

Code:
server-id=3

– Restart mysql để đọc lại cấu hình mới :

Code:
/etc/init.d/mysqld restart

3. Cấu hình trên master :
– Tạo user để slave2 có thể kết nối và replicate dữ liệu :

Code:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.252' identified by '123456';
mysql> FLUSH PRIVILEGES;

4. Cấu hình trên 2 slave :
– Start slave và unlock table để bắt đầu hoạt động :

Code:
mysql> start slave;
mysql> unlock tables;

5. Kiểm tra hoạt động :
– Tạo 2 database quantrilinux2 và quantrilinux3 trên server master :

Code:
mysql> create database quantrilinux2;
mysql> create database quantrilinux3;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| quantrilinux       |
| quantrilinux2      |
| quantrilinux3      |
| test               |
+--------------------+
6 rows in set (0.00 sec)

– Kiểm tra trên slave1 :

Code:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| quantrilinux       |
| quantrilinux2      |
| quantrilinux3      |
| test               |
+--------------------+
6 rows in set (0.00 sec)

– Kiểm tra trên slave2 :

Code:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| quantrilinux       |
| quantrilinux2      |
| quantrilinux3      |
| test               |
+--------------------+
6 rows in set (0.00 sec)

=> Dữ liệu đã được replicate qua slave1 và slave2