有正在从事web测试和APP测试工作或想从事此行业的测友们,欢迎与我联系,相互交流!测试交流微信公众号:gh_03e570cb5168 长期招聘不同级别测试工程师(WEB\APP\性能)有意者请与本人联系!

转:Mysql Galera Cluster 介绍

上一篇 / 下一篇  2017-06-16 13:38:08 / 个人分类:mysql

文章来源
  • 文章来源:【转载】

​Mysql Galera Cluster 介绍

J)F%x;P f#UZh7Q0

Mysql Galera Cluster 介绍(一) - 苦雨 - 我的博客

P.@wc|_0

 

5SH f(HS)H/J:YY8Q(~0

Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时我们数据的安全和随时的扩展,主要特点:51Testing软件测试网ME;xRp:G;]K(cDR

同步复制

(KfH Kw5NO0

多主服务器的拓扑结构51Testing软件测试网g?l5B5D"B9m

可以在任意节点上进行读写51Testing软件测试网2| q:U a^xj

自动剔除故障节点

&l1SLIy`&h6O1M}0

自动加入新节点

5`*b"OM7V \,g+P0

真正行级别的并发复制51Testing软件测试网.ob_&T"A-z+Npc

客户端连接跟操作单台MySQL数据库的体验一致51Testing软件测试网2pt%h:|o\

Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。51Testing软件测试网a"NJ|BfK

Galera本质是一个wsrep提供者(provider),运行依赖于wsrep的API接口。Wsrep API定义了一系列应用回调和复制调用库,来实现事务数据库同步写集(writeset)复制以及相似应用。目的在于从应用细节上实现抽象的,隔离的复制。虽然这个接口的主要目标是基于认证的多主复制,但同样适用于异步和同步的主从复制。

~/A'~%zt0

 51Testing软件测试网z L Z-l+\)h'R[

使用前十项注意

8J'NO:YW)s!j9D\0

1、使用Galera必须要给MySQL-Server打wsrep补丁。可以直接使用官方提供的已经打好补丁的MySQL安装包,如果服务器上已经安装了标准版MYSQL,需要先卸载再重新安装。卸载前注意备份数据。51Testing软件测试网E7DP(KN n+g\W

2、MySQL/Galera集群只支持InnoDB存储引擎。如果你的数据表使用的MyISAM,需要转换为InnoDB,否则记录不会在多台复制。可以在备份老数据时,为mysqldump命令添加–skip-create-options参数,这样会去掉表结构的声明信息,再导入集群时自动使用InnoDB引擎。不过这样会将AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必须在导入后重新定义。51Testing软件测试网!S7H(q.Snx N

3、MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用MyISAM并建了全文索引字段的话,只能安装MySQL 5.6 with wsrep patch。51Testing软件测试网fp$A+zB,q5VP?

4、所有数据表必须要有主键(PRIMARY),如果没有主键可以建一条AUTO_INCREMENT列。51Testing软件测试网5u [-\Xp$}kkh

5、MySQL/Galera集群不支持下面的查询:LOCK/UNLOCK TABLES,不支持下面的系统变量:character_set_server、utf16、utf32及ucs2。51Testing软件测试网/w*?:LF@#b|V

6、数据库日志不支持保存到表,只能输出到文件(log_output = FILE),不能设置binlog-do-db、binlog-ignore-db。

6A{Oe3` pUf0

7、跟其他集群一样,为了避免节点出现脑裂而破坏数据,建议Galera集群最低添加3个节点。

^ZlL)P vQ-k;mG9\0

8、在高并发的情况下,多主同时写入时可能会发生事务冲突,此时只有一个事务请求会成功,其他的全部失败。可以在写入/更新失败时,自动重试一次,再返回结果。

/y3t,QDd]*L)\/t$p0D0

9、节点中每个节点的地位是平等的,没有主次,向任何一个节点读写效果都是一样的。实际可以配合VIP/LVS或HA使用,实现高可用性。

gdp] _d"G+u0

10、如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动:mysqld_safe –wsrep_cluster_address=gcomm:// >/dev/null &51Testing软件测试网/P7G8] @%M

 51Testing软件测试网1l4P8T6a e;oP

 51Testing软件测试网#g4sG:O(yK|

典型的Galera集群场景

y&Kxb UI'DPaC0

Mysql Galera Cluster 介绍(一) - 苦雨 - 我的博客

1cmbl2o(y0

 

7\ T*r'w)U:?\u(M0

 

N-jU$F;bC^7k^t0

安装

:Z ]?3Jr/v0

1、安装前的准备

h&M]Z a.UZ gsg#Z0

  1)需要至少三台mysql服务器,如果只有两台做cluster的话,一旦出现数据不一致的情况,就可能发生脑裂,需要一台仲裁服务器,如果直接三台做cluster的话,就不再需要仲裁51Testing软件测试网Wo/DL'wj)~7z-uT

  2)如果是对现有环境做galera集群,需要对mysql现有表做检查,包括表,表引擎,是否无主键:

p a x6F"v2dwe3B'S0

需安装scons

D2q#G,M D0

wget http://prdownloads.sourceforge.net/scons/scons-2.2.0.tar.gz .51Testing软件测试网'eSbF#I%fw

tar zxvf scons-2.2.0.tar.gz51Testing软件测试网b[M6`-Pf

cd scons-2.2.051Testing软件测试网7]U8Je\L$L0p,@

python setup.py install

+di D:s?j,w5r"tr6a0

 51Testing软件测试网gg+J*m#M2KR#w_

实验环境

[i+E6m6z0

mysql1:192.168.141.24451Testing软件测试网APl6K$V}w)ji

mysql2:192.168.141.245

~n&M|6E~0

mysql3:192.168.141.246

| ^ A"tz:v|;o0

 

C]"BWU!vs0

安装MySQL with wsrep patch51Testing软件测试网*? F&V3koN9ty2q?

1.   #先安装依赖库
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软件测试网8iG$Y,F|W0cp+D$Y

Mysql Galera Cluster 介绍(一) - 苦雨 - 我的博客

r"Zo)Xu8F9~ C0

 

[7@,gg5].l0

 51Testing软件测试网6l%eJ3bEQ_j

安装Xtrabackup51Testing软件测试网3y HNM)iq

