Galera Cluster介绍 Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: - 同步复制
- 真正的multi-master,即所有节点可以同时读写数据库
- 自动的节点成员控制,失效节点自动被清除
- 新节点加入数据自动复制
- 真正的并行复制,行级
- 用户可以直接连接集群,使用感受上与MySQL完全一致
优势: 因为是多主,所以不存在Slavelag(延迟) 不存在丢失交易的情况 同时具有读和写的扩展能力 更小的客户端延迟 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的 技术: Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 MariaDB介绍 MariaDB是MySQL的一个分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可。 开发这个分支的原因之一是Oracle公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 方案总览 - haproxy作为MariaDB Galera Cluster的前端
- 2台haproxy用keepalived避免单点故障
- 3台MariaDB和一个garbd仲裁节点组成集群,仲裁节点上无数据
- Galera的SST采用Percona提供的XtraBackup(防止锁表,非阻塞)
环境描述 OS:CentOS 6.0 64bit MariaDB server1: | 192.168.0.171 | MariaDB server2: | 192.168.0.172 | MariaDB server3: | 192.168.0.173 | HAProxy server1: | 192.168.0.151 | HAProxy server2: | 192.168.0.152 | HAProxy共享的VIP: | 192.168.0.170 |
MySQLroot password: | q1w2e3!@# | Cluster root username: | clusteroot | Cluster root password: | q1w2e3!@# | GaleraSST user: | sst | GaleraSST password: | sstpass123 |
环境准备 以下操作以MariaDBserver1为示例。 1.准备hosts文件 编辑上述每台服务器的/etc/hosts,添加如下内容: 192.168.0.151 haproxy1.cluster.local haproxy1 192.168.0.152 haproxy2.cluster.local haproxy2 192.168.0.171 galera1.cluster.local galera1 192.168.0.172 galera2.cluster.local galera2 127.0.0.1 localhost.localdomain localhost ::1 localhost6 localhost6.localdomain |
2.安装163,epel,Percona,MariaDB的YUM源 [root@mdb-01~]# cat CentOS6-Base-163.repo >/etc/yum.repos.d/CentOS-Base.repo [root@mdb-01~]# vi /etc/yum.repos.d/MariaDB.repo #MariaDB 5.5 CentOS repository list - created 2013-05-16 01:58UTC [mariadb] name =MariaDB gpgcheck=1 |
[root@mdb-01~]# vi /etc/yum.repos.d/Percona.repo [percona] name =CentOS $releasever - Percona enabled = 1 gpgkey= [url=]file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona[/url] gpgcheck = 1 |
[root@mdb-01~]# yum makecache Galera Cluster的配置 1.安装MariaDB、galera、xtrabackup [root@mdb-01~]# rpm -e --nodepsmysql-libs [root@mdb-01~]# yum installMariaDB-Galera-server galera MariaDB-client xtrabackup 2.设置开机启动MariaDB [root@mdb-01~]# chkconfig mysqlon [root@mdb-01~]# service mysqlstart 3.设置MariaDB的root密码,并做安全加固 [root@mdb-01~]# /usr/bin/mysql_secure_installation 4.确认MariaDB已正确安装并处于运行状态 [root@mdb-01~]# mysql -u root-p Enterpassword: Welcome to the MariaDB monitor. Commands end with ; or\g. YourMariaDB connection id is 11 Serverversion: 5.5.29-MariaDB MariaDB Server, wsrep_23.7.3.rXXXX Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. Type'help;' or '\h' for help. Type '\c' to clear the current inputstatement. MariaDB [(none)]> 注意查看是否有"wsrep_23.7.3.rXXXX"的输出。 5.创建用于同步数据库的SST帐号 [root@mdb-01~]# mysql -u root-p mysql> GRANT USAGE ON *.* to sst@'%' IDENTIFIED BY'sstpass123'; mysql> GRANT ALL PRIVILEGES on *.* to sst@'%'; mysql> FLUSH PRIVILEGES; mysql> quit 6.创建wsrep.cnf文件 [root@mdb-01~]# cp/usr/share/mysql/wsrep.cnf /etc/my.cnf.d/ [root@mdb-01~]# vi/etc/my.cnf.d/wsrep.cnf 只需要修改如下4行: wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://" wsrep_sst_auth=sst:sstpass123 wsrep_sst_method=xtrabackup 注意: "gcomm://" 是特殊的地址,仅仅是Galera cluster初始化启动时候使用。 如果集群启动以后,我们关闭了第一个节点,那么再次启动的时候必须先修改 "gcomm://"为其他节点的集群地址,例如 wsrep_cluster_address="gcomm://192.168.0.172:4567"
|