Cấu hình Galera server cho MariaDB
Mysql
40
MariaDB
4
Galera
1
White

Trần Thành viết ngày 08/12/2015

Maria Galera Cluster là gì

Gần đây tôi có một task liên quan đến cấu hình Galera server cho MariaDB. Cho những bạn nào chưa biết thì MariaDB là một bản fork của MySQL với một số tính năng nâng cấp hơn. MariaDB có một công cụ tạo ra nhiều bản sao giống hệt nhau trên nhiều máy chủ khác nhau, phục vụ cho mục đích backup dữ liệu, gọi là Maria Galera Cluster. Về mặt kiến trúc thì Maria Galera Cluster tương tự với Mysql Cluster.

Maria Galera Cluster là một synchronous multi-master cluster, có nghĩ là tự động đồng bộ trong nội bộ cụm mà node nào cũng có thể coi là master.

MariaDB Galera Cluster

Cài đặt

Ở đây Linux distro là CentOS6. Galera Cluster được gói sẵn trong bản MariaDB từ 10.1 trở lên, và phát hành riêng với bản 10.0 hoặc 5.5. Vì vậy tôi sẽ install luôn bản mới nhất. Việc đầu tiên là tạo một file repo cho yum.

Tạo file repo

$ vim /etc/yum.repos.d/MariaDB.repo
### content
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
### content

Remove mysql

Sau đó bạn cần remove hết cac bản mysql nếu đã cài đặt sẵnbackup lại thư mục đã dùng. Nếu bạn chưa cài mysql thì có thể bỏ qua bước này

$ yum list installed | grep mysql
$ yum remove mysql-community-common.x86_64

Cài đặt MariaDB 10.1

Bây giờ chỉ cần cài đặt và bật MariaDB lên.

$ yum install MariaDB-server MariaDB-client
$ /etc/init.d/mysql start

Vì bản MariaDB này (hiện tại là 10.1.9) đã chứa Galera Cluster nên phần cài đặt đến đây coi là xong.

Cấu hình

Bây giờ sẽ là phần cấu hình và kiểm tra hoạt động của Galera Cluster. Giả sử chúng ta có 2 máy A và B với IP là 192.168.10.1192.168.10.2.

Cấu hình cho từng máy chủ

Trong mỗi máy chủ tìm đến file cấu hình /etc/my.cnf.d/server.cnf, tìm đến mục [galera] và thêm thông tin như sau như sau

[galera] 
wsrep_on=ON
wsrep_provider='/usr/lib64/galera/libgalera_smm.so'
wsrep_cluster_address=gcomm://192.168.10.1 # IP of other node!!!
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

Ở giá trị của wsrep_cluster_address bạn lưu ý, phải nhập IP của node còn lại. VD với máy A (192.168.10.1) thì nhập 192.168.10.2 và với máy B(192.168.10.2) thì nhập 192.168.10.1.

Bây giờ khi mỗi máy được khởi động lên thì sẽ tự động hiểu "node bên cạnh" của mình là thằng nào và thiết lập kết nối.

Khởi động máy chủ thành cụm

Bây giờ chúng ta khởi động máy chủ đầu tiên, giả sử là khởi động máy A

$ service mysql stop
$ service mysql start --wsrep-new-cluster

Bây giờ máy A đã tạo ra một cụm (cluster) mới. Để join máy B vào cụm này thì chỉ đơn giản

$ service mysql stop
$ service mysql start

Kiểm tra

Để test xem Maria Galera đã thực sự làm việc chưa, đầu tiên có thể vào từng máy và query trạng thái của cụm.

$ mysql -u root -p
# Enter password
> show status like 'wsrep_incoming_addresses';
# 192.168.10.1:3306,192.168.10.2:3306

Hơn thế nữa có thể thử tạo một thay đổi trong máy A, ở đây là tạo một database mới.

[root@A ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 60
Server version: 10.1.9-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> create database galera_test;

Kế đó kiểm tra máy chủ B

[root@B ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 60
Server version: 10.1.9-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| galera_test        |
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]>

Chúc các bạn may mắn.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Trần Thành

6 bài viết.
32 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
16 8
GET request curl để thực hiện một GET request thì thật đơn giản bash $ curl http://google.com POST request giả lập form curl để thực hiện PO...
Trần Thành viết hơn 2 năm trước
16 8
White
13 8
Tạo một lúc nhiều file hay directory Tạo một lúc nhiều directory với mkdir và dấu {} bash mkdir {log_1,log_2,log_3} (Ảnh) Tạo một lúc nhiều fi...
Trần Thành viết gần 3 năm trước
13 8
White
9 1
Peco Hôm trước tôi có thấy một bạn cũng hướng dẫn cài đặt và sử dụng peco trên Kipalog ở (Link). Vì vậy phần cài đặt thì các bạn có thể tham khảo ...
Trần Thành viết gần 3 năm trước
9 1
Bài viết liên quan
Male avatar
19 0
Mysql innodb internal là một chủ đề khá sâu. Bản thân tôi cũng chưa bao quát hết. Bài viết này chỉ cung cấp một cái nhìn sơ lược. Để các bạn khôn...
manhdung viết hơn 2 năm trước
19 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
6 bài viết.
32 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!