MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách thiết lập bản sao MariaDB (Master-Slave) trong CentOS / RHEL 7 và Debian 8/9

Ngay cả khi một số người trong ngành CNTT nghe thấy cụm từ “ Sao chép cơ sở dữ liệu “, Họ thường liên kết nó với nhu cầu có nhiều bản sao của cùng một thông tin để tránh mất dữ liệu trong trường hợp hỏng phần cứng hoặc hỏng dữ liệu. Mặc dù điều đó đúng ở một mức độ nào đó, nhưng việc nhân rộng cơ sở dữ liệu còn nhiều điều hơn là khái niệm phổ biến về sao lưu cơ sở dữ liệu và tính khả dụng của dữ liệu.

Trong số các lợi ích khác của việc sao chép cơ sở dữ liệu trong thiết lập master-slave, chúng ta có thể đề cập đến:

  1. Việc sao lưu có thể được thực hiện trên máy chủ phụ mà không ảnh hưởng (và bị ảnh hưởng bởi) các hoạt động ghi trong máy chủ.
  2. Các hoạt động sử dụng nhiều tài nguyên (chẳng hạn như phân tích dữ liệu) có thể được thực hiện trên máy chủ mà không ảnh hưởng đến hiệu suất của máy chủ.

Trong bài viết này, chúng tôi sẽ giải thích cách thiết lập sao chép master-slave trong MariaDB 10.1 . Trái ngược với bản sao cổ điển, MariaDB đã đưa ra khái niệm về ID giao dịch toàn cầu ( GTIDs ) trong v10.0 , cho phép thay đổi một nô lệ để kết nối và sao chép từ một chủ khác một cách dễ dàng. Trên hết, trạng thái của nô lệ được ghi lại theo cách an toàn khi gặp sự cố (cập nhật trạng thái được thực hiện trong cùng một giao dịch với cập nhật dữ liệu).

Nếu bạn đang tìm kiếm MySQL sao chép theo CentOS / RHEL 6 , hãy làm theo hướng dẫn này Thiết lập MySQL (Master-Slave) Replication trên CentOS / RHEL 6

Cài đặt MariaDB 10.1 trong CentOS / RHEL 7 và Debian 8/9

Môi trường thử nghiệm của chúng tôi bao gồm các máy sau (cả hai đều là CentOS 7 ):

 Master:192.168.0.18Slave:192.168.0.19 

Để cài đặt phiên bản MariaDB mới nhất, chúng tôi sẽ cần thêm kho lưu trữ của chúng vào máy chủ của chúng tôi. Nếu bạn đang sử dụng phiên bản cũ hơn của MariaDB say 5.5, hãy xem xét nâng cấp lên phiên bản 10.1 mới nhất bằng cách sử dụng bài viết dưới đây.

  1. Nâng cấp MariaDB 5.5 lên MariaDB 10.1

Trong CentOS / RHEL

Tạo tệp có tên MariaDB.repo bên trong /etc/yum.repos.d với các nội dung sau trên cả Master Nô lệ hệ thống:

 # MariaDB 10.1 Danh sách kho lưu trữ CentOS - được tạo 2016-01-23 14:16 UTC # http://mariadb.org/mariadb/repositories/[mariadb]name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1 / centos7-amd64gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1 

Lưu tệp và cài đặt MariaDB trên cả hai máy chủ bằng yum:

 # yum update &&yum install MariaDB-server MariaDB-client 

Trong Debian / Ubuntu

Thêm khóa để xác thực các gói và kho lưu trữ MariaDB:

 # apt-get install software-properties-common # apt-key adv --recv-key --keyserver keyerver.ubuntu.com 0xcbcb082a1bb943db # add-apt-repository 'deb [Arch =amd64, i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/ debian jessie  chính '

Lưu ý :Thay thế phân phối tên tên mã trong dòng được đánh dấu ở trên.

Cài đặt bằng apt-get lệnh:

 # apt-get update # apt-get install mariadb-server 

Khi bạn đã cài đặt xong MariaDB, hãy chạy mysql_secure_installation trên cả máy chủ và máy phụ, hãy thiết lập cơ sở dữ liệu thử nghiệm mẫu trong máy chủ.

Thiết lập cơ sở dữ liệu MySQL mẫu trên Master

