搭建MariaDB Galera 同步复制
来源:互联网 发布:快3开奖源码 编辑:程序博客网 时间:2024/05/16 08:27
搭建同步复制的数据库集群,使用MariaDB Galera 且至少需要预先搭建三台Linux服务器。
其中在上一篇博客中有一步是需要修改wsrep.cnf这个文件中的三个参数,其中
wsrep_cluster_address="gcomm://192.168.131.145
其中那个IP地址表示的是相对于本台Linux所表示的节点的上一个服务器节点的IP地址。如果本台Linux服务器是第一个节点,那么所填写的就是本台Linux的IP
例如我搭建了三台Linux:Ip分别为
其中第一节点的此处填写的是本机IP,第二节点填写的是第一节点的IP,第三节点填写的是第二节点的IP以此类推。
wsrep.cnf文件内容如下所示(加粗为修改内容)
[root@localhost ~]# vi /etc/my.cnf.d/wsrep.cnf# This file contains wsrep-related mysqld options. It should be included# in the main MySQL configuration file.## Options that need to be customized:# - wsrep_provider# - wsrep_cluster_address# - wsrep_sst_auth# The rest of defaults should work out of the box.#### mysqld options _MANDATORY_ for correct opration of the cluster##[mysqld]# (This must be substituted by wsrep_format)binlog_format=ROW# Currently only InnoDB storage engine is supporteddefault-storage-engine=innodb# to avoid issues with 'bulk mode inserts' using autoincinnodb_autoinc_lock_mode=2# Override bind-address# In some systems bind-address defaults to 127.0.0.1, and with mysqldump SST# it will have (most likely) disastrous consequences on donor nodebind-address=0.0.0.0#### WSREP options### Enable wsrepwsrep_on=1# Full path to wsrep provider library or 'none'wsrep_provider=/usr/lib64/galera/libgalera_smm.so // 修改部分# Provider specific configuration options#wsrep_provider_options=# Logical cluster name. Should be the same for all nodes.wsrep_cluster_name="my_wsrep_cluster"# Group communication system handlewsrep_cluster_address="gcomm://192.168.131.145"// 修改部分/wsrep_sst_auth## WSREP State Transfer options### State Snapshot Transfer methodwsrep_sst_method=rsync# Address which donor should send State Snapshot to.# Should be the address of THIS node. DON'T SET IT TO DONOR ADDRESS!!!# (SST method dependent. Defaults to the first IP of the first interface)#wsrep_sst_receive_address=# SST authentication string. This will be used to send SST to joining nodes.# Depends on SST method. For mysqldump method it is root:<root password>wsrep_sst_auth=sst:123456 // 修改部分# Desired SST donor name.#wsrep_sst_donor=# Reject client queries when donating SST (false)#wsrep_sst_donor_rejects_queries=0# Protocol version to use# wsrep_protocol_version=
配置完成,开始启动服务器。
首先使用语句:
ps aux|grep mysql
查看有无异常,然后关闭mysql
service mysql stop
会显示如下内容
Shutting down MySQL..... SUCCESS!
此时表示mysql已经关闭,一定要确保三台机子的mysql都是出于关闭状态。
首先启动第一个节点使用:
启动第一节点
service mysql bootstrap
成功之后使用本地权限登录数据库。
show status like 'wsrep%';
使用这句话,如出现如下如中标红则表示成功
此时如果出现如下情况:
[root@localhost ~]# mysql -uroot -prootERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
首先查mysql端口的占用情况
[root@localhost ~]# ps -A|grep mysql 2514 ? 00:00:00 mysqld_safe 2969 ? 00:00:00 mysqld 3423 pts/0 00:00:00 mysqld_safe 3785 pts/0 00:00:00 mysqld
然后杀死这些进程再次启动
[root@localhost ~]# kill -9 2514[root@localhost ~]# kill -9 2969[root@localhost ~]# kill -9 3423-bash: kill: (3423) - No such process[root@localhost ~]# kill -9 3785-bash: kill: (3785) - No such process[root@localhost ~]# ps -A|grep mysql[root@localhost ~]# service mysql bootstrapBootstrapping the cluster.. Starting MySQL.170929 03:53:06 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.170929 03:53:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql... SUCCESS!
启动第二节点
第二节点一定要在第一节点启动之后再启动,这样才能启动成功否则会出现如下情况
[root@localhost ~]# service mysql startStarting MySQL.170929 05:01:43 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.170929 05:01:43 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql.................................... ERROR!
待第一节点启动完毕之后再次使用语句service mysql start
出现如下情况
[root@localhost ~]# service mysql startStarting MySQL...........170929 05:16:53 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.170929 05:16:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql...........SST in progress, setting sleep higher................................ SUCCESS!
当出现mysql
的时候,那么意味着一定会成功启动,但是这个过程根据机器性能会很慢。我的就是等待了很多个………..之后才成功启动。
...........SST in progress, setting sleep higher....
第三个节点以此类推,但是搭建同步复制至少需要三个节点。
再运行节点之前必须在各个节点检查集群的状态
//运行本地mysql账户mysql -uroot -pMariaDB [(none)]> show status like 'wsrep%';
会出现如下图所示的:
+------------------------------+--------------------------------------+| Variable_name | Value |+------------------------------+--------------------------------------+| wsrep_local_state_uuid | 07bfd155-ac9c-11e6-bcfd-8a32fed329f7 || wsrep_protocol_version | 7 || wsrep_last_committed | 2 || 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 | 6 || wsrep_received_bytes | 398 || 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 | , || wsrep_desync_count | 0 || wsrep_evs_delayed | || wsrep_evs_evict_list | || wsrep_evs_repl_latency | 0/0/0/0/0 || wsrep_evs_state | OPERATIONAL || wsrep_gcomm_uuid | 162f9df1-acb3-11e6-99a4-cb92a5f5e579 || wsrep_cluster_conf_id | 2 || wsrep_cluster_size | 2 || wsrep_cluster_state_uuid | 07bfd155-ac9c-11e6-bcfd-8a32fed329f7 || wsrep_cluster_status | Primary || wsrep_connected | ON || wsrep_local_bf_aborts | 0 || wsrep_local_index | 0 || wsrep_provider_name | Galera || wsrep_provider_vendor | Codership Oy || wsrep_provider_version | 3.19(rb98f92f) || wsrep_ready | ON |+------------------------------+--------------------------------------+
其中相关的解释:
集群完整性检查
1. wsrep_cluster_state_uuid
在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群。
2. wsrep_cluster_conf_id
正常情况下所有节点上该值是一样的,如果值不同,说明该节点被临时”分区”了。当节点之间网络连接恢复的时候应该会恢复一样的值。
3. wsrep_cluster_size
当前集群的节点个数,如果这个值跟预期的节点数一致,则所有的集群节点已经连接。
4. wsrep_cluster_status
集群组成的状态如果不为”Primary”,说明出现”分区”或是”split-brain”状况。
节点状态检查
5. wsrep_ready
该值为ON,则说明可以接受SQL负载,如果为Off,则需要检查wsrep_connected。
6. wsrep_connected
如果该值为Off,且wsrep_ready值也为Off,说明该节点没有连接到集群,可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的,具体错误需要查看日志。
7. wsrep_local_state_comment
如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因。
复制健康检查
8. wsrep_flow_control_paused
表示复制停止了多长时间,集群因为Slave延迟而慢多少。该值为0~1之间,越靠近0越好,值为1表示复制完全停止。可优化wsrep_slave_threads来改善。
9. wsrep_cert_deps_distance
有多少事务可以并行处理,wsrep_slave_threads设置的值不应该高出该这个太多。
10. wsrep_flow_control_sent
表示该节点已经停止复制了多少次。
11. wsrep_local_recv_queue_avg
表示slave事务队列的平均长度,slave有没有瓶颈,可以从这里看。最慢节点的wsrep_flow_control_sent和wsrep_local_recv_queue_avg值都是最高的,这两个值越低越好。
检测慢网络问题
12. wsrep_local_send_queue_avg
网络瓶颈的预兆,如果这个值比较高的话,可能存在网络瓶颈。
冲突或死锁的数目
13. wsrep_last_committed
最后提交的事务数目。
14. wsrep_local_cert_failures/wsrep_local_bf_aborts
回滚/检测到的冲突数目。
有了同步复制,不能再实际项目中发挥真正的优势,还需要搭建高可用的MyCat消息中间件才行,请关注下一篇博客
- 搭建MariaDB Galera 同步复制
- LVS+MariaDB+Galera 环境搭建
- 【Mariadb】centos7搭建mariadb Galera集群
- centos7 系统上 mariadb galera 集群搭建
- 【Mariadb】centos7搭建mariadb Galera集群--v1.0(成功)
- Linux下MySQL/MariaDB Galera集群搭建过程
- MariaDB Galera Cluster安装搭建及高可用测试
- Linux下MySQL/MariaDB Galera集群搭建过程
- Linux下MySQL/MariaDB Galera集群搭建过程
- Linux下MySQL/MariaDB Galera集群搭建过程
- mysql、mariadb-半同步复制
- Mariadb Galera 集群选用
- MariaDB Galera Cluster 部署
- MariaDB Galera Cluster 部署
- MariaDB Galera Cluster 安装
- 安装MariaDB Galera Cluster
- mariadb galera 集群部署
- centos mariadb galera 多主同步 haprox keepalive 集群热备
- 集合各实现类的底层实现原理
- Python实现中文词云(wordcloud),根据背景图片生成词云
- Java--泛型
- python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
- 双向循环链表--增删查操作
- 搭建MariaDB Galera 同步复制
- 烦心事
- 超全面的JavaWeb笔记day17<JDBC>
- python3 函数参数
- Java ArrayList源码分析
- javascript实现后购物界面添加一类
- 使用IntelliJ IDEA 配置Maven详解
- 617. Merge Two Binary Trees
- CCF-20170301-分蛋糕(100分)