Thứ tư, 10/07/2019 | 00:00 GMT+7

Cách cấu hình Cụm Galera với MariaDB trên server CentOS 7

Phân cụm bổ sung tính khả dụng cao cho database của bạn bằng cách phân phối các thay đổi cho các server khác nhau. Trong trường hợp một trong các version không thành công, các version khác sẽ nhanh chóng có mặt để tiếp tục phục vụ.

Các cụm có hai cấu hình chung, chủ động-bị động và chủ động-tích cực . Trong các cụm chủ động-thụ động, tất cả các quá trình ghi được thực hiện trên một server hoạt động duy nhất và sau đó được sao chép sang một hoặc nhiều server thụ động sẵn sàng tiếp quản chỉ trong trường hợp server hoạt động bị lỗi. Một số cụm chủ động-thụ động cũng cho phép các hoạt động SELECT trên các node thụ động. Trong một cụm đang hoạt động tích cực, mọi nút đều được đọc-ghi và một thay đổi được thực hiện đối với một nút sẽ được sao chép cho tất cả.

MariaDB là một hệ thống database quan hệ open-souce hoàn toàn tương thích với hệ thống MySQL RDBMS phổ biến. Bạn có thể đọc tài liệu chính thức cho MariaDB tại trang này . Galera là một giải pháp phân cụm database cho phép bạn cài đặt các cụm đa tổng thể bằng cách sử dụng sao chép đồng bộ. Galera tự động xử lý việc giữ đồng bộ dữ liệu trên các node khác nhau trong khi cho phép bạn gửi các truy vấn đọc và ghi tới bất kỳ nút nào trong cụm. Bạn có thể tìm hiểu thêm về Galera tại trang tài liệu chính thức.

Trong hướng dẫn này, bạn sẽ cấu hình một cụm MariaDB Galera đang hoạt động. Đối với mục đích demo , bạn sẽ cấu hình và kiểm tra ba server CentOS 7 sẽ hoạt động như các node trong cụm. Đây là cụm cấu hình nhỏ nhất.

Yêu cầu

Để làm theo, bạn cần một tài khoản DigitalOcean , ngoài những thứ sau:

Mặc dù các bước trong hướng dẫn này đã được viết và thử nghiệm dựa trên DigitalOcean Server, nhưng nhiều bước trong số chúng cũng sẽ được áp dụng cho các server không phải DigitalOcean có bật mạng riêng.

Bước 1 - Thêm repository MariaDB vào tất cả server

Trong bước này, bạn sẽ thêm các repository MariaDB có liên quan vào từng server trong số ba server của bạn để bạn có thể cài đặt đúng version MariaDB được sử dụng trong hướng dẫn này. Khi repository được cập nhật trên cả ba server , bạn sẽ sẵn sàng cài đặt MariaDB.

Một điều cần lưu ý về MariaDB là nó có nguồn root như một sự thay thế thả xuống cho MySQL, vì vậy trong nhiều file cấu hình và tập lệnh khởi động, bạn sẽ thấy mysql thay vì mariadb . Trong nhiều trường hợp, chúng có thể thay thế cho nhau. Vì lợi ích của sự nhất quán, ta sẽ sử dụng mariadb trong hướng dẫn này ở những nơi có thể hoạt động.

Trong hướng dẫn này, bạn sẽ sử dụng MariaDB version 10.4 . Vì version này không có trong repository lưu trữ CentOS mặc định, bạn sẽ bắt đầu bằng cách thêm repository CentOS bên ngoài do dự án MariaDB duy trì vào cả ba server của bạn.

Lưu ý: MariaDB là một nhà cung cấp có uy tín tốt, nhưng không phải tất cả các repository bên ngoài đều tin cậy . Đảm bảo chỉ cài đặt từ các nguồn tin cậy .

Đầu tiên, bạn sẽ thêm khóa repository MariaDB bằng cách tạo một file repository bằng editor . Hướng dẫn này sẽ sử dụng vi :

  • sudo vi /etc/yum.repos.d/mariadb.repo

