Cách cài đặt và cấu hình nhân bản cơ sở dữ liệu Master Slave MySQL trong Ubuntu

Tác giả Network Engineer, T.Mười 25, 2021, 12:41:59 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt và cấu hình nhân bản cơ sở dữ liệu Master Slave Cluster MySQL trong Ubuntu 20.04


Đôi khi chúng ta có thể cần phải tự động sao chép dữ liệu từ một máy chủ MySQL sang một hoặc nhiều máy chủ MySQL. Về cơ bản, quản trị cơ sở dữ liệu thực hiện các tác vụ liên quan đến cơ sở dữ liệu như sao chép, phân cụm và tự động chuyển đổi dự phòng. Quản lý máy chủ cơ sở dữ liệu MySQL và thực hiện các nhiệm vụ nhân bản cơ sở dữ liệu là trách nhiệm của các chuyên gia cơ sở dữ liệu.

Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập bản sao cơ sở dữ liệu MySQL master-slave trong Ubuntu 20.04.

Trong bài viết này, chúng ta sẽ sử dụng MySQL 8 để nhân bản cơ sở dữ liệu.

  • Hai máy chủ Ubuntu.
  • Tài khoản người dùng có đặc quyền root.
  • Kết nối Internet để tải xuống các gói.

Trong ví dụ này, các máy chủ sau đang được sử dụng.

  • Master - 192.168.178.135
  • Slave - 192.168.178.137

1. Cài đặt máy chủ MySQL 8 trên cả hai nút.

Cài đặt MySQL là một quá trình đơn giản và dễ hiểu. Trong hệ thống Ubuntu, MySQL có thể được cài đặt bằng cách sử dụng kho lưu trữ gói APT. Trước khi cài đặt, hãy cập nhật chỉ mục gói Ubuntu bằng lệnh sau.

Mã nguồn [Chọn]
$ apt update
Cài đặt gói máy chủ MySQL bằng lệnh bên dưới.

Mã nguồn [Chọn]
$ apt install mysql-server -y
Việc cài đặt mới máy chủ MySQL khiến nó không được bảo mật. Chạy tập lệnh "mysql_secure_installation" để thay đổi một số tùy chọn mặc định kém an toàn hơn như thông tin đăng nhập gốc từ xa, cơ sở dữ liệu thử nghiệm, người dùng mẫu, v.v.

Mã nguồn [Chọn]
$ mysql_secure_installation

Khởi động và kích hoạt dịch vụ MySQL.

Mã nguồn [Chọn]
$ systemctl start mysql

$ systemctl enable mysql

2. Cấu hình máy chủ Master MySQL.

Bây giờ chúng ta cần thực hiện một số thay đổi trên máy chủ chính để nhân bản cơ sở dữ liệu. Chỉnh sửa tập tin mysqld.conf trong thư mục /etc/mysql/mysql.conf.d và thêm các dòng sau. Hãy nhớ thêm các biến cấu hình trong phần [mysqld].

Mã nguồn [Chọn]
$ vi /etc/mysql/mysql.conf.d/mysqld.conf
Mã nguồn [Chọn]
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysqld-slow.log

  • server-id - ID duy nhất của máy chủ MySQL. Không thể sử dụng lại ID này trong bất kỳ nút nào trong cụm.
  • log-bin - Đây là tập tin chứa tất cả thông tin nhân bản cơ sở dữ liệu được lưu trữ.
  • max_binlog_size - Kích thước của tập tin binlog.

Ngoài ra, hãy tắt bind-address bằng cách thêm vào dấu # như sau.

Mã nguồn [Chọn]
# bind-address = 127.0.0.1

Khởi động lại dịch vụ MySQL.

Mã nguồn [Chọn]
$ systemctl restart mysql
Tạo người dùng mới cho dịch vụ nhân bản cơ sở dữ liệu trên nút chính.

Bây giờ chúng ta cần tạo một người dùng cơ sở dữ liệu trong một nút Master sẽ được sử dụng bởi các Slave khi kết nối. Đăng nhập vào cơ sở dữ liệu bằng cách sử dụng người dùng root và tạo người dùng.

Mã nguồn [Chọn]
$ mysql -u root -p

$ mysql> CREATE USER [email protected] IDENTIFIED BY 'StrongP@ssw0rd';

Lưu ý: Việc chỉ định địa chỉ IP trong khi tạo người dùng sẽ chỉ chấp nhận các kết nối MySQL từ máy chủ được chỉ định. Kết nối từ các máy chủ khác sẽ bị từ chối. Trong ví dụ này, mình đã sử dụng địa chỉ IP của máy chủ Slave MySQL của mình. Bạn có thể cần thay đổi địa chỉ IP này cho phù hợp với môi trường của mình.

Người dùng cần các quyền REPLICATION SLAVE để có thể sao chép dữ liệu MySQL. Sử dụng truy vấn sau để cấp các quyền.

