Mysql Galera Cluster 介绍
SLW N:Q"x2n&dP051Testing软件测试网2j+eQ0Y\YA!XB
51Testing软件测试网Xc
B^
d8gTt
Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时我们数据的安全和随时的扩展,主要特点:
8T Lk`iW5K'd0同步复制51Testing软件测试网Pj8b5]T\,PHr
多主服务器的拓扑结构51Testing软件测试网:?\4G6u4E#H
v)v
可以在任意节点上进行读写51Testing软件测试网ulOt$bW%t
自动剔除故障节点51Testing软件测试网LfHT9Dvs%R
自动加入新节点51Testing软件测试网6`ar\|v
真正行级别的并发复制
8Pl(o
Ft)C&u0客户端连接跟操作单台MySQL数据库的体验一致
)@-b3`l.`9b*`X F^0Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。51Testing软件测试网9},?"W"S~4w
Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。51Testing软件测试网aR8PW'r
51Testing软件测试网8s HYo
rdXf
使用前十项注意
0`r-F?![:zP01、使用Galera必须要给MySQL-Server打wsrep补丁。可以直接使用官方提供的已经打好补丁的MySQL安装包,如果服务器上已经安装了标准版MYSQL,需要先卸载再重新安装。卸载前注意备份数据。
6N7c0Z-q)F,y a)TW{-A02、MySQL/Galera集群只支持InnoDB存储引擎。如果你的数据表使用的MyISAM,需要转换为InnoDB,否则记录不会在多台复制。可以在备份老数据时,为mysqldump命令添加–skip-create-options参数,这样会去掉表结构的声明信息,再导入集群时自动使用InnoDB引擎。不过这样会将AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必须在导入后重新定义。51Testing软件测试网"r:N!]#E4X[rs2k.eq5M Y
3、MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用MyISAM并建了全文索引字段的话,只能安装MySQL 5.6 with wsrep patch。
I1x RKG%S04、所有数据表必须要有主键(PRIMARY),如果没有主键可以建一条AUTO_INCREMENT列。51Testing软件测试网
ha;YT$bX jI*B
5、MySQL/Galera集群不支持下面的查询:LOCK/UNLOCK TABLES,不支持下面的系统变量:character_set_server、utf16、utf32及ucs2。
6X%R:c0H%rP06、数据库日志不支持保存到表,只能输出到文件(log_output = FILE),不能设置binlog-do-db、binlog-ignore-db。51Testing软件测试网;Ap;c~ WG;i _
7、跟其他集群一样,为了避免节点出现脑裂而破坏数据,建议Galera集群最低添加3个节点。
wGPD1cl,v7bX08、在高并发的情况下,多主同时写入时可能会发生事务冲突,此时只有一个事务请求会成功,其他的全部失败。可以在写入/更新失败时,自动重试一次,再返回结果。51Testing软件测试网*Kl4jY0YY
A
9、节点中每个节点的地位是平等的,没有主次,向任何一个节点读写效果都是一样的。实际可以配合VIP/LVS或HA使用,实现高可用性。51Testing软件测试网2Jk;P-eXP
10、如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动:mysqld_safe –wsrep_cluster_address=gcomm:// >/dev/null &51Testing软件测试网B\~9C9x;r2Y)x y
NE/Z"DT&otG0
ltRKs1oE4vX0典型的Galera集群场景51Testing软件测试网^,T4NU8H
-|!t
N{hm0
?a [lFGE0
+aQf3\P{$G0z,K0安装51Testing软件测试网4d4V3alt4s
1、安装前的准备
c%L Q\N'i%i_0 1)需要至少三台mysql服务器,如果只有两台做cluster的话,一旦出现数据不一致的情况,就可能发生脑裂,需要一台仲裁服务器,如果直接三台做cluster的话,就不再需要仲裁
QPe#u B)@}0 2)如果是对现有环境做galera集群,需要对mysql现有表做检查,包括表,表引擎,是否无主键:51Testing软件测试网$@Je4}$f
Ch+})ny
需安装scons51Testing软件测试网2OU5Rb sj
wget http://prdownloads.sourceforge.net/scons/scons-2.2.0.tar.gz .51Testing软件测试网~ J't&C}
tar zxvf scons-2.2.0.tar.gz51Testing软件测试网eOx(_?/K'YCNI
cd scons-2.2.0
z|L\
u6w)UA0python setup.py install51Testing软件测试网$U"hh0`]N
^YOP+vZT2G0实验环境
(w)ba7UCaR@0mysql1:192.168.141.24451Testing软件测试网5v$j/K1`.d?
mysql2:192.168.141.24551Testing软件测试网u/I$Or"L|X
mysql3:192.168.141.246
#My"N`"tVz0
}:nv^q0安装MySQL with wsrep patch
x nb!A"RkV01. #先安装依赖库
2. yum install libaio gcc gcc-c++ boost-devel scons check-devel openssl-devel
3. ln -sf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
4. ln -sf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6
5. #下载MySQL with wsrep源码包,目前最新版本是5.5.34-25.9
6. wget https://launchpad.net/codership-mysql/5.5/5.5.34-25.9/+download/mysql-5.5.34_wsrep_25.9-linux-x86_64.tar.gz
7. tar zxvf mysql-5.5*
8. mv mysql-5.5.34_wsrep_25.9-linux-x86_64 /usr/local/mysql
9. cd /usr/local/mysql/
10. groupadd mysql
11. useradd -r -g mysql mysql
12. chown -R mysql:mysql .
13. ./scripts/mysql_install_db --no-defaults --datadir=/usr/local/mysql/data/ --user=mysql
14. chown -R root .
15. chown -R mysql /usr/local/mysql/data
16. echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
17. source /etc/profile
18. mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &
51Testing软件测试网0Lxw-bi8t
I-K
51Testing软件测试网Z$si+Vc0@+?
gY{ |H2Zq U0
9QC$Vlje6Lns.nS3S0安装Xtrabackup
'XY8a.?
RSr:|01. yum install perl-DBD-MySQL perl-Time-HiRes nc
2. wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm
3. rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm
如果 perl-Time-HiRes 安装不成功,则下载此RPM包
Y;@*sZ
ifLK'H'r$e0cd /usr/local51Testing软件测试网0O:E*z$PO6b2QR*p
wget http://pkgs.repoforge.org/perl-Time-HiRes/perl-Time-HiRes-1.9707-1.el5.rf.x86_64.rpm51Testing软件测试网7x3pxU5o.{v
安装
D)V;gj
A0rpm –ivh perl-Time-HiRes-1.9707-1.el5.rf.x86_64.rpm51Testing软件测试网E+n#e.H:^:E,ao
NW3H%u
7z
N*n9Y0E$Q%Y0
8bUU,B+x0安装Galera复制插件
"{,{3qI2q7\01. cd ~51Testing软件测试网H:cy~6M${P(rTR
2. wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-src.tar.gz51Testing软件测试网:wy\d1He7r
3. tar zxvf galera-*
\-^9QOB8t_^%Q04. cd galera-*51Testing软件测试网%Ja"mf,|
5. scons51Testing软件测试网 G'l)L}+o%C7C
F
6. cp garb/garbd /usr/local/mysql/bin/51Testing软件测试网&yi!{;e7Xb!_0g
7. cp libgalera_smm.so /usr/local/mysql/lib/plugin/
8O t0F
T'P0如果上面安装不成功,在scons编译时候出错,则用下面的方法51Testing软件测试网&qE3r#JC2DQ
下载
T4lf1[9vbi-M)@EB0wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-1.rhel6.x86_64.rpm
`X%AOM4a0rpm -ivh galera-25.3.5-1.rhel5.x86_64.rpm
Pz"p7LCQU#]/[#rD#a0rpm -ql galera
M!b?3gb H0cp /usr/lib64/galera/libgalera_smm.so /usr/local/mysql/lib/plugin/
$Y(t'@
Kd4w6tw;o0cp /usr/bin/garbd /usr/local/mysql/bin/51Testing软件测试网:eS9D+y;Y.{wy j+j]
51Testing软件测试网T%G1T,d9h~W
初始化配置51Testing软件测试网{{J [}4Po L
1. mkdir -p /var/lib/mysql
2. mkdir -p /etc/mysql/conf.d/
3. chown mysql:mysql /var/lib/mysql
4. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
5. /usr/local/mysql/bin/mysqld_safe --wsrep_cluster_address=gcomm:// >/dev/null &