MariaDB Advance: MariaDB Replication

Replication là 1 tính năng cho phép nội dung của 1 hoặc nhiều máy chủ (được gọi là masters) được nhân đôi trên 1 hoặc nhiều máy chủ (được gọi là slaves).

Bạn có thể kiểm soát dữ liệu nào cần sao chép. Đa số những cơ sở dữ liệu, 1 hoặc nhiều cơ sở dữ liệu hoặc những bảng trong cơ sở dữ liệu đều có thể được sao chép 1 phương pháp chọn lọc.

Cơ chế chính được dùng trong nhân rộng là binary log . Giả dụ binary log được bật, mọi những cập nhật cho cơ sở dữ liệu (thao tác dữ liệu và định nghĩa dữ liệu) được ghi vào binary log dưới dạng binlog occasions. Những Slaves đọc binary log từ mỗi grasp truy cập dữ liệu để sao chép. 1 relay log được tạo ra trên slave server, dùng định dạng giống như những binary log, và điều này được dùng để thực hành sao chép. Những tệp nhật ký chuyển tiếp cũ được gỡ bỏ lúc ko còn cần thiết.

1 slave server theo dõi vị trí trong binlog grasp’s binlog của sự kiện cuối cùng được vận dụng trên slave. Điều này cho phép slave server kết nối lại và tiếp tục lại từ nơi nó ngừng lại sau lúc quá trình sao chép tạm thời bị ngừng lại. Nó cũng cho phép 1 slave ngắt kết nối, được nhân bản và sau đấy có bản sao tiếp tục slave mới từ cùng 1 chủ grasp.

Masters và slaves ko cần buộc phải liên lạc có nhau. Hoàn toàn có thể đưa máy chủ ngoại tuyến hoặc ngắt kết nối khỏi mạng và lúc chúng quay trở lại, việc sao chép sẽ tiếp tục ở nơi nó ngừng lại.

Lúc nào thì nên dùng Replication

Replication được dùng trong 1 số tình huống phổ biến. Dùng bao gồm:

  • Khả năng mở rộng: Bằng phương pháp có 1 hoặc nhiều máy chủ slave, việc đọc có thể được trải rộng trên nhiều máy chủ, giảm tải cho grasp. Kịch bản phổ biến nhất cho môi trường đọc cao, viết thấp là có 1 chủ, trong đấy mọi những ghi xảy ra, sao chép thành nhiều nô lệ, xử lý gần như những lần đọc.
  • Phân tách dữ liệu: Phân tách dữ liệu có thể có quá nhiều liên quan tới máy chủ grasp và điều này có thể được xử lý tương tự trên máy chủ slave, trong lúc grasp vẫn tiếp tục ko bị liên quan bởi tải thêm.
  • Tương trợ sao lưu: Sao lưu có thể dễ dàng chạy hơn giả dụ máy chủ ko chủ động thay đổi dữ liệu. 1 kịch bản phổ biến là sao chép dữ liệu về slave, sau đấy bị ngắt kết nối có grasp có dữ liệu ở trạng thái ổn định. Sao lưu sau đấy được thực hành từ máy chủ này.
  • Phân phối dữ liệu: Thay vì được kết nối có 1 grasp từ xa, thay vào đấy, có thể sao chép dữ liệu cục bộ và khiến việc từ dữ liệu này.
Xem Thêm  OMG Community (OMG) là gì? Thông tin chi tiết về dự án OMG Community

Những mô hình thết lập Replication

Commonplace Replication

  • Phân phối quy mô đọc vô hạn.
  • Phân phối tính sẵn sàng cao bằng phương pháp nâng cấp slave lớn grasp.

Ring Replication

  • Phân phối đọc và viết tỷ lệ.
  • Ko xử lý xung đột.
  • Giả dụ 1 chủ thất bại, nhân rộng ngừng lại.

Star Replication

  • Phân phối đọc và viết tỷ lệ.
  • Ko xử lý xung đột.
  • Buộc phải dùng những bộ lọc sao chép để hạn chế trùng lặp dữ liệu.

Multi-Supply Replication

  • Cho phép bạn hài hòa dữ liệu từ những nguồn khác nhau.
  • Những miền khác nhau được thực hành độc lập đồng thời trên mọi những nô lệ.

Chú ý là Replication nên chỉ thiết lập lúc grasp và slave chạy trên cùng 1 phiên bản hoặc phiên bản slave mới hơn phiên bản grasp. Trường hợp máy chủ grasp có phiên bản cao hơn máy chủ slave thì Replication sẽ ko tương thích.

Thiết lập trên server grasp.

  • Cho phép ghi binary log giả dụ nó chưa được kích hoạt
  • Phân phối cho chủ grasp server_id duy nhất . Đa số slave cũng buộc phải được phân phối 1 server_id. Đây có thể là 1 số từ 1 tới 232-1 và buộc phải là duy nhất cho mỗi máy chủ trong nhóm replicating.
  • Chỉ định 1 tên duy nhất cho nhật ký replication có -log-basename . Giả dụ điều này ko được chỉ định, tên hostname máy chủ của bạn sẽ được dùng và sẽ có vấn đề giả dụ tên máy chủ thay đổi.
  • Những Slaves sẽ cần sự cho phép để kết nối và khởi đầu sao chép từ 1 máy chủ. Thông thường, điều này được thực hành bằng phương pháp tạo 1 khách hàng slave chuyên dụng và chỉ cấp quyền cho khách hàng đấy để sao chép (REPLICATION SLAVE permission).
Xem Thêm  Dego Finance (DEGO) là gì? Toàn tập về tiền điện tử DEGO

Những lệnh dưới đây sẽ thiết lập trên máy chủ Grasp, trước tiên ta thêm những cấu hình sau vào file my.cnf máy chủ grasp

