Trong bài viết này, bạn sẽ tìm hiểu cách thực hiện sao chép MySQL Master-Master . MySQL là một trong những cơ sở dữ liệu quan hệ được sử dụng nhiều nhất và việc thiết lập sao chép MySQL Master Master khá đơn giản.

MySQL là một trong những hệ quản trị cơ sở dữ liệu quan hệ nguồn mở phổ biến nhất. MySQL sử dụng mô hình Client-Server đơn giản để hỗ trợ người dùng quản lý Cơ sở dữ liệu quan hệ, tức dữ liệu được lưu trữ theo hàng và cột trên các bảng. Nó sử dụng ngôn ngữ truy vấn nổi tiếng là Ngôn ngữ truy vấn có cấu trúc (SQL), cho phép người dùng thực hiện tất cả các thao tác CRUD (Tạo, Đọc, Cập nhật và Xóa).

MySQL được MySQL AB, một tập đoàn Thụy Điển, tạo ra lần đầu tiên vào năm 1994. Sun Microsystems đã mua lại công ty vào năm 2008, và cuối cùng Sun Microsystems đã được Oracle, một tập đoàn CNTT khổng lồ của Mỹ, mua lại. Hiện nay, Oracle chịu trách nhiệm phát triển và mở rộng MySQL. Mặc dù MySQL là mã nguồn mở và miễn phí cho tất cả mọi người, nhưng nó vẫn chứa một số tính năng cao cấp mà Oracle chỉ cung cấp cho những khách hàng sẵn sàng trả phí.

MySQL Master-Master replication, còn được gọi là mirror replication hoặc active-active replication , là phương pháp sao chép và đồng bộ hóa dữ liệu giữa hai máy chủ theo thời gian thực. Thiết lập này cho phép cả hai máy chủ hoạt động như master, nghĩa là chúng có thể xử lý cả thao tác đọc và ghi, cung cấp tính dự phòng và cải thiện hiệu suất của các commit giao dịch. Phương pháp này đặc biệt hữu ích cho các giải pháp có tính khả dụng cao trong các ứng dụng web và sản phẩm SaaS. Một lợi thế chính của MySQL replication master-master là khả năng thực hiện ghi trên cả hai máy chủ, điều này có thể mang lại lợi ích cho việc cân bằng tải.

Việc cấu hình sao chép nhiều máy chủ MySQL đòi hỏi phải lập kế hoạch cẩn thận để tránh xung đột và đảm bảo tính nhất quán của dữ liệu trên tất cả các nút máy chủ.

Bây giờ bạn đã nắm được cơ bản về MySQL Master Master Replication, hãy cùng tìm hiểu quy trình thiết lập. Dưới đây là các bước bạn có thể làm theo để xây dựng bản sao MySQL Master Master đầu tiên. Bạn cũng có thể nâng cao thiết lập bản sao của mình bằng MySQL Joins hiệu quả

Nếu bạn không cài đặt máy chủ MySQL và máy khách MySQL trên máy chủ của mình, bạn có thể thực hiện điều đó bằng cách sử dụng lệnh sau:

sudo apt-get install mysql-server mysql-client
 

Cài đặt mặc định của MySQL chỉ cho phép nó chấp nhận kết nối trên máy chủ cục bộ (127.0.0.1). Bạn cần thay đổi các cài đặt này để cho phép sao chép hoạt động bình thường. Để thực hiện việc này, bạn phải chỉnh sửa tệp /etc/mysql/my.cnf trên máy chủ của mình. Bốn dòng sau đây phải được thay đổi, hiện đang được đặt thành:

#server-id              = 1#log_bin                = /var/log/mysql/mysql-bin.log#binlog_do_db           = include_database_namebind-address            = 127.0.0.1

Mã máy chủ cho phép bạn xác định máy chủ cụ thể của mình một cách duy nhất trong cấu hình sao chép. Việc đầu tiên bạn cần làm là bỏ chú thích dòng đầu tiên bằng cách xóa ký hiệu "#" ở đầu. Dòng thứ hai chỉ định tệp sẽ lưu trữ nhật ký cho tất cả các thay đổi được thực hiện trên bất kỳ cơ sở dữ liệu hoặc bảng MySQL nào.

