ITPub博客

首页 > 应用开发 > IT综合 > CentOS6.5 64bit + MariaDB 10.0.30 + Galera Cluster 10.0.30 集群部署安装

CentOS6.5 64bit + MariaDB 10.0.30 + Galera Cluster 10.0.30 集群部署安装

原创 IT综合 作者:百联达 时间:2017-04-14 12:07:47 0 删除 编辑
一:服务器

10.44.66.2           mdb01
10.116.148.103    mdb02
10.170.142.108    mdb03

二:集群安装

1.添加 /etc/yum.repos.d/mariadb.repo 文件

name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2.关闭SELinux

sudo setenforce 0

3.网络问题

数据库服务器,通常是内网服务器,可能不会开通对公网的访问。此时可以通过tinyproxy建立一台代理服务器。

配置yum对代理的使用   vi /etc/yum.conf

添加  proxy=http://代理服务器IP:端口   同时也可以增加参数timeout的数组

4.安装 socat

yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/socat-1.7.2.3-1.el6.x86_64.rpm

5.安装 MariaDB Galera Cluster 10.0.30 软件

 yum install MariaDB-Galera-server MariaDB-client rsync galera

6.yum源下载太慢的话,可以把相应的rpm包下载后,上传到 /var/cache/yum/x86_64/6/mariadb/packages 再执行上述命令。

7.MariaDB 安全设置

启动Mysql      sudo service mysql start

运行脚本 sudo /usr/bin/mysql_secure_installation

可以设置root用户的密码,其它保持Y就行。

8. 设置MariaDB Cluster 用户。
其中sstUser 是State Transfer Snapshot (SST) 的用戶,用来与其它数据库
node进行通信。
mysql -u root -p
DELETE FROM mysql.user WHERE user='';
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'pwd' with grant option;
GRANT ALL ON *.* TO 'sstUser'@'%' IDENTIFIED BY 'pwd' with grant option;
FLUSH PRIVILEGES;
quit

三: 集群配置

1.  配置/etc/hosts文件

10.44.66.2 mdb01
10.116.148.103 mdb02
10.170.142.108 mdb03

2. 停止所有node节点的服务

sudo  service mysql stop

3.配置MariaDB Cluster Config 信息(/etc/my.cnf.d/ server.cnf,client.cnf,mysql-clients.cnf 参考模板:/usr/share/mysql/my-large.cnf)
mdb01

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb01'
wsrep_node_name='mdb01'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2



mdb02

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb02'
wsrep_node_name='mdb02'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2


mdb03