[mariadb] log-bin server_id=1 log-basename=master1 # cấu hình dưới đây cho phép những kết nối bên cạnh vào server. skip-networking=0 skip-bind-address

Sau lúc restart lại MariaDB trên máy chủ grasp, chúng ta truy cập MariaDB và khởi tạo person cho phép chỉ đọc để dùng cho replication.

# khởi tạo person CREATE USER ‘replication_user’@’%’ IDENTIFIED BY ‘Mật_khẩu’; # cấp quyền REPLICATION cho person vừa tạo ở trên GRANT REPLICATION SLAVE ON *.* TO ‘replication_user’@’%’; #Flush quyền FLUSH PRIVILEGES;

Có 1 số tùy chọn có thể liên quan hoặc phá vỡ nhân rộng. Đánh giá những cài đặt sau để hạn chế những vấn đề.

  • skip-networking. Giả dụ skip-networking=1 . máy chủ sẽ giới hạn kết nối chỉ có localhost và ngăn mọi những slaves từ xa kết nối.
  • bind-address. Tương tự, giả dụ liên hệ máy chủ lắng nghe những kết nối TCP / IP là 127.0.0.1 (localhost), những kết nối slaves từ xa sẽ thất bại.

Thiết lập trên server slave

Phân phối cho slave 1 server_id duy nhất. Đa số những máy chủ, cho dù là grasp hay slave, đều được phân phối server_id. Đây có thể là 1 số từ 1 tới 232-1 và buộc phải là duy nhất cho mỗi máy chủ trong replication. Máy chủ sẽ cần buộc phải được khởi động lại để thay đổi trong tùy chọn này có hiệu lực.

Thiết lập trong file my.cnf của máy chủ slave

[mariadb] server-id = 2

Sau lúc restart lại MariaDB là chúng ta đã khởi tạo slave hoàn thành. Công việc tiếp theo là chúng ta quay trở lại máy chủ grasp và lấy được tạo độ của binary log .

Lấy tọa độ Binary Log của Grasp

Bây giờ bạn cần ngăn chặn mọi thay đổi đối có dữ liệu trong lúc bạn xem vị trí binary log. Bạn sẽ dùng điều này để nói có slave chính xác điểm nào sẽ khởi đầu sao chép dữ liệu.

  • Trên grasp, flush and lock mọi những bảng bằng phương pháp chạy FLUSH TABLES WITH READ LOCK.
  • Lấy vị trí hiện tại trong binary log bằng phương pháp chạy SHOW MASTER STATUS:
Xem Thêm  Bí quyết xem thông số cpu trên VPS linux

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK; Question OK, 0 rows affected (0.001 sec) MariaDB [(none)]> SHOW MASTER STATUS; +-+-+-+-+ | File | Place | Binlog_Do_DB | Binlog_Ignore_DB | +-+-+-+-+ | master1-bin.000003 | 344 | | | +-+-+-+-+ 1 row in set (0.001 sec)

  • Ghi lại chi tiết File và Place
  • Bây giờ, Lúc vẫn đang lock tables, chúng ta sao chép dữ liệu từ grasp sang sang slave. Xem Sao lưu, Khôi phục để biết chi tiết về phương pháp thực hành việc này.
  • Lưu ý cho stay database(database đang dùng cho): Bạn chỉ cần tạo 1 bản sao dữ liệu, bạn ko cần buộc phải lock tables cho tới lúc slave đã nhập dữ liệu.
  • Lúc dữ liệu đã được sao chép, bạn có thể giải phóng lock tables trên máy chủ grasp bằng phương pháp chạy UNLOCK TABLES # nhớ chạy lệnh dưới đây sau lúc database đã được import trên máy chủ slave UNLOCK TABLES;

Khởi đầu slave

Lúc dữ liệu đã được import, bạn đã sẵn sàng khởi đầu replication. Khởi đầu bằng phương pháp chạy CHANGE MASTER TO , đảm bảo rằng MASTER_LOG_FILE khớp có tệp và MASTER_LOG_POS vị trí được trả về bởi SHOW MASTER STATUS trước đấy. Thí dụ:

MariaDB [(none)]> STOP SLAVE; MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=’IP_server_master’, MASTER_USER=’replication_user’, MASTER_PASSWORD=’Mật _khẩu_user_replication_đã_tạo_trước_đó’, MASTER_PORT=3306, MASTER_LOG_FILE=’master1-bin.000003′, MASTER_LOG_POS=344, MASTER_CONNECT_RETRY=10;

Sau lúc thiết lập hoàn thành, bạn có thể begin slave và đánh giá replication

MariaDB [(none)]> START SLAVE; Question OK, 0 rows affected (0.000 sec) MariaDB [(none)]> SHOW SLAVE STATUS G *************************** 1. row *************************** Slave_IO_State: Ready for grasp lớn ship occasion Master_Host: 103.130.218.7 Master_User: replication_user Master_Port: 3306 Connect_Retry: 10 Master_Log_File: master1-bin.000003 Read_Master_Log_Pos: 477 Relay_Log_File: slave-relay-bin.000002 Relay_Log_Pos: 690 Relay_Master_Log_File: master1-bin.000003 Slave_IO_Running: Sure Slave_SQL_Running: Sure Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 477 Relay_Log_Space: 999 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: conservative SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has learn all relay log; ready for the slave I/O thread lớn replace it Slave_DDL_Groups: 1 Slave_Non_Transactional_Groups: 0 Slave_Transactional_Groups: 0 1 row in set (0.000 sec)

Giả dụ bạn thấy 2 dòng operating như sau thì replication đã được cấu hình hoàn thành

Slave_IO_Running: Sure Slave_SQL_Running: Sure