1.  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包

/{| Q(a Bw-CU(Z0

cd /usr/local51Testing软件测试网0xA4A#C'C8f'X/m#Qw

wget http://pkgs.repoforge.org/perl-Time-HiRes/perl-Time-HiRes-1.9707-1.el5.rf.x86_64.rpm51Testing软件测试网5g-Ti'{+~1t6V

安装51Testing软件测试网iG0SZc7{LS

rpm –ivh perl-Time-HiRes-1.9707-1.el5.rf.x86_64.rpm

${lM7_5^A3j7@3e0

 

!mz Jd*y:B%A+\0

 

%z&[$h'Lw._0

安装Galera复制插件

X m;q:WO0

1.  cd ~

BC7BZ!Z~,`J0

2.  wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-src.tar.gz51Testing软件测试网:Pe.F;M7B"o

3.  tar zxvf galera-*

]td+b-AP.}v0

4.  cd galera-*51Testing软件测试网CA^hC)tQ

5.  scons

&i\$V*TE^3Q5t0

6.  cp garb/garbd /usr/local/mysql/bin/

!Oe? @bR{3H_)K0

7.  cp libgalera_smm.so /usr/local/mysql/lib/plugin/

6Z/w/mI{0

如果上面安装不成功,在scons编译时候出错,则用下面的方法

v.fa5MwHZ0

下载

|"ZAN~*\'c,C8Pxh0

wget https://launchpad.net/galera/3.x/25.3.5/+download/galera-25.3.5-1.rhel6.x86_64.rpm

p`6nh&e E/L5V!nB+r0

rpm -ivh  galera-25.3.5-1.rhel5.x86_64.rpm

b0}bj]r#N*k0

rpm -ql  galera51Testing软件测试网7~%]I3pvX Y5e&nc

cp /usr/lib64/galera/libgalera_smm.so /usr/local/mysql/lib/plugin/51Testing软件测试网F8?Fc xfA

cp /usr/bin/garbd /usr/local/mysql/bin/

V+aS]5n|0

 

(yA,Q8g a0

初始化配置51Testing软件测试网LW&R4d\ DpR

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 &


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar