Hầu hết các bước cài đặt có sẵn trên Internet đều bao gồm cài đặt trực tuyến tiêu chuẩn, giả sử các máy chủ cơ sở dữ liệu đang có kết nối internet hoạt động với kho lưu trữ gói và đáp ứng tất cả các phụ thuộc. Tuy nhiên, các bước cài đặt và lệnh có một chút khác biệt đối với cài đặt ngoại tuyến. Cài đặt ngoại tuyến là một thực tế phổ biến trong một môi trường nghiêm ngặt và an toàn như lĩnh vực tài chính và quân sự để tuân thủ bảo mật, giảm rủi ro phơi nhiễm và duy trì tính bảo mật.
Trong bài đăng trên blog này, chúng tôi sẽ cài đặt Cụm MariaDB ba nút trong môi trường ngoại tuyến trên máy chủ CentOS. Hãy xem xét ba nút sau cho cài đặt này:
- mariadb1 - 192.168.0.241
- mariadb2 - 192.168.0.242
- mariadb3 - 192.168.0.243
Tải xuống Gói
Phần tốn thời gian nhất là nhận được tất cả các gói cần thiết cho quá trình cài đặt của chúng tôi. Đầu tiên, hãy chuyển đến kho lưu trữ MariaDB tương ứng mà chúng tôi muốn cài đặt (trong ví dụ này, hệ điều hành của chúng tôi là CentOS 7 64bit):
- MariaDB 10.4:http://yum.mariadb.org/10.4/centos7-amd64/rpms/
- MariaDB 10.3:http://yum.mariadb.org/10.3/centos7-amd64/rpms/
- MariaDB 10.2:http://yum.mariadb.org/10.2/centos7-amd64/rpms/
- MariaDB 10.1:http://yum.mariadb.org/10.1/centos7-amd64/rpms/
- MariaDB 10.0:http://yum.mariadb.org/10.0/centos7-amd64/rpms/
Đảm bảo rằng bạn tải xuống cùng một phiên bản nhỏ cho tất cả các gói liên quan đến MariaDB. Trong ví dụ này, chúng tôi đã tải xuống phiên bản MariaDB 10.4.13. Có một loạt các gói trong kho lưu trữ này nhưng chúng ta không cần tất cả chúng chỉ để chạy một MariaDB Cluster. Một số gói đã lỗi thời và dành cho mục đích gỡ lỗi. Đối với MariaDB Galera 10.4 và CentOS 7, chúng tôi cần tải xuống các gói sau từ kho lưu trữ MariaDB 10.4:
- jemalloc
- galera-3 / galera-4
- libzstd
- Bản sao lưu MariaDB
- Máy chủ MariaDB
- Ứng dụng khách MariaDB
- MariaDB đã chia sẻ
- MariaDB chung
- MariaDB compat
Các lệnh wget sau sẽ đơn giản hóa quá trình tải xuống:
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/jemalloc-3.6.0-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/libzstd-1.3.4-1.el7.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
wget http://yum.mariadb.org/10.4/centos7-amd64/rpms/MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm
Một số gói này có phụ thuộc vào các gói khác. Để đáp ứng tất cả, có lẽ tốt nhất bạn nên gắn ảnh ISO của hệ điều hành và trỏ người quản lý gói yum sử dụng ảnh ISO làm kho lưu trữ cơ sở ngoại tuyến để thay thế. Nếu không, chúng tôi sẽ lãng phí rất nhiều thời gian để tải xuống / chuyển các gói từ máy chủ / phương tiện này sang máy chủ / phương tiện khác.
Nếu bạn đang tìm kiếm các gói MariaDB cũ hơn, hãy tra cứu chúng trong kho lưu trữ của nó tại đây. Sau khi tải xuống, hãy chuyển các gói vào tất cả các máy chủ cơ sở dữ liệu qua ổ USB, ổ ghi DVD hoặc bất kỳ bộ lưu trữ mạng nào được kết nối với máy chủ cơ sở dữ liệu.
Gắn cục bộ ảnh ISO
Một số phụ thuộc cần được đáp ứng trong quá trình cài đặt và một cách để đạt được điều này dễ dàng là thiết lập kho lưu trữ yum ngoại tuyến trên các máy chủ cơ sở dữ liệu. Đầu tiên, chúng tôi phải tải xuống ảnh ISO CentOS 7 DVD từ trang nhân bản CentOS gần nhất, trong thư mục "isos":
$ wget http://centos.shinjiru.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
Bạn có thể chuyển ảnh và gắn nó trực tiếp hoặc ghi nó vào đĩa DVD và sử dụng ổ đĩa DVD và kết nối nó với máy chủ. Trong ví dụ này, chúng ta sẽ gắn ảnh ISO dưới dạng DVD trong máy chủ:
$ mkdir -p /media/CentOS
$ mount -o loop /root/CentOS-7-x86_64-DVD-2003.iso /media/CentOS
Sau đó, bật kho lưu trữ CentOS-Media (c7-media) và tắt các kho lưu trữ trực tuyến tiêu chuẩn (cơ sở, bản cập nhật, tính năng bổ sung):
$ yum-config-manager --disable base,updates,extras
$ yum-config-manager --enable c7-media
Chúng tôi hiện đã sẵn sàng cài đặt.
Cài đặt và định cấu hình Máy chủ MariaDB
Các bước cài đặt khá đơn giản nếu chúng ta đã chuẩn bị sẵn tất cả các gói cần thiết. Đầu tiên, bạn nên tắt SElinux (hoặc đặt nó ở chế độ cho phép):
$ setenforce 0
$ sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
Điều hướng đến thư mục chứa tất cả các gói, trong trường hợp này là / root / installer /. Đảm bảo rằng tất cả các gói đều ở đó:
$ cd /root/installer
$ ls -1
galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm
libzstd-1.3.4-1.el7.x86_64.rpm
MariaDB-backup-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-client-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-common-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-compat-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-server-10.4.13-1.el7.centos.x86_64.rpm
MariaDB-shared-10.4.13-1.el7.centos.x86_64.rpm
Trước tiên, hãy cài đặt phụ thuộc mariabackup có tên là socat, sau đó chạy lệnh yum localinstall để cài đặt các gói RPM và đáp ứng tất cả các phụ thuộc:
$ yum install socat
$ yum localinstall *.rpm
Khởi động dịch vụ MariaDB và kiểm tra trạng thái:
$ systemctl start mariadb
$ systemctl status mariadb
Đảm bảo rằng bạn không gặp lỗi trong quá trình này. Sau đó, chạy tập lệnh mysql_secure_installation để định cấu hình mật khẩu gốc MySQL và làm cứng:
$ mysql_secure_installation
Đảm bảo mật khẩu gốc MariaDB giống hệt nhau trên tất cả các máy chủ MariaDB. Tạo người dùng MariaDB để thực hiện sao lưu và SST. Điều này rất quan trọng nếu chúng tôi muốn sử dụng mariabackup được đề xuất làm phương thức SST cho MariaDB Cluster và cũng cho mục đích sao lưu:
$ mysql -uroot -p
MariaDB> CREATE USER [email protected] IDENTIFIED BY 'P455w0rd';
MariaDB> GRANT SELECT, INSERT, CREATE, RELOAD, PROCESS, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT, CREATE TABLESPACE ON *.* TO [email protected];
Chúng ta cần sửa đổi tệp cấu hình mặc định để tải lên các chức năng của Cụm MariaDB. Mở /etc/my.cnf.d/server.cnf và đảm bảo các dòng sau tồn tại cho cấu hình tối thiểu:
[mysqld]
log_error = /var/log/mysqld.log
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.0.241,192.168.0.242,192.168.0.243
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
innodb_flush_log_at_trx_commit=2
wsrep_sst_method=mariabackup
wsrep_sst_auth=backup_user:P455w0rd
wsrep_node_address=192.168.0.241 # change this
Đừng quên thay đổi giá trị wsrep_node_address bằng địa chỉ IP của nút cơ sở dữ liệu cho giao tiếp MariaDB Cluster. Ngoài ra, giá trị wsrep_provider có thể khác nhau tùy thuộc vào máy chủ MariaDB và phiên bản MariaDB Cluster mà bạn đã cài đặt. Tìm đường dẫn libgalera_smm.so và chỉ định nó cho phù hợp tại đây.
Lặp lại các bước tương tự trên tất cả các nút cơ sở dữ liệu và bây giờ chúng tôi đã sẵn sàng để bắt đầu cụm của mình.
Khởi động Cụm
Vì đây là một cụm mới, chúng ta có thể chọn bất kỳ nút nào trong số các nút MariaDB để trở thành nút tham chiếu cho quá trình khởi động cụm. Hãy chọn mariadb1. Đảm bảo MariaDB được dừng trước, sau đó chạy lệnh galera_new_cluster để bootstrap:
$ systemctl stop mariadb
$ galera_new_cluster
$ systemctl status mariadb
Trên hai nút khác (mariadb2 và mariadb3), chúng ta sẽ khởi động nó bằng lệnh bắt đầu MariaDB chuẩn:
$ systemctl stop mariadb
$ systemctl start mariadb
Xác minh xem tất cả các nút có phải là một phần của cụm hay không bằng cách xem trạng thái liên quan đến wsrep trên mọi nút:
MariaDB> SHOW STATUS LIKE 'wsrep%';
Đảm bảo rằng trạng thái được báo cáo là như sau:
wsrep_local_state_comment | Synced
wsrep_cluster_size | 3
wsrep_cluster_status | Primary
Đối với MariaDB 10.4 và Galera Cluster 4, chúng tôi có thể lấy thông tin thành viên cụm trực tiếp từ bảng mysql.wsrep_cluster_members trên bất kỳ nút MariaDB nào:
$ mysql -uroot -p -e 'select * from mysql.wsrep_cluster_members'
Enter password:
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| node_uuid | cluster_uuid | node_name | node_incoming_address |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
| 35177dae-a7f0-11ea-baa4-1e4604dc8f68 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria1.local | AUTO |
| 3e6f9d0b-a7f0-11ea-a2e9-32f4a0481dd9 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria2.local | AUTO |
| fd63108a-a7f1-11ea-b100-937c34421a67 | de82efcb-a7a7-11ea-8273-b7a81016a75f | maria3.local | AUTO |
+--------------------------------------+--------------------------------------+---------------+-----------------------+
Nếu có sự cố xảy ra trong quá trình khởi động cụm, hãy kiểm tra nhật ký lỗi MySQL tại /var/log/mysqld.log trên tất cả các nút MariaDB. Sau khi một cụm được khởi động và đang chạy, không chạy lại tập lệnh galera_new_cluster để khởi động dịch vụ MariaDB. Sẽ là đủ bằng cách sử dụng lệnh "systemctl start / restart mariadb" tiêu chuẩn, trừ khi không còn nút cơ sở dữ liệu nào ở trạng thái CHÍNH nữa. Hãy xem bài đăng trên blog này, Cách khởi động MySQL hoặc MariaDB Cluster để hiểu tại sao bước này lại quan trọng.
Bước thưởng
Bây giờ bạn đã có một cụm cơ sở dữ liệu đang chạy mà không có bất kỳ tính năng quản lý và giám sát nào. Tại sao bạn không nhập cụm cơ sở dữ liệu vào ClusterControl? Cài đặt ClusterControl trên một máy chủ riêng biệt khác và thiết lập SSH không cần mật khẩu từ máy chủ ClusterControl cho tất cả các nút cơ sở dữ liệu. Giả sử IP máy chủ ClusterControl là 192.168.0.240, hãy chạy các lệnh sau trên máy chủ ClusterControl:
$ whoami
root
$ ssh-keygen -t rsa # generate key, press Enter for all prompts
$ ssh-copy-id [email protected] # root password on 192.168.0.241
$ ssh-copy-id [email protected] # root password on 192.168.0.242
$ ssh-copy-id [email protected] # root password on 192.168.0.243
Sau đó đi tới ClusterControl -> Import -> MySQL Galera và nhập chi tiết SSH được yêu cầu:
Trong bước thứ hai trong Xác định Máy chủ MySQL, hãy tắt "Khám phá nút tự động "và chỉ định tất cả địa chỉ IP của các nút cơ sở dữ liệu và đảm bảo có dấu tích màu xanh lá cây bên cạnh địa chỉ IP, cho biết ClusterControl có thể truy cập nút thông qua SSH không cần mật khẩu:
Nhấp vào Nhập và đợi cho đến khi công việc nhập hoàn tất. Bạn sẽ thấy nó trong danh sách cụm:
Bạn đang có trong tay tốt. Lưu ý rằng ClusterControl sẽ mặc định có các tính năng doanh nghiệp đầy đủ trong 30 ngày và sau khi hết hạn, nó sẽ mặc định trở lại Phiên bản Cộng đồng, miễn phí vĩnh viễn.