MySQLのベースの高可用性クラスタガレラクラスタマルチマスター構造

ガレラのクラスタ機能

1、多主架构:真正的多点读写的集群,在任何时候读写数据,都是最新的
2、同步复制:集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失
3、并发复制:从节点APPLY数据时,支持并行执行,更好的性能
4、故障切换:在出现数据库故障时,因支持多点写入,切换容易
5、热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小
6、自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,Galera Cluster会自动拉取在线节点数据,最终集群会变为一致
7、对应用透明:集群的维护,对应用程序是透明的

ガレラクラスタ作業プロセス

客户端发送更新指令到mysql服务器,服务器回复OK,但客户端有可能以事务方式执行,并没有发送确认指令(commit);当客户端发送commit指令确认后,mysql服务器会把数据库的更新复制到同一个集群的其他节点;集群中的所有节点会对数据库的更新进行校验,检查更新完的数据与数据库中的数据是否冲突,如果不冲突,服务器端会回复OK;如果更新的数据与集群中的任意一个节点数据发生冲突,则都会回复error

ガレラクラスタクラスタを実現

少なくとも3台のマシン;及びガレラクラスタは、データベースサービスで、ダウンロードガレラクラスタは、既存のサーバーのMySQLデータベースサービスをアンインストールする必要があります

MASTER1設定

[root@centos7 ~]# vim /etc/yum.repos.d/base.repo      #编辑yum源仓库
[mysql]
name=mysql
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.0.38/yum/centos7-amd64/
gpgcheck=0
enabled=1
[root@centos7 ~]# scp /etc/yum.repos.d/base.repo 192.168.38.37:/etc/yum.repos.d/mysql.repo   #发送给另外两个主节点
[root@centos7 ~]# scp /etc/yum.repos.d/base.repo 192.168.38.47:/etc/yum.repos.d/mysql.repo
[root@centos7 ~]# yum install MariaDB-Galera-server -y
[root@centos7 ~]# vim /etc/my.cnf.d/server.cnf     #编辑galera配置文件
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so    #启用galera模块
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47"    #指定集群中节点的IP
binlog_format=row       #二进制日志格式必须为行
default_storage_engine=InnoDB   #存储引擎
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0     #绑定本机的所有IP 

wsrep_cluster_name='mycluster'     #设置集群名
wsrep_node_name='node1'     #设置节点名
wsrep_node_address='192.168.38.7'   #指定本节点的IP
[root@centos7 ~]# service mysql start --wsrep-new-cluster    #第一次启动,三个节点中必须有一个节点添加--wsrep-new-cluster参数启动

MASTER2

[root@localhost ~]# yum install MariaDB-Galera-server -y   #yum源不用配,前面master1主节点已经把yum源和galera配置文件发送到所有节点中
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_name='mycluster'          #上面的galera信息不用修改,修改一下本节点的信息
wsrep_node_name='node2'
wsrep_node_address='192.168.38.37'
[root@localhost ~]# service mysql start

master3

[root@localhost ~]# yum install MariaDB-Galera-server -y
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_name='mycluster'
wsrep_node_name='node3'
wsrep_node_address='192.168.38.47'
[root@localhost ~]# service mysql start

正常が、テーブルを作成しながら、3つのマスターノードDB1場合は、2つのプライマリ・ノード・エラーを見つける、マスタノードと、マスタノード更新データがクラスタの他のメインノードに同期するには、これはのガレラクラスタであります最初に実行マスターノードを使用すると、テーブル、また、作成した他の二つの主要なノードが戻ることを尋ねられたときに成功し、DB1のテーブルを作成したマスターノードを作成した場合、競合は競合は発生しませんされ、残りのプライマリノードのデータのテーブルを作成するよう求めたが、そこにある、動作特性をマスタノードが作成されているので、データの競合が、残りの二つは、マスターノード・エラーになります

SHOW VARIABLES LIKE 'wsrep_%';           #可以在mysql中查询集群的相关状态信息
SHOW STATUS LIKE 'wsrep_%';
SHOW STATUS LIKE 'wsrep_cluster_size';

既存のクラスタのマスターノードmaster4に追加されました

MASTER1することにより、ソースリポジトリのyumガレラファイルと設定ファイルはmaster4にコピーされます

[root@localhost ~]# yum install MariaDB-Galera-server -y
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47,192.168.38.57"   #把新的节点master4的IP添加上去

wsrep_cluster_name='mycluster'
wsrep_node_name='node4'
wsrep_node_address='192.168.38.57'
[root@localhost ~]# service mysql start

ガレラは、すべてのノードの設定ファイルの残りの部分は、あなたが追加した後にサービスを再起動し、新しいIPマスターノードを追加する必要があります

[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47,192.168.38.57"
[root@localhost ~]# service mysql restart
[root@localhost ~]# mysql -e 'SHOW STATUS LIKE "wsrep_cluster_size";'     #集群中有4个节点
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 4     |
+--------------------+-------+

おすすめ

転載: www.cnblogs.com/dongzhanyi123/p/11948979.html