MySQL复制: Galera

MySQL复制: Galera

mysql 主从复制

大纲

  • MySQL复制: Galera

    • 前言
    • Galera Replication简介
    • MariaDB-Galera-Server
    • 环境部署
    • 配置步骤
    • 总结

前言

之前介绍了MySQL复制的各种解决方案, 但是我个人还是感觉Galera最好用也最实用, 什么是Galera, 它强大在哪里, 这篇文章就带你认识这个强大的工具

Galera Replication简介

Galera Repplication

  • Galera复制发生在事务提交时, 通过广播事务写集群应用
  • 客户端直接连接到 Galera Cluster DMBS就和连接到原生的DBMS一样
  • wsrep API, 定义了Galera和DBMS之间的接口

Galera Cluster的特点

Galera是为MySQL提供的一个真正意义上的多主(M/M)集群, Galera Cluster是一个易于使用的高可用解决方案, 可提高系统的平均无故障时间, 并且提供数据的可靠性和集群的可扩展性

Galera Cluster的强大功能

  • 同步复制
  • 多主模型
  • 可以在任意节点读写
  • 自动控制各个节点的升级和降级
  • 行级的并行控制
  • 规模较小的客户端延迟

Galera-Cluster在网络拓扑所处的位置

MariaDB-Galera-Server

好吧、这里和标题不符合, 因为我目前只有MariaDB-Galera的包, 所以有使用MariaDB-5.5来做实验了, 其实配置过程和MySQL-5.5并无区别

还有要注意的一点: Galera集群不需要提前配置MySQL复制, 并且也不需要基于MySQL复制

安装MariaDB-Galear-Server前, 不能安装MariaDB, 其实MariaDB-Gelera算是MariaDB的一个分支

下载地址

环境部署

实验环境

node1.anyisalin.com IP_addr=172.16.1.2 
node2.anyisalin.com IP_addr=172.16.1.3 
node3.anyisalin.com IP_addr=172.16.1.4

安装Galera-Cluster

我这里通过官方下载下来的rpm包做成了一个yum源来安装, 大家安装也可以指向官方的yum源