Bây giờ chúng tôi sẽ thiết lập trong máy chủ chính Employees cơ sở dữ liệu từ https://github.com/datacharmer/test_db (cung cấp tập dữ liệu 4 triệu bản ghi trải rộng trên sáu bảng) trong hai bước đơn giản:

Sao chép kho lưu trữ và sử dụng nó để nhập cơ sở dữ liệu mẫu vào cài đặt MariaDB của bạn:

 # git clone https://github.com/datacharmer/test_db# cd test_db # mysql  

Định cấu hình Máy chủ MySQL trên Master

Để định cấu hình cái chính, hãy làm theo các bước sau:

BƯỚC 1: Chỉnh sửa /etc/my.cnf tập tin. Trong [mysqld] , thêm bốn dòng sau:

 log-binserver_id =1replicate-do-db =staffbind-address =192.168.0.18 

và khởi động lại MariaDB:

 # systemctl khởi động lại mariadb 

BƯỚC 2: Đăng nhập vào máy chủ MariaDB với tư cách là người chủ, tạo nô lệ người dùng và chỉ định các khoản trợ cấp cần thiết:

  MariaDB [(none)]>  TẠO NGƯỜI DÙNG 'nô lệ' @ 'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'SlavePassword';  MariaDB [(none)]>  CẤP PHÉP THAY THẾ CHẬM BẬT *. * ĐẾN nô lệ ĐƯỢC XÁC ĐỊNH BỞI 'SlavePassword' VỚI LỰA CHỌN CẤP;  MariaDB [(none)]>  FLUSH PRIVILEGES;  MariaDB [(none)]>  CÁC BẢNG FLUSH CÓ KHÓA ĐỌC;  MariaDB [(none)]>  HIỂN THỊ TRẠNG THÁI MASTER; 