Tiếp theo, thêm nội dung sau vào file bằng cách nhấn i để vào chế độ insert , sau đó thêm nội dung sau:

/etc/yum.repos.d/mariadb.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 

Nhấn phím esc để trở về chế độ bình thường, sau đó gõ :wq để lưu và thoát file . Nếu bạn muốn tìm hiểu thêm về soạn thảo văn bản vi và người tiền nhiệm của nó vim , hãy xem hướng dẫn của ta về Cài đặt và Sử dụng Text Editor Vim trên một cloud server .

Khi bạn đã tạo file repository , hãy kích hoạt nó bằng lệnh sau:

  • sudo yum makecache --disablerepo='*' --enablerepo='mariadb'

Lệnh makecache bộ nhớ cache metadata của repository để người quản lý gói có thể cài đặt MariaDB, với --disablerepo--enablerepo nhắm đến lệnh tới mariadb mà bạn vừa tạo.

Bạn sẽ nhận được kết quả sau:

Output
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile mariadb | 2.9 kB 00:00:00 (1/3): mariadb/primary_db | 43 kB 00:00:00 (2/3): mariadb/other_db | 8.3 kB 00:00:00 (3/3): mariadb/filelists_db | 238 kB 00:00:00 Metadata Cache Created

Khi bạn đã bật repository trên server đầu tiên của bạn , hãy lặp lại cho server thứ hai và thứ ba của bạn.

Đến đây bạn đã thêm thành công repository trên cả ba server của bạn , bạn đã sẵn sàng cài đặt MariaDB trong phần tiếp theo.

Bước 2 - Cài đặt MariaDB trên tất cả các server

Trong bước này, bạn sẽ cài đặt các gói MariaDB thực trên ba server của bạn .

Bắt đầu từ version 10.1 , gói Server MariaDB và Server MariaDB Galera được kết hợp, vì vậy việc cài đặt MariaDB-server sẽ tự động cài đặt Galera và một số phụ thuộc:

  • sudo yum install MariaDB-server MariaDB-client

Bạn cần xác nhận xem bạn có muốn tiếp tục cài đặt hay không. Nhập yes để tiếp tục cài đặt. Sau đó, bạn sẽ được yêu cầu chấp nhận khóa GPG xác thực gói MariaDB. Nhập yes .

Khi quá trình cài đặt hoàn tất, hãy bắt đầu dịch vụ mariadb bằng lệnh:

  • sudo systemctl start mariadb

Cho phép dịch vụ mariadb được tự động khởi động khi server khởi động bằng cách thực thi:

  • sudo systemctl enable mariadb

Từ version MariaDB 10.4 trở đi, user MariaDB gốc không có password theo mặc định. Để đặt password cho user root , hãy bắt đầu bằng cách đăng nhập vào MariaDB:

  • sudo mysql -uroot

Khi bạn đang ở trong shell MariaDB, hãy thay đổi password bằng cách thực hiện câu lệnh sau, thay thế your_password bằng password mong muốn của bạn:

  • set password = password("your_password");

Bạn sẽ thấy kết quả sau cho biết password đã được đặt chính xác:

Output
Query OK, 0 rows affected (0.001 sec)

Thoát khỏi shell MariaDB bằng cách chạy lệnh sau:

  • quit;

Nếu bạn muốn tìm hiểu thêm về SQL hoặc cần cập nhật nhanh, hãy xem hướng dẫn MySQL của ta .

Đến đây bạn có tất cả các phần cần thiết để bắt đầu cấu hình cụm, nhưng vì bạn sẽ dựa vào rsyncpolicycoreutils-python trong các bước sau để đồng bộ hóa các server và kiểm soát Linux được tăng cường bảo mật (SELinux), hãy đảm bảo chúng được cài đặt trước khi chuyển sang:

  • sudo yum install rsync policycoreutils-python