[[email protected] ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y[[email protected] ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y[[email protected] ~]# yum install MariaDB-Galera-server MariaDB-client --nogpgcheck -y

配置步骤

首先配置node1

[[email protected] ~]# vim /etc/my.cnf.d/server.cnf  #修改配置文件mysqld段为如下

    [mysqld]    wsrep_provider = /usr/lib64/galera/libgalera_smm.so    wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"    wsrep_cluster_name = ‘mycluster‘    wsrep_node_name = ‘node1‘    wsrep_node_address = ‘172.16.1.2‘    binlog_format=row    default_storage_engine=InnoDB    innodb_autoinc_lock_mode=2    bind-address=0.0.0.0    server_id=1

配置node2

[root@node2 ~]# vim /etc/my.cnf.d/server.cnf 

    [mysqld]    wsrep_provider = /usr/lib64/galera/libgalera_smm.so    wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"    wsrep_cluster_name = ‘mycluster‘    wsrep_node_name = ‘node2‘         #注意修改    wsrep_node_address = ‘172.16.1.3‘  #这里改为自己的IP    binlog_format=row    default_storage_engine=InnoDB    innodb_autoinc_lock_mode=2    bind-address=0.0.0.0    server_id=2      #server_id一定要改

配置node3

[root@node2 ~]# vim /etc/my.cnf.d/server.cnf 

    [mysqld]    wsrep_provider = /usr/lib64/galera/libgalera_smm.so    wsrep_cluster_address = "gcomm://172.16.1.2,172.16.1.3,172.16.1.4"    wsrep_cluster_name = ‘mycluster‘    wsrep_node_name = ‘node3‘         #注意修改    wsrep_node_address = ‘172.16.1.4‘  #这里改为自己的IP    binlog_format=row    default_storage_engine=InnoDB    innodb_autoinc_lock_mode=2    bind-address=0.0.0.0    server_id=3     #server_id一定要改

启动服务

首先我们要在一个节点初始化集群

[[email protected] ~]# service mysql start --wsrep-new-cluster   #注意:这里是mysql不是mysqldStarting MySQL....                                         [  OK  ]

依次在其他节点启动

[root@node2 ~]# service mysql start    #可能有点慢, 耐心等待Starting MySQL............................SST in progress, setting sleep higher.

[root@node3 ~]# service mysql start    #可能有点慢, 耐心等待Starting MySQL......SST in progress, setting sleep higher. 

测试同步

[root@node1 ~]# mysql  #这里是node1

MariaDB [(none)]> CREATE DATABASE galeradb;  #在node1上创建数据库Query OK, 1 row affected (0.00 sec)

[root@node2 ~]# mysql  #这里是node1

MariaDB [(none)]> SHOW DATABASES;  #在node2上能够看到node1创建的数据库+--------------------+| Database           |+--------------------+| information_schema || galeradb           || mysql              || performance_schema || test               |+--------------------+5 rows in set (0.00 sec)

MariaDB [(none)]> use galeradb;   #在node2上创建表Database changed

MariaDB [galeradb]> CREATE TABLE t1 (id int  auto_increment primary key, name char(4));Query OK, 0 rows affected (0.02 sec)

[root@node3 ~]# mysql  #这里是node1

MariaDB [(none)]> USE galeradb;Database changed

MariaDB [galeradb]> DESC t1;  #在node3能够看到node2创建的表+-------+---------+------+-----+---------+----------------+| Field | Type    | Null | Key | Default | Extra          |+-------+---------+------+-----+---------+----------------+| id    | int(11) | NO   | PRI | NULL    | auto_increment || name  | char(4) | YES  |     | NULL    |                |+-------+---------+------+-----+---------+----------------+2 rows in set (0.00 sec)

MariaDB [galeradb]> SHOW STATUS LIKE ‘wsrep%‘;  #通过这个命令可以看到galera集群的相关信息+----------------------------+-------------------------------------------------+| Variable_name              | Value                                           |+----------------------------+-------------------------------------------------+| wsrep_local_state_uuid     | 57ba6356-0d44-11e6-8ed8-2fa7f726428a            || wsrep_protocol_version     | 4                                               || wsrep_last_committed       | 2                                               || wsrep_replicated           | 0                                               || wsrep_replicated_bytes     | 0                                               || wsrep_received             | 5                                               || wsrep_received_bytes       | 630                                             || wsrep_local_commits        | 0                                               || wsrep_local_cert_failures  | 0                                               || wsrep_local_bf_aborts      | 0                                               || wsrep_local_replays        | 0                                               || wsrep_local_send_queue     | 0                                               || wsrep_local_send_queue_avg | 0.000000                                        || wsrep_local_recv_queue     | 0                                               || wsrep_local_recv_queue_avg | 0.000000                                        || wsrep_flow_control_paused  | 0.000000                                        || wsrep_flow_control_sent    | 0                                               || wsrep_flow_control_recv    | 0                                               || wsrep_cert_deps_distance   | 1.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      | 3                                               || wsrep_causal_reads         | 0                                               || wsrep_incoming_addresses   | 172.16.1.2:3306,172.16.1.3:3306,172.16.1.4:3306 || wsrep_cluster_conf_id      | 3                                               || wsrep_cluster_size         | 3                                               || wsrep_cluster_state_uuid   | 57ba6356-0d44-11e6-8ed8-2fa7f726428a            || wsrep_cluster_status       | Primary                                         || wsrep_connected            | ON                                              || wsrep_local_index          | 2                                               || wsrep_provider_name        | Galera                                          || wsrep_provider_vendor      | Codership Oy <[email protected]>               || wsrep_provider_version     | 23.2.6(r152)                                    || wsrep_ready                | ON                                              |+----------------------------+-------------------------------------------------+40 rows in set (0.00 sec)

#完成

总结

怎么样,是不是很简单的就配置了一个高可用的MySQL复制集群, 我们在前端加上一个负载均衡器就可以负载均衡MySQL

作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感谢: MageEdu

时间: 2024-10-12 08:54:53

MySQL复制: Galera的相关文章

43 MySQL复制及Galera Cluster、MHA

01 MySQL复制及MHA 实战:配置MHA 配置: node1: MHA 192.168.1.130 CentOS7.2 node2:Master 192.168.1.131 CentOS7.2 node3:Slave  192.168.1.132 CentOS7.2 node4:Slave  192.168.1.133 CentOS7.2 一.准备mysql复制环境 [[email protected] ~]# yum -y install mariadb-server [[email p

mysql借助Galera Cluster构建多主集群

首先安装带有Galera Cluster功能的MariaDB版本的程序包: 官方文档:https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/ Galera Cluster实现的复制与mysql传统的复制实现方式不同,传统复制都是通过读取mysql的二进制日志中的事务然后在本地重放实现数据复制的,而Galera Cluster则不需要,它是通过wsrep协议直接从底层复制数据到其它各节点上完成数据

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

mysql复制(高可用架构方案的基础)

mysql复制:把一个数据库实例上所有改变复制到另外一个数据库库服务器实例的过程特点:1.没有改变就无所谓复制 ;改变是复制的根本与数据源2.所有的改变:是指可以复制全部改变,也可以复制部分改变 可以在全部改变中根据业务需求选择部分库和部分表的复制复制的场景: 1.数据库容灾 2.需求:创建一个从数据服务器,做数据的测试和分析 3.负载均衡 4.复制时高可用架构方案的基础 mysql高可用架构特点1.数据库故障的检测与排除2.主从数据库的切换3.数据的备份和保护 mysql高可用架构常用方案1.

MySQL 复制过滤器、监控维护及主从复制的读写分离

MySQL 复制过滤器.监控维护及基于SSL的主从复制 =============================================================================== 概述: 本章将主要介绍MySQL复制中如何过滤,监控维护,以及基于SSL的主从复制,具体内容如下: MySQL 复制过滤器 ·从服务器库级别过滤 MySQL 清理日志:PURGE 复制监控 ·Master ·Slave 如何确定主从节点的数据是否一致 MySQL基于SSL的主从复制(

MySQL复制 -- binlog(2)

MySQL复制是使用最为广泛的一套组建,上一节已经简单说了一下复制的一些用途和复制的原理,知道了这些我们能够快速的搭建起复制的平台,但是仅知道这些还是不够的,很多时候并不是一帆风顺的,总会有那么一小段时间,或者总会有那么几次会出现各种各样的问题.当出现问题我们应该怎么去解决呢? 下面我们先来看看MySQL复制常见的一些问题,以及对应的解决办法:更进一步的我们是否可以考虑做的更好,提供自动化或者半自动化的工具来帮助我们更快更好的解决问题呢? OK,首先我们先来看看我们经常在复制中会遇到的问题吧.

MySQL复制之理论篇

一.MySQL复制概述 MySQL支持两种复制方式:基于行的复制和基于语句的复制(逻辑复制).这两种方式都是通过在主库上记录 二进制日志.在备库重放日志的方式来实现异步的数据复制,其工作原理如下图: 同一时间点主库和备库的数据可能存在不一致.复制通常不会增加主库的开销,主要是启用二进制日志带来的开 销.通过复制可以将读操作指向备库来获得更好的读扩展,但对于写操作,除非设计得当,否则并不适合通过复制来 扩展写操作.在一主库多备库的架构中,写操作会被执行多次,这时候整个系统的性能取决于写入最慢的那部

搭建MHA环境【2】安装mysql-5.6 + mysql复制

本例中mysql的安装方式选用了二进制包安装方案.mysql复制用半同步复制方案 [1]安装mysql-5.6.31 要在所有的数据节点上都安装上mysql,安装方式大致相同,所以我这里就不重复写多次了,只以一台为例. 1.1 解压安装包到/usr/local/ tar -xzvf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local 1.2 为了创建linux系统的mysql用户 useradd mysql 1.3 创建连接文件 cd

第20章 mysql 复制

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] Chapter 17 Replication [4] 第6章:MySQL中的复制 [5] 理解MySQL——复制(Replication) [6] MySQL 5.6 复制介绍 [7] MySQL复制原理与配置 [8] mysql主从复制(超简单)