Dòng thứ ba chỉ định tất cả các cơ sở dữ liệu bạn muốn sao chép giữa các máy chủ của mình. Bạn có thể thêm nhiều cơ sở dữ liệu vào dòng này. Trong ví dụ này, chúng ta sẽ sử dụng một cơ sở dữ liệu duy nhất có tên là "demo" . Cuối cùng, dòng cuối cùng hướng dẫn máy chủ chấp nhận các kết nối từ internet (bằng cách không lắng nghe trên địa chỉ 127.0.0.1).

server-id               = 1log_bin                 = /var/log/mysql/mysql-bin.logbinlog_do_db            = demo# bind-address            = 127.0.0.1

Để tất cả những thay đổi này được phản ánh, bạn phải khởi động lại dịch vụ MySQL bằng lệnh sau:

sudo service mysql restart

Bước tiếp theo là thay đổi cài đặt dòng lệnh trong phiên bản MySQL. Bạn có thể truy cập người dùng MySQL của mình như sau:

mysql -u root -p 
 

Sau khi đăng nhập thành công, bạn phải chạy một số lệnh nhất định.

Hướng dẫn đơn giản và dễ dàng về MySQL Master Master Replication bằng mã
Hướng dẫn đơn giản và dễ dàng về MySQL Master Master Replication bằng mã

Trước tiên, bạn phải tạo một người dùng giả (pseudo-user ) sẽ được sử dụng cho quá trình sao chép. Trong ví dụ ở bài viết này, chúng tôi lấy tên người dùng này là "demouser". "password" phải được thay thế bằng mật khẩu bạn muốn sử dụng để sao chép.

create user 'demouser'@'%' identified by 'password'; 
 

Người dùng này phải được cấp đủ quyền để có thể sao chép:

grant replication slave on *.* to 'demouser'@'%'; 

Cuối cùng, để hoàn tất cấu hình ban đầu của Máy chủ 1 , chúng ta phải trích xuất một số thông tin về phiên bản MySQL hiện tại để cung cấp sau cho Máy chủ 2 .

Bạn có thể sử dụng lệnh sau để lấy thông tin cần thiết. Hãy ghi lại thông tin này, vì bạn sẽ cần đến nó sau:

show master status; 

Hãy ghi chú lại tệp và vị trí mà bạn sẽ sử dụng trong bước Master Master Replication MySQL tiếp theo.

Bạn cần thiết lập Máy chủ 2 tương tự như Máy chủ 1 bằng cách lặp lại các bước tương tự như trên. Trước tiên, bạn cần cài đặt máy chủ, sau khi cài đặt thành công, hãy chỉnh sửa tệp my.cnf theo cách tương tự. Tuy nhiên, server-id của máy chủ này sẽ được đặt thành 2.

server-id              = 2log_bin                = /var/log/mysql/mysql-bin.logbinlog_do_db           = demo# bind-address            = 127.0.0.1

Bước tiếp theo là lưu tệp và khởi động lại dịch vụ MySQL:

sudo service mysql restart

Sau khi cấu hình hoàn tất, bạn phải vào shell MySQL và thiết lập thêm một số tùy chọn cấu hình.

mysql -u root -p 

Bước đầu tiên giống như trong trường hợp của Máy chủ 1 là tạo người dùng giả chịu trách nhiệm sao chép. 

create user 'demouser'@'%' identified by 'password'; 

Bạn cần đảm bảo rằng người dùng này có các quyền cần thiết:.

grant replication slave on *.* to ‘demouser’@'%'; 

Bây giờ là lúc tạo cơ sở dữ liệu mà bạn muốn sao chép.

create database demo; 

Bước tiếp theo sử dụng thông tin bạn đã ghi chú trước đó. Lệnh sau sẽ cho phép bắt đầu sao chép:

slave stop; CHANGE MASTER TO MASTER_HOST = '3.3.3.3', MASTER_USER = 'demouser', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; slave start;


Giá trị của bạn cho MASTER_LOG_FILE và MASTER_LOG_POS có thể khác với giá trị hiển thị ở trên. Bạn nên sử dụng các giá trị mà lệnh "SHOW MASTER STATUS" trả về trên Máy chủ 1.