[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://mdb01,mdb02,mdb03"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='mdb03'
wsrep_node_name='mdb03'
wsrep_sst_method=rsync
wsrep_sst_auth=sstUser:$Fortune2015
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2

4. 在主节点上启动(只在主节点)

sudo /etc/init.d/mysql start --wsrep-new-cluster

5.启动其它子节点  sudo service mysql start

6.查看状态

show status like 'wsrep%'

+------------------------------+------------------------------------------------+
| Variable_name                | Value                                          |
+------------------------------+------------------------------------------------+
| wsrep_local_state_uuid       | 14c14190-20b8-11e7-8e57-ab643513795c           |
| wsrep_protocol_version       | 7                                              |
| wsrep_last_committed         | 0                                              |
| wsrep_replicated             | 0                                              |
| wsrep_replicated_bytes       | 0                                              |
| wsrep_repl_keys              | 0                                              |
| wsrep_repl_keys_bytes        | 0                                              |
| wsrep_repl_data_bytes        | 0                                              |
| wsrep_repl_other_bytes       | 0                                              |
| wsrep_received               | 10                                             |
| wsrep_received_bytes         | 686                                            |
| wsrep_local_commits          | 0                                              |
| wsrep_local_cert_failures    | 0                                              |
| wsrep_local_replays          | 0                                              |
| wsrep_local_send_queue       | 0                                              |
| wsrep_local_send_queue_max   | 2                                              |
| wsrep_local_send_queue_min   | 0                                              |
| wsrep_local_send_queue_avg   | 0.500000                                       |
| wsrep_local_recv_queue       | 0                                              |
| wsrep_local_recv_queue_max   | 1                                              |
| wsrep_local_recv_queue_min   | 0                                              |
| wsrep_local_recv_queue_avg   | 0.000000                                       |
| wsrep_local_cached_downto    | 18446744073709551615                           |
| wsrep_flow_control_paused_ns | 0                                              |
| wsrep_flow_control_paused    | 0.000000                                       |
| wsrep_flow_control_sent      | 0                                              |
| wsrep_flow_control_recv      | 0                                              |
| wsrep_cert_deps_distance     | 0.000000                                       |
| wsrep_apply_oooe             | 0.000000                                       |
| wsrep_apply_oool             | 0.000000                                       |
| wsrep_apply_window           | 0.000000                                       |
| wsrep_commit_oooe            | 0.000000                                       |
| wsrep_commit_oool            | 0.000000                                       |
| wsrep_commit_window          | 0.000000                                       |
| wsrep_local_state            | 4                                              |
| wsrep_local_state_comment    | Synced                                         |
| wsrep_cert_index_size        | 0                                              |
| wsrep_causal_reads           | 0                                              |
| wsrep_cert_interval          | 0.000000                                       |
| wsrep_incoming_addresses     | mdb03:3306,mdb01:3306,mdb02:3306               |
| wsrep_desync_count           | 0                                              |
| wsrep_evs_delayed            |                                                |
| wsrep_evs_evict_list         |                                                |
| wsrep_evs_repl_latency       | 0.00159676/0.00171488/0.00201301/0.000173143/4 |
| wsrep_evs_state              | OPERATIONAL                                    |
| wsrep_gcomm_uuid             | 14c00757-20b8-11e7-8a76-4ee0e6b33d41           |
| wsrep_cluster_conf_id        | 3                                              |
| wsrep_cluster_size           | 3                                              |
| wsrep_cluster_state_uuid     | 14c14190-20b8-11e7-8e57-ab643513795c           |
| wsrep_cluster_status         | Primary                                        |
| wsrep_connected              | ON                                             |
| wsrep_local_bf_aborts        | 0                                              |
| wsrep_local_index            | 1                                              |
| wsrep_provider_name          | Galera                                         |
| wsrep_provider_vendor        | Codership Oy              |
| wsrep_provider_version       | 25.3.19(r3667)                                 |
| wsrep_ready                  | ON                                             |
| wsrep_thread_count           | 2                                              |
+------------------------------+------------------------------------------------+

四: 在任意一个node节点上,创建数据库,表,添加数据。  停掉某个节点,再恢复。

验证集群的一致性和能否正常工作。

五:普及知识点:GALERA监控



1、常用指令
查看版本:SHOW GLOBAL STATUS LIKE"wsrep_provider_version";
查看wsrep有关的所有变量:SHOW VARIABLES LIKE "wsrep%" \G
查看GALERA集群状态:SHOW STATUS LIKE "wsrep%";
1、集群完整性检查
wsrep_local_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群
wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时”分区”了.当节点之间网络连接恢复的时候应该会恢复一样的值.
wsrep_cluster_status:集群组成的状态.如果不为”PRIMARY”,说明出现”分区”或是”split-brain”状况.
2、节点状态检查
wsrep_ready:该值为ON,则说明可以接受SQL负载.如果为Off,则需要检查wsrep_connected
wsrep_connected:如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群.(可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的.具体错误需要查看错误日志)
wsrep_local_state_comment:如果wsrep_connected为ON,但wsrep_ready为OFF,则可以从该项查看原因
3、复制健康检查:
wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为SLAVE延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善
wsrep_cert_deps_distance:有多少事务可以并行应用处理.wsrep_slave_threads设置的值不应该高出该值太多.
wsrep_flow_control_sent:表示该节点已经停止复制了多少次
wsrep_local_recv_queue_avg:表示SLAVE事务队列的平均长度.slave瓶颈的预兆.
最慢的节点的wsrep_flow_control_sent和wsrep_local_recv_queue_avg这两个值最高.这两个值较低的话,相对更好.
5、检测慢网络问题:
  wsrep_local_send_queue_avg:网络瓶颈的预兆.如果这个值比较高的话,可能存在网络瓶
5)冲突或死锁的数目:
  wsrep_last_committed:最后提交的事务数目
  wsrep_local_cert_failures和wsrep_local_bf_aborts:回滚,检测到的冲突数目
Galera的状态快照转移(SST)
  SST允许新接入的节点使用定制的方法来获取最初的数据,当前mysql支持三种SST方法:
  1、mysqldump
    这需要接收服务器在转移前完全初始化和准备接收连接。此方法是通过定义阻塞,阻止修改自身状态转移的持续时间。这也是最慢的方式,可能会带来高负载的问题。
  2、rsync
   最快的方式,也是galera默认使用的方式。rsync脚本运行在发送和接收端上。在接收端,开启rsync服务模式,等待发送端连接。在发送端,开启rsync客户端模式,发送mysql数据目录内容到连接节点。这种方法也会阻塞,但是比mysqldump快。
  3、xtrabackup
   也很快,但需要额外安装。
 
####搭建集群注意几个参数:
Binlog_format=ROW###日志格式必须为ROW
Default_storage_engine=INNODB
Innodb_autoinc_lock_mod2=2 ###指定innodb自增长列锁模式,2为交叉锁模式,多个语句能同时执行
INNODB_LOCKS_UNSAFE_FOR_BINLOG=1
 WSREP_CLUSTER_NAME=CLUSTER_NAME###CLUSTER的名字
WSREP_CLUSTER_ADDRESS=GCOMM://IP1,IP2###集群中所有的node-ip,貌似只写本地也没问题,就是启动的时候写第一节点的IP 即可
Wsrep_node_address=ip ---每个节点配置为自己的IP
WSREP_PROVIDER=/USR/LOCAL/LIB/LIBGALERA_SMM.SO##指定GALERA库文件,PXC自带该库文件,MARIADB GALERA 需要安装GALERA
WSREP_SST_METHOD=RSYNC/XTRABACKUP  #指定SST方式,支持RSYNC(最快,需要表锁),MYSQLDUMP和XTRABACKUP
WSREP_SST_AUTH=SST:123456     ----传输的用户
第一节点启动:不能用mysqld启动
应该为##./mysqld_safe –defaults-file=/etc/my.cnf –wsrep-cluster-address=”gcomm://”&

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28624388/viewspace-2137268/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
15年以上互联网经验,先后从事过制造业,证券业,物业行业和物流行业信息系统和互联网产品的设计落地实施,8年系统架构经验。最近关注企业数字化转型、财务数字化服务共享、大语言模型、Kubernetes微服务架构和Istio微服务治理框架。

注册时间:2013-02-05

  • 博文量
    332
  • 访问量
    1265624