Cuối cùng lệnh ( HIỂN THỊ TRẠNG THÁI MASTER ) trả về vị trí hiện tại trong nhật ký nhị phân (tọa độ chính xác cho biết chính xác điểm mà máy phụ sẽ bắt đầu sao chép từ:

BƯỚC 3: Thoát khỏi lời nhắc MariaDB (với exit; ) và sử dụng lệnh sau để chụp nhanh cơ sở dữ liệu nhân viên. Khi bạn nhấn Enter , bạn sẽ được nhắc nhập mật khẩu cho thư mục gốc mà bạn đã thiết lập trước đó thông qua mysql_secure_installation :

 # mysqldump -u root -p staff> results-dump.sql 

Sau khi kết xuất hoàn tất, hãy kết nối lại với máy chủ cơ sở dữ liệu để mở khóa các bảng và sau đó thoát:

  MariaDB [(none)]>  MỞ KHÓA BẢNG;  MariaDB [(none)]>  thoát ra; 

BƯỚC 4: Sao chép kết xuất vào máy nô lệ:

 # scp staff-dump.sql [email protected]:/ root / 

BƯỚC 5: Chạy mysql_upgrade quy trình nâng cấp bảng hệ thống (bạn sẽ được nhắc nhập mật khẩu gốc MariaDB):

 # mysql_upgrade -u root -p 

BƯỚC 6: Cho phép dịch vụ cơ sở dữ liệu thông qua tường lửa:

 # firewall-cmd --add-service =mysql # firewall-cmd --add-service =mysql --permosystem # firewall-cmd --reload 

Bây giờ, hãy định cấu hình nô lệ.

Định cấu hình Máy chủ MySQL trên Slave

Để định cấu hình máy nô lệ, hãy làm theo các bước sau:

BƯỚC 1: Tạo tài khoản để thực hiện các nhiệm vụ sao chép. Kết nối với máy chủ MariaDB cục bộ bằng:

 # mysql -u root –p 

và nhập mật khẩu bạn đã thiết lập trước đó.

BƯỚC 2: Sau khi kết nối với máy chủ cơ sở dữ liệu, hãy tạo người dùng và một cơ sở dữ liệu trống, đồng thời cấp quyền:

  MariaDB [(none)]>  TẠO nhân viên CƠ SỞ DỮ LIỆU;  MariaDB [(none)]>  CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ CHO nhân viên. * ĐẾN 'slave' @ 'localhost' VỚI TÙY CHỌN CẤP;  MariaDB [(none)]>  QUYỀN RIÊNG TƯ CỦA FLUSH; 

BƯỚC 3: Thoát khỏi lời nhắc MariaDB và tải kết xuất được tạo trong máy chủ chính:

 # mysql -u root -p staff  

BƯỚC 4: Chỉnh sửa /etc/my.cnf tệp để chỉ định một máy chủ ID cho nô lệ theo [mysqld] tiết diện. Lưu ý rằng nó phải là một số nguyên khác với 1 , như chúng tôi đã sử dụng 1 trong tổng thể:

 server_id =2replicate-do-db =nhân viên 

Khởi động lại máy chủ cơ sở dữ liệu:

 # systemctl khởi động lại mariadb 

BƯỚC 5: Chạy mysql_upgrade quy trình nâng cấp bảng hệ thống (bạn sẽ được nhắc nhập mật khẩu gốc MariaDB):

 # mysql_upgrade -u root -p 

BƯỚC 6: Sau khi kết xuất đã được nhập vào nô lệ, chúng tôi chỉ cần thực hiện một vài bước để bắt đầu sao chép. Đăng nhập vào cơ sở dữ liệu và chạy các lệnh sau trong lời nhắc MariaDB. Đặc biệt chú ý đến MASTER_LOG_FILEMASTER_LOG_POS biến, phải khớp với các giá trị được trả về bởi SHOW MASTER STATUS trong BƯỚC 2 của “Định cấu hình cái chính” ở trên.

  MariaDB [(none)]>  ĐỔI MASTER TO MASTER_HOST ='192.168.0.18', MASTER_USER ='slave', MASTER_PASSWORD ='SlavePassword', MASTER_PORT =3306, MASTER_LOG_FILE ='master-bin.000001', MASTER_LOG_POS =314, MASTER_CONNECT / pre> 

BƯỚC 7: Khởi động nô lệ và kiểm tra trạng thái của nó mà không cần thoát khỏi lời nhắc MariaDB:

  MariaDB [(none)]>  BẮT ĐẦU TRƯỢT;  MariaDB [(none)]>  HIỂN THỊ TRẠNG THÁI CHẬM \ G; 

Không phải bạn cần điều này ngay bây giờ, nhưng lưu ý rằng bạn có thể ngăn chặn nô lệ bằng:

  MariaDB [(none)]>  DỪNG TRƯỢT; 

nếu SHOW SLAVE STATUS\G; lệnh trả về bất kỳ lỗi nào. Sử dụng những lỗi đó để khắc phục sự cố và sau đó chạy START SLAVE; để kiểm tra lại.

Kiểm tra sao chép cơ sở dữ liệu MySQL / MariaDB

Hãy thêm hồ sơ cho nhân viên bảng trong máy chủ chính:

  MariaDB [(none)]>  CHÈN VÀO nhân viên (emp_no, ngày sinh, tên đầu tiên, tên cuối, giới tính, ngày tháng thuê) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

Sau đó, xác minh rằng thay đổi này đã được sao chép trong nô lệ:

  MariaDB [(none)]>  SỬ DỤNG nhân viên;  MariaDB [(none)]>  CHỌN * TỪ nhân viên WHERE emp_no =500000; 

Như bạn có thể thấy, sao chép đang hoạt động chính xác từ cái chính đến cái phụ.

Tóm tắt

Trong bài viết này, chúng tôi đã giải thích cách cài đặt phiên bản MariaDB mới nhất trong CentOS / RHEL 7 và Debian 8/9, và thảo luận về cách thiết lập sao chép master-slave với GTID. Để biết thêm thông tin, bạn có thể muốn tham khảo Hướng dẫn sao chép MariaDB và đừng ngần ngại liên hệ với chúng tôi bằng cách sử dụng biểu mẫu bên dưới nếu bạn có câu hỏi hoặc nhận xét.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đơn vị ngày và giờ MariaDB

  2. Triển khai các cụm và cơ sở dữ liệu có sẵn cao với ClusterControl

  3. Cách NOT REGEXP hoạt động trong MariaDB

  4. Hướng dẫn sao chép luồng trực tuyến cụm MySQL Galera:Phần thứ nhất

  5. Triển khai một Nextcloud khả dụng cao với MySQL Galera Cluster và GlusterFS