Điều này sẽ xác nhận các version mới nhất của rsyncpolicycoreutils-python đã có sẵn hoặc sẽ nhắc bạn nâng cấp hoặc cài đặt nó.

Khi bạn đã hoàn thành các bước này, hãy lặp lại chúng cho hai server khác của bạn.

Đến đây bạn đã cài đặt MariaDB thành công trên mỗi server trong số ba server , bạn có thể tiến hành bước cấu hình trong phần tiếp theo.

Bước 3 - Cấu hình nút đầu tiên

Trong bước này, bạn sẽ cấu hình nút Galera đầu tiên của bạn . Mỗi nút trong cụm cần có cấu hình gần giống nhau. Vì điều này, bạn sẽ thực hiện tất cả cấu hình trên máy đầu tiên của bạn , sau đó sao chép nó sang các node khác.

Theo mặc định, MariaDB được cấu hình để kiểm tra folder /etc/mysql/conf.d để nhận cài đặt cấu hình bổ sung từ các file có .cnf . Tạo file trong folder này với tất cả các lệnh dành riêng cho cụm của bạn:

  • sudo vi /etc/my.cnf.d/galera.cnf

Thêm cấu hình sau vào file . Cấu hình chỉ định các tùy chọn cụm khác nhau, chi tiết về server hiện tại và các server khác trong cụm và các cài đặt liên quan đến sao chép. Lưu ý địa chỉ IP trong cấu hình là địa chỉ riêng của các server tương ứng của bạn; thay thế các dòng được đánh dấu bằng các địa chỉ IP thích hợp:

/etc/my.cnf.d/galera.cnf
[mysqld] binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 bind-address=0.0.0.0  # Galera Provider Configuration wsrep_on=ON wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so  # Galera Cluster Configuration wsrep_cluster_name="test_cluster" wsrep_cluster_address="gcomm://First_Node_IP,Second_Node_IP,Third_Node_IP"  # Galera Synchronization Configuration wsrep_sst_method=rsync  # Galera Node Configuration wsrep_node_address="This_Node_IP" wsrep_node_name="This_Node_Name" 
  • Phần đầu tiên sửa đổi hoặc xác nhận lại cài đặt MariaDB / MySQL sẽ cho phép cụm hoạt động chính xác. Ví dụ: Galera sẽ không hoạt động với MyISAM hoặc các công cụ lưu trữ không giao dịch tương tự và mysqld không được ràng buộc với địa chỉ IP cho localhost .
  • Phần “Cấu hình nhà cung cấp Galera” cấu hình các thành phần MariaDB cung cấp API sao chép WriteSet. Điều này nghĩa là Galera trong trường hợp của bạn, vì Galera là một nhà cung cấp wsrep (WriteSet Replication). Bạn chỉ định các tham số chung để cấu hình môi trường nhân bản ban đầu. Điều này không yêu cầu bất kỳ tùy chỉnh nào, nhưng bạn có thể tìm hiểu thêm về các tùy chọn cấu hình Galera tại đây .
  • Phần “Cấu hình cụm Galera” xác định cụm, xác định các thành viên cụm theo địa chỉ IP hoặc domain có thể phân giải và tạo tên cho cụm đảm bảo rằng các thành viên tham gia đúng group . Bạn có thể thay đổi wsrep_cluster_name thành một cái gì đó có ý nghĩa hơn test_cluster hoặc giữ nguyên nó, nhưng bạn phải cập nhật wsrep_cluster_address bằng địa chỉ IP riêng của ba server của bạn.
  • Phần “Cấu hình đồng bộ hóa Galera” xác định cách cụm sẽ giao tiếp và đồng bộ hóa dữ liệu giữa các thành viên. Điều này chỉ được sử dụng để chuyển trạng thái xảy ra khi một nút trực tuyến. Đối với cài đặt ban đầu, bạn đang sử dụng rsync , vì nó thường có sẵn và thực hiện những gì bạn cần bây giờ.
  • Phần “Cấu hình nút Galera” làm rõ địa chỉ IP và tên của server hiện tại. Điều này rất hữu ích khi cố gắng chẩn đoán sự cố trong log và tham chiếu đến từng server theo nhiều cách. Địa chỉ wsrep_node_address phải trùng với địa chỉ của máy bạn đang sử dụng, nhưng bạn có thể chọn bất kỳ tên nào bạn muốn để giúp bạn xác định nút trong file log .

Khi thấy ổn với file cấu hình cụm của bạn , hãy sao chép nội dung vào clipboard của bạn và lưu file .

Đến đây bạn đã cấu hình thành công nút đầu tiên của bạn , bạn có thể chuyển sang cấu hình các node còn lại trong phần tiếp theo.

Bước 4 - Cấu hình các node còn lại

Trong bước này, bạn sẽ cấu hình hai nút còn lại. Trên nút thứ hai của bạn, mở file cấu hình:

  • sudo vi /etc/mysql/my.cnf.d/galera.cnf

Dán cấu hình bạn đã sao chép từ nút đầu tiên, sau đó cập nhật Galera Node Configuration để sử dụng địa chỉ IP hoặc domain có thể phân giải cho nút cụ thể mà bạn đang cài đặt . Cuối cùng, cập nhật tên của nó, mà bạn có thể đặt thành bất kỳ thứ gì giúp bạn xác định được nút trong file log của bạn :

/etc/mysql/my.cnf.d/galera.cnf
. . . # Galera Node Configuration wsrep_node_address="This_Node_IP" wsrep_node_name="This_Node_Name" . . . 

Lưu và thoát khỏi file .

Khi bạn đã hoàn thành các bước này, hãy lặp lại chúng trên nút thứ ba.

Với Galera được cấu hình trên tất cả các node của bạn, bạn gần như đã sẵn sàng để khởi động cụm. Nhưng trước khi thực hiện, hãy đảm bảo các cổng thích hợp đang mở trong firewall của bạn và policy SELinux đã được tạo cho Galera.

Bước 5 - Mở firewall trên mọi server

Trong bước này, bạn sẽ cấu hình firewall của bạn để các cổng cần thiết cho giao tiếp giữa các node được mở.

Trên mọi server , hãy kiểm tra trạng thái của firewall bạn đã cài đặt trong phần Yêu cầu bằng lệnh:

  • sudo firewall-cmd --list-all

Trong trường hợp này, chỉ lưu lượng SSH, DHCP, HTTP và HTTPS được phép thông qua:

Output
public target: default icmp-block-inversion: no interfaces: sources: services: ssh dhcpv6-client http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Nếu bạn cố gắng khởi động cụm bây giờ, nó sẽ không thành công vì firewall sẽ chặn các kết nối giữa các node . Để giải quyết vấn đề này, hãy thêm các luật để cho phép lưu lượng truy cập MariaDB và Galera.

Galera có thể sử dụng bốn cổng:

  • 3306 Đối với các kết nối client MariaDB và Truyền ảnh chụp trạng thái sử dụng phương thức mysqldump .
  • 4567 Đối với lưu lượng sao chép Cụm Galera. Nhân rộng Multicast sử dụng cả truyền tải UDP và TCP trên cổng này.
  • 4568 Đối với Chuyển trạng thái tăng dần , hoặc IST, quá trình mà các node khác trong cụm nhận được trạng thái bị thiếu.
  • 4444 Đối với tất cả các Chuyển giao ảnh chụp trạng thái khác, hoặc SST, cơ chế mà một nút kết hợp lấy trạng thái và dữ liệu của nó từ một nút tài trợ.

Trong ví dụ này, bạn sẽ mở tất cả bốn cổng trong khi cài đặt . Khi bạn đã xác nhận sao chép đang hoạt động, bạn muốn đóng bất kỳ cổng nào mà bạn không thực sự sử dụng và hạn chế lưu lượng truy cập chỉ đối với các server trong cụm.