Để kích hoạt tính năng sao chép MySQL master theo hướng ngược lại (từ Máy chủ 2 sang Máy chủ 1), bạn phải ghi lại vị trí và tệp nhật ký master.

Để có được thông tin cần thiết, hãy sử dụng lệnh sau:

SHOW MASTER STATUS; 

Bước 3: Hoàn tất MySQL Master Master Replication trên Máy chủ 1

Bạn vẫn cần hoàn tất việc cấu hình sao chép MySQL Master Master trở lại Máy chủ 1. Chạy lệnh sau sẽ sao chép toàn bộ dữ liệu của bạn từ Máy chủ 2:

slave stop; CHANGE MASTER TO MASTER_HOST = '4.4.4.4', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107; slave start; 

Vui lòng cẩn thận khi thay thế các tham số bằng các giá trị bạn nhận được cho máy chủ của mình (có thể khác với các giá trị được sử dụng ở trên), bao gồm cả giá trị MASTER_PASSWORD. Vui lòng sử dụng mật khẩu bạn đã tạo khi thiết lập người dùng sao chép.

Điều cuối cùng bạn cần làm là kiểm tra xem tính năng sao chép MySQL Master Master có hoạt động trên cả hai máy chủ hay không.

Bây giờ bạn đã cấu hình xong, tất cả những gì bạn cần làm là kiểm tra. Để làm điều này, bạn sẽ tạo một bảng trong cơ sở dữ liệu 'demo' trên Máy chủ 1 và xem nó có hiển thị trên Máy chủ 2 hay không. Để kiểm tra chức năng hai chiều của nó, sau đó bạn sẽ xóa cơ sở dữ liệu này khỏi Máy chủ 2 và đảm bảo rằng nó không còn hiển thị trên Máy chủ 1 nữa. Đảm bảo tính toàn vẹn của bản sao bằng tiện ích MySQL Check .

Đối với quy trình kiểm tra MySQL Replication Master Master, hãy bắt đầu bằng cách tạo bảng trong cơ sở dữ liệu của bạn bằng các lệnh sau:

use database demo; create table dummy (`id` varchar(10)); 

Bây giờ, hãy kiểm tra Máy chủ 2 để xem bảng này có hiển thị không.

show tables in demo; 

Bạn sẽ thấy kết quả tương tự như sau:

+-------------------+| Tables_in_demo |+-------------------+| dummy             |+-------------------+1 row in set (0.00 sec)

Bây giờ, hãy xóa bảng giả này khỏi Máy chủ 2 và kiểm tra Máy chủ 1. Bạn có thể thực hiện việc này bằng cách sử dụng các lệnh sau:

Trên Máy chủ 2:

DROP TABLE dummy; 

Trên Máy chủ 1:

Tập rỗng (0,00 giây)

Nếu bạn nhận được kết quả như trên, thì bản sao MySQL Master Master của bạn đang hoạt động tốt! Đây rồi. Xin chúc mừng!

Tìm hiểu cách quản lý Khóa MySQL trong mô hình sao chép master-master.

MySQL Master - Nhân bản chủ là một sự phát triển của nhân bản chủ-tớ, khắc phục những nhược điểm chính của nó. Phương pháp nhân bản này yêu cầu hai hoặc nhiều nút chủ có thể xử lý cả yêu cầu đọc và ghi . Ngoài ra, mỗi nút chủ của bạn có thể có nhiều nút tớ. Nhân bản bất đồng bộ diễn ra giữa các nút chủ. Bước đầu tiên trong cách thiết lập nhân bản chủ-tớ trong MySQL là cấu hình máy chủ chủ để ghi lại các thay đổi mà máy chủ tớ sao chép sau đó. Bạn cũng có thể kết hợp Phân vùng MySQL với nhân bản để đạt hiệu suất tối ưu.

Lưu ý: Một thách thức thường gặp khi sử dụng MySQL Database Replication Master-Slave là xử lý chuyển đổi dự phòng và đảm bảo cơ sở dữ liệu Slave có thể tiếp quản mà không bị mất dữ liệu. Ngoài ra, dữ liệu hiện có của MySQL Master-Slave yêu cầu phải xem xét kỹ lưỡng lược đồ cơ sở dữ liệu hiện tại để đảm bảo tính tương thích với thiết lập sao chép.

