Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

09 tháng 11, 2016

Cài đặt MySQL replication trên CentOS

Trong bài viết này tôi sẽ hướng dẫn các bạn cài đặt môi trường replica cho máy chủ MySQL.
Giả sử rằng:

  • Máy chủ chính có địa chỉ IP là: 123.456.789.1
  • Máy chủ thay thế có địa chỉ IP là: 123.456.789.2
1.Trên máy chủ chính
Cài đặt ứng dụng mysql:

yum install mysql-server mysql
 Khởi động dịch vụ của mysql:

systemctl start mysql
systemctl enable mysql
Sửa tập tin /etc/my.cnf, và thêm vào phần [mysqld] nội dung sau:
server-id = 1
binlog-do-db=database
relay-log = mysql-relay-bin
relay-log-index = mysql-relay-bin.index
log-bin = mysql-bin
Trong đó database là tên của database bạn muốn tạo replica.
Khởi động lại dịch vụ mysql bằng lệnh:
systemctl restart mysql
Đăng nhập vào mysql bằng lệnh:
mysql -u root -p
Chạy lần lượt các lệnh sau để tạo tài khoản cho máy chủ replica:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'PASSWORD'
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      245 | database     |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> exit
Lưu ý nhớ thông tin trong cột File và Position để sử dụng trên máy chủ replica.
Sử dụng lệnh sau để xuất dữ liệu từ máy chủ chính và import vào máy chủ replica:
mysqldump -u root -p --master-data database > /root/database.sql
2.Trên máy chủ thay thế
Tiến hành cài đặt mysql và sử đổi tập tin cấu hình /etc/my.cnf để thêm nội dung sau vào phần [mysqld]:
server-id = 2
master-host=123.456.789.1
master-connect-retry=60
master-user=slaveuser
master-password=PASSWORD
replicate-do-db=database
relay-log = mysql-relay-bin
log-bin = mysql-bin
Khởi động lại dịch vụ của mysql:
systemctl restart mysql
Tiến hành import dữ liệu vào hệ thống:
mysql -u root -p < /root/database.sql
Đăng nhập vào dịch vụ:
mysql -u root -p
Cấu hình cho máy chủ slave:
mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='123.456.789.1', MASTER_USER='slaveuser', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;
mysql> slave start;
Kiểm tra trạng thái của máy chủ slave bằng lệnh sau:
mysql> show slave status;
Nếu thấy output hiện ra có dòng sau là thành công:
Slave_IO_State: Waiting for master to send event
Tham khảo tại đây

5 nhận xét:

  1. Fix lại với phiên bản mysql mới:
    http://www.linuxdict.com/2012-01-mysqld-unknown-variable-master-host/

    Trả lờiXóa
  2. Php 7 trên centos 6:
    http://www.shayanderson.com/linux/centos-5-or-centos-6-upgrade-php-to-php-54-or-php-55.htm

    Trả lờiXóa
  3. Phân quyền remote cho mysql:
    http://stackoverflow.com/questions/6239131/how-to-grant-remote-access-permissions-to-mysql-server-for-user

    Trả lờiXóa
  4. Tạo user trên mysql:
    https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql

    Trả lờiXóa
  5. where is the command to send dump to slave...(rsync,scp) ????

    Trả lờiXóa