MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách thiết lập MySQL Master-Slave Replication trên Ubuntu 18.04

MySQL master-slave replication là một thủ tục cho phép sao chép hoặc sao chép các tệp cơ sở dữ liệu qua một hoặc nhiều nút trong mạng. Thiết lập này cung cấp khả năng dự phòng và khả năng chịu lỗi để trong trường hợp xảy ra lỗi trong Nút chính , cơ sở dữ liệu vẫn có thể được khôi phục trong nút Slave . Điều này giúp người dùng yên tâm rằng tất cả sẽ không bị mất trong bất kỳ trường hợp nào vì bản sao của cơ sở dữ liệu vẫn có thể được truy xuất từ ​​một máy chủ khác.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách thực hiện MySQL cơ sở dữ liệu Master-slave sao chép trên Ubuntu 18.04 hệ thống.

Điều kiện tiên quyết

Trong quá trình thiết lập, chúng tôi sẽ có hai máy chủ chạy Ubuntu 18.04 với các địa chỉ IP sau.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Bây giờ chúng ta hãy đi sâu vào và xem cách chúng ta có thể định cấu hình Master-slave thiết lập sao chép trên Ubuntu .

Bước 1:Cài đặt MySQL trên các nút Master và Slave

Ubuntu kho chứa phiên bản 5.7 của MySQL . Để tận dụng mọi tính năng mới và tránh các sự cố tiềm ẩn, bạn nên cài đặt phiên bản MySQL mới nhất. Nhưng trước tiên, hãy cập nhật hai nút bằng lệnh apt sau.

$ sudo apt update

Để cài đặt MySQL trên cả hai nút, thực hiện lệnh.

$ sudo apt install mysql-server mysql-client

Tiếp theo, mở mysql tệp cấu hình.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Trên Nút chính , cuộn và tìm bind-address như hình bên dưới.

bind-address 	 =127.0.0.1

Thay đổi địa chỉ lặp lại để khớp với địa chỉ IP của Nút chính .

bind-address  	=10.128.0.28

Tiếp theo, chỉ định giá trị cho server-id trong [mysqld] tiết diện. Số bạn chọn không được khớp với bất kỳ số id máy chủ nào khác. Hãy gán giá trị 1 .

server-id	 =1

Ở cuối tệp cấu hình, hãy sao chép và dán các dòng bên dưới.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Thoát khỏi tệp cấu hình và khởi động lại dịch vụ MySQL để các thay đổi có hiệu lực trên nút Chính.

$ sudo systemctl restart mysql

Để xác minh rằng máy chủ MySQL đang chạy như mong đợi, hãy phát hành lệnh.

$ sudo systemctl status mysql

Hoàn hảo! Máy chủ MySQL đang chạy như mong đợi!

Bước 2:Tạo người dùng mới để nhân rộng trên Master Node

Trong phần này, chúng tôi sẽ tạo một người dùng sao chép trong nút chính . Để đạt được điều này, hãy đăng nhập vào máy chủ MySQL như được hiển thị.

$ sudo mysql -u root -p

Tiếp theo, tiến hành và thực hiện các truy vấn bên dưới để tạo một người dùng bản sao và cấp quyền truy cập cho nô lệ nhân bản. Hãy nhớ sử dụng địa chỉ IP của bạn.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Tiếp theo, chạy lệnh sau.

mysql> SHOW MASTER STATUS\G

Kết quả đầu ra phải tương tự như những gì bạn có thể thấy bên dưới.

Hãy quan tâm và lưu ý mysql-bin.000002 giá trị và ID vị trí 1643 . Những giá trị này sẽ rất quan trọng khi thiết lập máy chủ nô lệ .

Bước 3:Định cấu hình Máy chủ MySQL Slave

Đi đến máy chủ nô lệ và giống như chúng tôi đã làm với Máy chủ chính , mở tệp cấu hình MySQL.

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Cũng giống như máy chủ chính , tiến hành chỉnh sửa các dòng sau.

bind-address           = 10.128.0.29

Như trước đây, hãy chỉ định một giá trị cho server-id trong [mysqld] tiết diện. Lần này chọn một giá trị khác. Hãy bắt đầu với 2 .

server-id		=2 

Một lần nữa, hãy dán các dòng bên dưới vào cuối tệp cấu hình.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Tiếp theo khởi động lại máy chủ MySQL trên nút phụ.

$ sudo systemctl restart mysql

Sau khi hoàn tất, hãy lưu và thoát khỏi trình soạn thảo văn bản

Tiếp theo, đăng nhập vào MySQL shell như được hiển thị.

$ sudo mysql -u root -p

Trong bước này, bạn sẽ cần thực hiện một số cấu hình sẽ cho phép máy chủ phụ để kết nối với máy chủ chính . Nhưng trước tiên, hãy dừng các chuỗi nô lệ như được hiển thị.

mysql> STOP SLAVE; 

Để cho phép máy chủ nô lệ để sao chép Máy chủ chính , chạy lệnh.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='[email protected]', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Nếu bạn đủ quan tâm, bạn sẽ thấy rằng chúng tôi đã sử dụng mysql-bin.00002 giá trị và ID vị trí 1643 hiển thị sớm hơn sau khi tạo người dùng sao chép nô lệ.

Ngoài ra, địa chỉ IP, người dùng sao chép và mật khẩu của máy chủ chính đã được sử dụng.

Sau đó, hãy bắt đầu chuỗi mà bạn đã dừng trước đó.

mysql> START SLAVE;

Bước 4:Xác minh bản sao MySQL Master-Slave

Để kiểm tra xem thiết lập có thực sự hoạt động như mong đợi hay không, chúng tôi sẽ tạo một cơ sở dữ liệu mới trên cái chính và kiểm tra xem nó đã được sao chép trên máy chủ MySQL Slave chưa.

Đăng nhập vào MySQL trong Máy chủ chính .

$ sudo mysql -u root -p

Hãy tạo một cơ sở dữ liệu thử nghiệm. Trong trường hợp này, chúng tôi sẽ tạo cơ sở dữ liệu có tên replication_db .

mysql> CREATE DATABASE replication_db;

Bây giờ, đăng nhập vào phiên bản MySQL của bạn trong máy chủ nô lệ .

$ sudo mysql -u root -p

Bây giờ hãy liệt kê các cơ sở dữ liệu bằng cách sử dụng truy vấn.

mysql> SHOW DATABASES;

Bạn sẽ nhận thấy cơ sở dữ liệu bạn đã tạo trên cái chính đã được sao chép trên nô lệ . Tuyệt vời ! Bản sao MySQL Master-slave của bạn đang hoạt động như mong đợi! Giờ đây, bạn có thể yên tâm rằng trong trường hợp có bất kỳ lỗi nào, các bản sao của tệp cơ sở dữ liệu sẽ được sao chép sang máy chủ phụ.

Kết luận

Trong hướng dẫn này, bạn đã học cách thiết lập MySQL Master-slave thiết lập sao chép trên Ubuntu 18.04 .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB giải pháp cho tài liệu có kích thước trên 16mb?

  2. Làm cách nào để lấy lại không gian đã xóa mà không có `db.repairDatabase ()`?

  3. Điền các ngày còn thiếu trong hồ sơ

  4. Cách truy vấn MongoDB với like

  5. cách Lặp lại con trỏ mongo trong một vòng lặp trong python