[关闭]
@Alex-Zhao 2018-04-17T15:23:56.000000Z 字数 5322 阅读 79

MariaDB&Galera集群

数据库


linuxadmin.io/Galera Cluster MariaDB Configuration On CentOS7

Galera集群是一个真正使用同步复制的多主mysql集群,它允许任意节点作为master节点以及自动添加节点和删除节点。这种多主集群配置不同于传统的MySQL主从,它能更好的提供负载均衡和容错功能。以下内容将帮助你配置基本的Galera集群和MariaDB在Centos7中。我们选择配置3个节点,这也是Galera集群的最小规模。如果你想配置两个节点作为集群,当其中一个节点出现故障或者脱离集群,另一个节点将停止工作。

安装Galera和MariaDB

首先在3个节点上分别安装MariaDB version 10.1
1. 配置yum源

  1. vim /etc/yum.repos.d/MariaDB10.1.repo
  2. -----
  3. # MariaDB 10.1 CentOS repository list - created 2017-08-10 00:39 UTC
  4. # http://downloads.mariadb.org/mariadb/repositories/
  5. [mariadb]
  6. name = MariaDB
  7. baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  8. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  9. gpgcheck=1
  10. ---
  1. 通过yum安装Galera所需要的软件
  1. yum -y install MariaDB-server MariaDB-client MariaDB-common
  1. 成功安装完yum,安装数据库
  1. mysql_secure_installation
  1. Galera支持多种同步复制,这里我们选择rsync,我们还使用lsof检验服务器端口是否正常
  1. yum install -y rsync lsof
  1. 在所有节点设置MariaDB开机自启动
  1. systemctl enable mariadb

Galera主节点配置

  1. 安装完MariaDB,在主节点编辑/etc/my.cnf.d/server.cnf文件
  1. vim /etc/my.cnf.d/server.cnf
  1. 在[galera]选项下插入如下内容
  1. binlog_format=ROW
  2. default-storage-engine=innodb
  3. innodb_autoinc_lock_mode=2
  4. bind-address=0.0.0.0
  5. wsrep_on=ON #开启MariaDB的复制功能,该功能默认是关闭的
  6. wsrep_provider=/usr/lib64/galera/libgalera_smm.so
  7. wsrep_cluster_address="gcomm://192.168.1.100,192.168.1.101,192.168.1.102" #主节点写最前边,逗号分隔集群中所有IP。
  8. ## Galera Cluster Configuration
  9. wsrep_cluster_name="cluster1" #集群名称自己任意定义
  10. ## Galera Synchronization Configuration
  11. wsrep_sst_method=rsync #同步复制方法,我们这里用rsync,官方文档有详细说明。
  12. ## Galera Node Configuration
  13. wsrep_node_address="192.168.1.100" #当前节点IP
  14. wsrep_node_name="centos7-vm1" #当前节点名称,自己任意定义需要集群中唯一,建议主机名
  1. 在[mysqld]中插入log目录,如果不配置,默认log记录在系统主log中
  1. log_error=/var/log/mariadb.log
  1. 创建log文件
  1. touch /var/log/mariadb.log
  1. 给maria日志文件权限
  1. chown mysql:mysql /var/log/mariadb.log
  1. 现在开始启动MariaDB
  1. galera_new_cluster
  1. 通过lsof查看端口是否开启
  1. lsof -i:3306 #3306是MySQL client连接使用
  2. lsof -i:4567 #用途数据库数据复制流量,本人在这里配置的时候 该端口并未开启,而是在其他节点开启后,主节点的4567才开启。

如果你想开启Centos 7中的firewall,需要做如下配置:

  1. firewall-cmd --zone=public --add-service=mysql --permanent
  2. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  3. firewall-cmd --zone=public --add-port=4567/tcp --permanent
  4. firewall-cmd --zone=public --add-port=4567/udp --permanent
  5. firewall-cmd --reload #重新加载firewall
  1. 确保主节点的数据库已经启动
  1. mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
  2. #显示如下信息说明集群中已经有一个节点。
  3. +--------------------+-------+
  4. | Variable_name | Value |
  5. +--------------------+-------+
  6. | wsrep_cluster_size | 1 |
  7. +--------------------+-------+

配置集群其他节点

  1. 在server.cnf文件中[galera]选项中配置信息和主节点一致,以下配置项需要修改当前节点信息:
  1. wsrep_node_address="192.168.1.100"
  2. wsrep_node_name="centos7-vm1"
  1. 完成配置后,开启MariaDB服务
  1. systemctl start mariadb

进入数据库查看集群节点数

  1. MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
  2. #当三个节点全部开启MariaDB服务,集群节点值显示3
  3. +--------------------+-------+
  4. | Variable_name | Value |
  5. +--------------------+-------+
  6. | wsrep_cluster_size | 3 |
  7. +--------------------+-------+