Mã nguồn [Chọn]
mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;
Xác minh các quyền được cấp bằng cách sử dụng truy vấn sau.

Mã nguồn [Chọn]
mysql> SHOW GRANTS FOR [email protected];

3. Cấu hình nút Slave MySQL.

Chúng ta đã cài đặt máy chủ MySQL ở bước trước. Bây giờ chúng ta sẽ thay đổi một số tập tin cấu hình để kích hoạt quá trình nhân bản cơ sở dữ liệu. Chỉnh sửa tập tin mysqld.conf trong thư mục /etc/mysql/mysql.conf.d và thêm nội dung sau.

Mã nguồn [Chọn]
$ vi /etc/mysql/mysql.conf.d/mysqld.conf
Nội dung tập tin cấu hình.

Mã nguồn [Chọn]
[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log = 2

  • server-id - Id máy chủ MySQL duy nhất.
  • read_only - Nút Slave được đặt ở chế độ chỉ đọc.
  • log_bin - Cho phép ghi log nhị phân trong nút Slave.
  • slow_query_log - Bật nhật ký truy vấn chậm.

Ngoài ra, hãy tắt bind-address bằng cách thêm vào dấu # như sau.

Mã nguồn [Chọn]
# bind-address = 127.0.0.1

Bây giờ khởi động lại dịch vụ MySQL.

Mã nguồn [Chọn]
$ systemctl restart mysql
4. Kết nối máy chủ Slave với máy chủ Master.

Trước khi cấu hình máy chủ Slave, hãy chuyển đến máy chủ Master và kiểm tra trạng thái.

Mã nguồn [Chọn]
$ mysql -u root -p
Mã nguồn [Chọn]
mysql> SHOW MASTER STATUS\G

Hãy lưu ý các tùy chọn sau mà chúng ta sẽ sử dụng trong máy chủ Slave.

  • File: mysql-bin.000002
  • Position: 156

Bây giờ cấu hình các tham số trong máy chủ Slave sẽ được sử dụng để kết nối máy chủ Master. Làm theo các bước dưới đây.
Đăng nhập vào máy chủ Slave MySQL bằng thông tin đăng nhập root.

Mã nguồn [Chọn]
$ mysql -u root -p
Dừng Slave.

Mã nguồn [Chọn]
mysql> STOP SLAVE;
Thiết lập máy chủ Slave để nhân bản cơ sở dữ liệu từ máy chủ Master.

Mã nguồn [Chọn]
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='StrongP@ssw0rd', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;

  • 192.168.178.137 - Địa chỉ IP của máy chủ Master
  • replication_user - Người dùng MySQL của máy chủ Master
  • mật khẩu - mật khẩu người dùng sử dụng để nhân bản cơ sở dữ liệu
  • mysql-bin.000002 - Logfile của máy chủ Master
  • 156 - Vị trí nhật ký của máy chủ Master

Bây giờ kích hoạt máy chủ Slave.

Mã nguồn [Chọn]
mysql> START SLAVE;
Xác minh trạng thái Slave bằng cách sử dụng truy vấn sau.

Mã nguồn [Chọn]
mysql> SHOW SLAVE STATUS\G
Lưu ý trạng thái của tùy chọn sau.

  • Slave_IO_Running: Connecting
  • Slave_IO_Running: Connecting


5. Xác minh nhân bản cơ sở dữ liệu giữa Master-Slave.

Master và slave được cấu hình để nhân bản cơ sở dữ liệu. Chúng ta có thể xác minh xem nhân bản cơ sở dữ liệu Master-Slave có hoạt động hay không. Trong máy chủ Master, đăng nhập vào cửa sổ dòng lệnh của MySQL và tạo cơ sở dữ liệu thử nghiệm.

Mã nguồn [Chọn]
$ mysql -u root -p
Mã nguồn [Chọn]
mysql> CREATE DATABASE example_db;
Xác minh cơ sở dữ liệu đã tạo.

Mã nguồn [Chọn]
mysql> SHOW DATABASES;

Bây giờ đăng nhập vào máy chủ Slave.

Mã nguồn [Chọn]
$ mysql -u root -p
Chạy truy vấn sau để liệt kê các cơ sở dữ liệu.

Mã nguồn [Chọn]
mysql> SHOW DATABASES;

Bạn có thể thấy cơ sở dữ liệu được tạo trong máy chủ Master được nhân bản sang máy chủ Slave.

Trong bài viết này, chúng ta đã học cách cài đặt và cấu hình nhân bản cơ sở dữ liệu Master Slave Cluster MySQL trong Ubuntu 20.04. Bạn cũng có thể làm theo bài viết này để thiết lập nhân bản cơ sở dữ liệu MySQL giữa Master-Slave trên Ubunutu 18.04.