Mở các cổng bằng các lệnh sau:

  • sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
  • sudo firewall-cmd --permanent --zone=public --add-port=4567/tcp
  • sudo firewall-cmd --permanent --zone=public --add-port=4568/tcp
  • sudo firewall-cmd --permanent --zone=public --add-port=4444/tcp
  • sudo firewall-cmd --permanent --zone=public --add-port=4567/udp

Sử dụng --zone=public--add-port= ở đây, firewall-cmd đang mở các cổng này cho lưu lượng công cộng. --permanent đảm bảo các luật này vẫn tồn tại.

Lưu ý: Tùy thuộc vào những gì khác đang chạy trên server của bạn, bạn có thể cần hạn chế quyền truy cập ngay lập tức. Để tìm hiểu thêm về cách sử dụng FirewallD, hãy xem hướng dẫn của ta Cách cài đặt Firewall bằng FirewallD trên CentOS 7 .

Bây giờ, hãy thêm từng server vào vùng public bằng cách thực hiện các lệnh sau, thay thế văn bản được đánh dấu bằng địa chỉ IP riêng tương ứng của các node của bạn:

  • sudo firewall-cmd --permanent --zone=public --add-source=galera-node-1-ip/32
  • sudo firewall-cmd --permanent --zone=public --add-source=galera-node-2-ip/32
  • sudo firewall-cmd --permanent --zone=public --add-source=galera-node-3-ip/32

Cập nhật firewall để áp dụng các thay đổi:

  • sudo firewall-cmd --reload

Sau khi bạn đã cấu hình firewall của bạn trên nút đầu tiên, hãy tạo cài đặt firewall tương tự trên nút thứ hai và thứ ba.

Đến đây bạn đã cấu hình firewall thành công, bạn đã sẵn sàng tạo policy SELinux trong bước tiếp theo.

Bước 6 - Tạo policy SELinux

Trong phần này, bạn sẽ tạo một policy SELinux cho phép tất cả các node trong cụm có thể giao tiếp với nhau và thực hiện các hoạt động của cụm.

SELinux là một module nhân Linux giúp cải thiện tính bảo mật của hệ điều hành với sự hỗ trợ của nó đối với các policy kiểm soát truy cập và kiểm soát truy cập bắt buộc. Nó được bật theo mặc định trên CentOS 7 và hạn chế trình MariaDB thực hiện nhiều hoạt động.

Để tạo policy , bạn sẽ thực hiện các hoạt động khác nhau trên cụm với chế độ SELinux được đặt thành cho phép đối với MySQL. Sau đó, bạn sẽ tạo một policy từ các sự kiện đã ghi và cuối cùng đặt chế độ SELinux để thực thi sau khi policy được cài đặt thành công.

Đầu tiên, cho phép truy cập vào các cổng liên quan bằng cách chạy các lệnh sau trên cả ba server :

  • sudo semanage port -a -t mysqld_port_t -p tcp 4567
  • sudo semanage port -a -t mysqld_port_t -p udp 4567
  • sudo semanage port -a -t mysqld_port_t -p tcp 4568
  • sudo semanage port -a -t mysqld_port_t -p tcp 4444

Lưu ý: Bạn có thể nhận được ValueError khi cho phép truy cập vào một số cổng này. Điều này nghĩa là trạng thái SELinux của cổng đó đã được cài đặt , trong trường hợp này sẽ không ảnh hưởng đến quá trình của hướng dẫn này.

Trong các lệnh này, bạn đang sử dụng các công cụ quản lý SELinux semanage với -a cờ để thêm cổng cụ thể và bỏ qua các server database .

Tiếp theo, chạy lệnh sau trên cả ba server , lệnh này tạm thời đặt domain MySQL SELinux ở chế độ cho phép.

  • sudo semanage permissive -a mysqld_t

Lệnh này có thể mất một phút để hoàn thành và sẽ không hiển thị bất kỳ kết quả nào.

Tiếp theo, dừng server database trên tất cả các node để bạn có thể khởi động cụm database bằng các policy SELinux được chia sẻ. Để thực hiện việc này, hãy chạy lệnh sau trên cả ba nút:

  • sudo systemctl stop mariadb

Bây giờ, khởi động cụm để tạo ra các sự kiện giao tiếp giữa các node sẽ được thêm vào policy SELinux. Trên nút đầu tiên, khởi động cụm bằng cách thực thi:

  • sudo galera_new_cluster

Tạo database và bảng cho mục đích cụ thể của việc ghi log các sự kiện SST bằng cách chạy như sau trên nút đầu tiên:

  • mysql -u root -p -e 'CREATE DATABASE selinux;
  • CREATE TABLE selinux.selinux_policy (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
  • INSERT INTO selinux.selinux_policy VALUES ();'

Bây giờ khởi động server trên nút thứ hai:

  • sudo systemctl start mariadb

Sau đó, làm tương tự trên nút thứ ba:

  • sudo systemctl start mariadb

Bạn sẽ không thấy bất kỳ kết quả nào cho các lệnh trước đó. Để tạo các sự kiện IST, hãy thực thi các bước sau trên cả ba server :

  • mysql -u root -p -e 'INSERT INTO selinux.selinux_policy VALUES ();'

Bây giờ, hãy tạo và kích hoạt policy SELinux bằng cách thực hiện các lệnh sau trên cả ba server :

  • sudo grep mysql /var/log/audit/audit.log | sudo audit2allow -M Galera

Lệnh đầu tiên này tìm kiếm các sự kiện đã tạo trong file audit.log và chuyển chúng đến một module có tên Galera.pp được tạo bởi công cụ audit2allow . Điều này sẽ dẫn đến kết quả sau:

Output
******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i Galera.pp

Tiếp theo, làm theo hướng dẫn trong kết quả và sử dụng lệnh sau để cài đặt module đã tạo:

  • sudo semodule -i Galera.pp

Bây giờ policy đang hoạt động, hãy tắt chế độ cho phép cho server MariaDB:

  • sudo semanage permissive -d mysqld_t

Đến đây bạn đã tạo thành công policy SELinux và kích hoạt nó, bạn đã sẵn sàng để bắt đầu cụm trong phần tiếp theo.

Bước 7 - Khởi động cụm

Trong bước này, bạn sẽ bắt đầu cụm MariaDB của bạn . Để bắt đầu, bạn cần dừng dịch vụ MariaDB đang chạy để có thể đưa cụm của bạn trực tuyến.

Dừng MariaDB trên cả ba server

Khi dừng dịch vụ MariaDB, điều quan trọng là phải thực hiện hành động này trên server của bạn theo một thứ tự cụ thể. Trình tự tắt này đảm bảo nút đầu tiên sẽ có thể khởi động cụm an toàn khi nó khởi động.

Đầu tiên, chạy lệnh sau trên nút thứ ba:

  • sudo systemctl stop mariadb

Tiếp theo, dừng dịch vụ trên nút thứ hai:

  • sudo systemctl stop mariadb

Cuối cùng, dừng dịch vụ trên nút đầu tiên:

  • sudo systemctl stop mariadb

systemctl không hiển thị kết quả của tất cả các lệnh quản lý dịch vụ, vì vậy đảm bảo bạn đã thành công, hãy sử dụng lệnh sau trên mỗi server của bạn:

  • sudo systemctl status mariadb

Dòng cuối cùng sẽ giống như sau:

Output
. . . Apr 26 03:34:23 galera-node-01 systemd[1]: Stopped MariaDB 10.4.4 database server.

Khi bạn đã tắt mariadb trên tất cả các server , bạn đã sẵn sàng tiếp tục.

Đưa lên nút đầu tiên

Để hiển thị nút đầu tiên, bạn cần sử dụng một tập lệnh khởi động đặc biệt. Theo cách bạn đã cấu hình cụm của bạn , mỗi nút trực tuyến sẽ cố gắng kết nối với ít nhất một nút khác được chỉ định trong file galera.cnf của nó để có được trạng thái ban đầu. Nếu không sử dụng tập lệnh galera_new_cluster cho phép systemd truyền tham số --wsrep-new-cluster , một systemctl start mariadb bình thường sẽ không thành công vì không có nút nào đang chạy cho nút đầu tiên kết nối.

  • sudo galera_new_cluster

Lệnh này sẽ không hiển thị bất kỳ kết quả nào khi thực hiện thành công. Khi tập lệnh này thành công, nút được đăng ký như một phần của cụm và bạn có thể thấy nó bằng lệnh sau:

  • mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Bạn sẽ thấy kết quả sau cho biết có một nút trong cụm:

Output
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+

Trên các node còn lại, bạn có thể bắt đầu mariadb bình thường. Họ sẽ tìm kiếm bất kỳ thành viên nào trong danh sách cụm đang trực tuyến, vì vậy khi họ tìm thấy một thành viên, họ sẽ tham gia vào group .

Đưa lên nút thứ hai

Đến đây bạn có thể hiển thị nút thứ hai. Bắt đầu mariadb :

  • sudo systemctl start mariadb

Không có kết quả nào được hiển thị khi thực hiện thành công. Bạn sẽ thấy kích thước cụm của bạn tăng lên khi mỗi nút trực tuyến:

  • mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Bạn sẽ thấy kết quả sau cho biết nút thứ hai đã tham gia vào cụm và tổng cộng có hai nút.

Output
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+

Đưa lên nút thứ ba

Bây giờ là lúc đưa ra nút thứ ba. Bắt đầu mariadb :

  • sudo systemctl start mariadb

Chạy lệnh sau để tìm kích thước cụm:

  • mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Bạn sẽ thấy kết quả sau cho biết rằng nút thứ ba đã tham gia vào cụm và tổng số nút trong cụm là ba.

Output
+--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+

Đến đây, toàn bộ cụm đang trực tuyến và giao tiếp thành công. Tiếp theo, bạn có thể đảm bảo cài đặt hoạt động bằng cách thử nghiệm sao chép trong phần tiếp theo.

Bước 8 - Kiểm tra nhân rộng

Bạn đã thực hiện các bước cho đến thời điểm này để cụm của bạn có thể thực hiện sao chép từ bất kỳ nút nào sang bất kỳ nút nào khác, được gọi là sao chép hoạt động tích cực. Làm theo các bước sau để kiểm tra và xem liệu bản sao có hoạt động như mong đợi hay không.

Viết cho nút đầu tiên

Bạn sẽ bắt đầu bằng cách áp dụng các thay đổi database trên nút đầu tiên của bạn . Các lệnh sau sẽ tạo một database được gọi là playground và một bảng bên trong database này được gọi là equipment .

  • mysql -u root -p -e 'CREATE DATABASE playground;
  • CREATE TABLE playground.equipment ( id INT NOT NULL AUTO_INCREMENT, type VARCHAR(50), quant INT, color VARCHAR(25), PRIMARY KEY(id));
  • INSERT INTO playground.equipment (type, quant, color) VALUES ("slide", 2, "blue");'

Trong lệnh trước, câu CREATE DATABASE tạo một database có tên là playground . Câu CREATE tạo một bảng có tên equipment bên trong database playground có cột định danh tự động tăng dần được gọi là id và các cột khác. Các type cột, quant cột, và color cột được định nghĩa để lưu trữ các loại, số lượng và màu sắc của các thiết bị tương ứng. Câu INSERT chèn một mục nhập kiểu slide , số lượng 2 và màu blue .

Đến đây bạn có một giá trị trong bảng của bạn .

Đọc và Viết trên nút thứ hai

Tiếp theo, hãy nhìn vào nút thứ hai để xác minh bản sao đang hoạt động:

  • mysql -u root -p -e 'SELECT * FROM playground.equipment;'

Nếu bản sao đang hoạt động, dữ liệu bạn đã nhập trên nút đầu tiên sẽ hiển thị ở đây vào nút thứ hai:

Output
+----+-------+-------+-------+ | id | type | quant | color | +----+-------+-------+-------+ | 1 | slide | 2 | blue | +----+-------+-------+-------+

Từ cùng một nút này, bạn có thể ghi dữ liệu vào cụm:

  • mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("swing", 10, "yellow");'

Đọc và Viết trên nút thứ ba

Từ nút thứ ba, bạn có thể đọc tất cả dữ liệu này bằng cách truy vấn lại bảng:

  • mysql -u root -p -e 'SELECT * FROM playground.equipment;'

Bạn sẽ thấy kết quả sau hiển thị hai hàng:

Output
+----+-------+-------+--------+ | id | type | quant | color | +----+-------+-------+--------+ | 1 | slide | 2 | blue | | 2 | swing | 10 | yellow | +----+-------+-------+--------+

, bạn có thể thêm một giá trị khác từ nút này:

  • mysql -u root -p -e 'INSERT INTO playground.equipment (type, quant, color) VALUES ("seesaw", 3, "green");'

Đọc trên nút đầu tiên

Quay lại nút đầu tiên, bạn có thể xác minh dữ liệu của bạn có ở mọi nơi:

  • mysql -u root -p -e 'SELECT * FROM playground.equipment;'

Bạn sẽ thấy kết quả sau cho biết rằng các hàng có sẵn trên nút đầu tiên.

Output
+----+--------+-------+--------+ | id | type | quant | color | +----+--------+-------+--------+ | 1 | slide | 2 | blue | | 2 | swing | 10 | yellow | | 3 | seesaw | 3 | green | +----+--------+-------+--------+

Bạn đã xác minh thành công rằng bạn có thể ghi vào tất cả các node và việc sao chép đang được thực hiện đúng cách.

Kết luận

Đến đây, bạn đã cấu hình cụm kiểm tra Galera ba nút đang hoạt động. Nếu bạn dự định sử dụng một cụm Galera trong tình huống production , bạn nên bắt đầu với không ít hơn năm nút.

Trước khi sử dụng production , bạn có thể cần xem xét một số tác nhân chuyển ảnh chụp nhanh trạng thái (SST) khác như XtraBackup , cho phép bạn cài đặt các node mới rất nhanh chóng và không bị gián đoạn lớn đối với các node đang hoạt động của bạn. Điều này không ảnh hưởng đến việc sao chép thực tế, nhưng là một mối quan tâm khi các node đang được khởi tạo.

Nếu bạn muốn tiếp tục tìm hiểu về database SQL, hãy xem bài viết Cách quản lý database SQL của ta .


Tags:

Các tin liên quan

Cách sử dụng Chế độ độc lập của Certbot để lấy chứng chỉ SSL của Let's Encrypt trên CentOS 7
2019-05-31
Cách cài đặt và cấu hình Zabbix để giám sát an toàn server từ xa trên CentOS 7
2019-05-29
Cách tạo một cụm Kubernetes bằng Kubeadm trên CentOS 7
2019-04-24
Cách cài đặt và sử dụng ClickHouse trên CentOS 7
2019-04-15
Cách thu thập số liệu cơ sở hạ tầng với Metricbeat trên CentOS 7
2019-03-27
Các bước được đề xuất bổ sung cho server CentOS 7 mới
2019-02-20
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên CentOS 7
2018-12-10
Cách lấy chứng chỉ SSL Wildcard của Let's Encrypt bằng cách sử dụng CloudFlare Validation trên CentOS 7
2018-08-16
Cách cài đặt và cấu hình LEMP bằng Bộ sưu tập phần mềm trên CentOS 7
2018-04-20
Cách thiết lập khóa SSH trên CentOS 7
2018-04-12