你也可以查看log信息显示如下,说明添加节点成功:

  1. WSREP: Member 1.0 (centos7-vm2) synced with group.

当节点离开,log信息也会有显示:

  1. WSREP: forgetting 96a5eca6 (tcp://192.168.1.101:4567)
  2. WSREP: New COMPONENT: primary = yes, bootstrap = no, my_idx = 0, memb_num = 2

在数据库中也能看到Galera集群的所有配置信息:

  1. MariaDB [(none)]> show status like 'wsrep%';
  2. +------------------------------+--------------------------------------------------------+
  3. | Variable_name | Value |
  4. +------------------------------+--------------------------------------------------------+
  5. | wsrep_apply_oooe | 0.000000 |
  6. | wsrep_apply_oool | 0.000000 |
  7. | wsrep_apply_window | 1.000000 |
  8. | wsrep_causal_reads | 0 |
  9. | wsrep_cert_deps_distance | 1.000000 |
  10. | wsrep_cert_index_size | 2 |
  11. | wsrep_cert_interval | 0.000000 |
  12. | wsrep_cluster_conf_id | 3 |
  13. | wsrep_cluster_size | 3 |
  14. | wsrep_cluster_state_uuid | 6173c852-7ca0-11e7-8d8e-0e2551d18de1 |
  15. | wsrep_cluster_status | Primary |
  16. | wsrep_commit_oooe | 0.000000 |
  17. | wsrep_commit_oool | 0.000000 |
  18. | wsrep_commit_window | 1.000000 |
  19. | wsrep_connected | ON |
  20. | wsrep_desync_count | 0 |
  21. | wsrep_evs_delayed | |
  22. | wsrep_evs_evict_list | |
  23. | wsrep_evs_repl_latency | 0/0/0/0/0 |
  24. | wsrep_evs_state | OPERATIONAL |
  25. | wsrep_flow_control_paused | 0.000000 |
  26. | wsrep_flow_control_paused_ns | 0 |
  27. | wsrep_flow_control_recv | 0 |
  28. | wsrep_flow_control_sent | 0 |
  29. | wsrep_gcomm_uuid | 87a5891a-7ca0-11e7-a3bb-fe31f8409645 |
  30. | wsrep_incoming_addresses | 192.168.1.101:3306,192.168.1.7:3306,192.168.1.100:3306 |
  31. | wsrep_last_committed | 2 |
  32. | wsrep_local_bf_aborts | 0 |
  33. | wsrep_local_cached_downto | 1 |
  34. | wsrep_local_cert_failures | 0 |
  35. | wsrep_local_commits | 0 |
  36. | wsrep_local_index | 1 |
  37. | wsrep_local_recv_queue | 0 |
  38. | wsrep_local_recv_queue_avg | 0.125000 |
  39. | wsrep_local_recv_queue_max | 2 |
  40. | wsrep_local_recv_queue_min | 0 |
  41. | wsrep_local_replays | 0 |
  42. | wsrep_local_send_queue | 0 |
  43. | wsrep_local_send_queue_avg | 0.000000 |
  44. | wsrep_local_send_queue_max | 1 |
  45. | wsrep_local_send_queue_min | 0 |
  46. | wsrep_local_state | 4 |
  47. | wsrep_local_state_comment | Synced |
  48. | wsrep_local_state_uuid | 6173c852-7ca0-11e7-8d8e-0e2551d18de1 |
  49. | wsrep_protocol_version | 7 |
  50. | wsrep_provider_name | Galera |
  51. | wsrep_provider_vendor | Codership Oy <info@codership.com> |
  52. | wsrep_provider_version | 25.3.20(r3703) |
  53. | wsrep_ready | ON |
  54. | wsrep_received | 8 |
  55. | wsrep_received_bytes | 1169 |
  56. | wsrep_repl_data_bytes | 359 |
  57. | wsrep_repl_keys | 1 |
  58. | wsrep_repl_keys_bytes | 31 |
  59. | wsrep_repl_other_bytes | 0 |
  60. | wsrep_replicated | 1 |
  61. | wsrep_replicated_bytes | 454 |
  62. | wsrep_thread_count | 2 |
  63. +------------------------------+--------------------------------------------------------+

测试Galera集群功能

  1. 在任意节点通过MariaDB client连入数据库,创建数据库
  1. mysql -u root -p -e "create database galera_test;"
  1. 查看集群中所有节点,都存在galera_test数据库
  1. MariaDB [(none)]> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | galera_test |
  6. | information_schema |
  7. | mysql |
  8. | performance_schema |
  9. +--------------------+
  10. 4 rows in set (0.00 sec)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注