Plugin MySQL Server triển khai tính năng MySQL Group Replication, cho phép sao chép theo phương pháp hoàn toàn mới dựa trên kiến trúc máy trạng thái phân tán.

Tính năng Group MySQL Replication cho phép tạo ra các hệ thống chịu lỗi với khả năng dự phòng, đảm bảo cụm máy chủ vẫn hoạt động ngay cả khi một số máy chủ gặp sự cố (miễn là không phải toàn bộ). Tính năng sao chép MGR nổi bật nhờ khả năng tự động khôi phục và giải quyết tranh chấp được tích hợp sẵn.

Hevo hỗ trợ MySQL BinLog Replication như một giải pháp thay thế khả thi cho MySQL Master Master Replication. Tùy thuộc vào các bản cập nhật cơ sở dữ liệu được ghi lại, thông tin trong nhật ký nhị phân được lưu trữ ở các định dạng nhật ký khác nhau. Nhật ký nhị phân từ nguồn được đọc bởi các bản sao, và các sự kiện trong nhật ký nhị phân được thực thi trên cơ sở dữ liệu cục bộ của bản sao.

Mỗi bản sao sẽ nhận được một bản sao toàn bộ nội dung của nhật ký nhị phân. Bản sao chịu trách nhiệm xác định những câu lệnh nào trong nhật ký nhị phân sẽ được thực thi. Trừ khi bạn chỉ định khác, bản sao sẽ thực thi tất cả các sự kiện trong nhật ký nhị phân của nguồn. Bạn có thể cấu hình bản sao để chỉ xử lý các sự kiện liên quan đến cơ sở dữ liệu hoặc bảng cụ thể nếu cần.

Mỗi bản sao lưu giữ tọa độ nhật ký nhị phân mà nó đọc và xử lý từ nguồn: tên tệp và vị trí trong tệp. Điều này có nghĩa là nhiều bản sao có thể được kết nối với nguồn và chạy các phần khác nhau của cùng một nhật ký nhị phân cùng một lúc. Các bản sao riêng lẻ có thể được kết nối và ngắt kết nối khỏi máy chủ mà không làm gián đoạn hoạt động của nguồn vì các bản sao kiểm soát quy trình. Hơn nữa, vì mỗi bản sao lưu giữ vị trí hiện tại của nó trong nhật ký nhị phân, các bản sao có thể được tách ra, kết nối lại và khởi động lại quá trình xử lý.

Tìm hiểu thêm về MySQL BinLog Replication.

Trước khi kết thúc, chúng ta hãy cùng xem những điều cơ bản về MySQL.

Trong bài viết này, bạn đã học cách thực hiện sao chép MySQL Master Master. Bài viết cũng cung cấp cho bạn tổng quan ngắn gọn về MySQL. MySQL Master Master Replication cung cấp bản sao lưu dữ liệu của bạn trong trường hợp mất dữ liệu. Tuy nhiên, khi làm việc với sao chép , bạn cần phải là chuyên gia về MySQL để thiết lập máy chủ từ đầu và cấu hình thủ công một số chi tiết.

Thiết lập sao chép MySQL master master là một quy trình phức tạp, đòi hỏi phải lập kế hoạch và thực hiện cẩn thận để đảm bảo tính nhất quán của dữ liệu trên các máy chủ. Hơn nữa, hầu hết thời gian, dữ liệu không có sẵn ở đúng định dạng và bạn sẽ cần kỹ năng về kỹ thuật dữ liệu và quản trị MySQL để chuyển đổi dữ liệu.

Hevo Data cung cấp một Đường ống Dữ liệu Tự động Không cần Mã, giúp bạn khắc phục những hạn chế nêu trên. Hevo hỗ trợ hơn 150 nguồn dữ liệu và có thể thực hiện  Sao chép MySQL  theo thời gian thực một cách liền mạch. Hơn nữa, kiến trúc chịu lỗi của Hevo đảm bảo sao chép dữ liệu MySQL của bạn một cách nhất quán và an toàn. Sử dụng Hevo sẽ giúp cuộc sống của bạn dễ dàng hơn và Sao chép Dữ liệu không gặp rắc rối.


Tuấn Nguyễn

342Blog posts

Related post