超经典 MySQL CLUSTER(集群)系列 (1.双机实现高可用).doc_第1页
超经典 MySQL CLUSTER(集群)系列 (1.双机实现高可用).doc_第2页
超经典 MySQL CLUSTER(集群)系列 (1.双机实现高可用).doc_第3页
超经典 MySQL CLUSTER(集群)系列 (1.双机实现高可用).doc_第4页
超经典 MySQL CLUSTER(集群)系列 (1.双机实现高可用).doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、介绍这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行。加下后续的(keepalived+lvs+mysql cluster文档),可以实现Mysql双机的高可用及负载均衡。安装环境及软件包: vmware workstation 5.5.3mysql-5.2.3-falcon-alpha.tar.gzgentoo 2006.1 Server1: 11Server2: 10二、在Server1和Server2上安装MySQL以下步骤需要在Server1和Server2上各做一次 # mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package# cd /tmp/package# groupadd mysql# useradd -g mysql mysql# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz # rm -f mysql-5.2.3-falcon-alpha.tar.gz # mv mysql-5.2.3-falcon-alpha mysql# cd mysql# ./configure -prefix=/usr -with-extra-charsets=complex -with-plugin-ndbcluster -with-plugin-partition -with-plugin-innobase# make & make install#ln -s /usr/libexec/ndbd /usr/bin#ln -s /usr/libexec/ndb_mgmd /usr/bin#ln -s /usr/libexec/ndb_cpcd /usr/bin#ln -s /usr/libexec/mysqld /usr/bin#ln -s /usr/libexec/mysqlmanager /usr/bin#mysql_install_db -user=mysql三、安装并配置节点以下步骤需要在Server1和Server2上各做一次1.配置管理节点配置文件: # mkdir /var/lib/mysql-cluster# cd /var/lib/mysql-cluster# vi config.ini在config.ini中添加如下内容: ndbd defaultNoOfReplicas= 2 MaxNoOfConcurrentOperations= 10000DataMemory= 80MIndexMemory= 24MTimeBetweenWatchDogCheck= 30000DataDir= /var/lib/mysql-clusterMaxNoOfOrderedIndexes= 512ndb_mgmd defaultDataDir= /var/lib/mysql-clusterndb_mgmdId=1HostName= 11ndb_mgmdId=2HostName= 10ndbdId= 3HostName= 11ndbdId= 4HostName= 10mysqldmysqldtcp defaultPortNumber= 631322.配置通用f文件,mysqld及ndbd,ndb_mgmd均使用此文件.# vi /etc/f在f中添加如下内容:mysqlddefault-storage-engine=ndbcluster 避免在sql语句中还要加入ENGINE=NDBCLUSTER。ndbclusterndb-connectstring=11,10ndbdconnect-string=11,10ndb_mgmconnect-string=11,10ndb_mgmdconfig-file=/var/lib/mysql-cluster/config.inimysql_clusterndb-connectstring= 11,10保存退出后,启动管理节点Server1为: # ndb_mgmd -ndb_nodeid=1启动管理节点Server2为: # ndb_mgmd -ndb_nodeid=2注:在启动时有一个警告提示Cluster configuration warning: arbitrator with id 1 and db node with id 3 on same host 11 arbitrator with id 2 and db node with id 4 on same host 10 Running arbitrator on the same host as a database node may cause complete cluster shutdown in case of host failure.说节点1和3,2和4的arbitrator一样,可能引起整个集群失败。(可以不用放在心上)四、初始化集群在Server1中# ndbd -nodeid=3 -initial在Server2中# ndbd -nodeid=4 -iniitial注:只有在第一次启动ndbd时或者对config.ini进行改动后才需要使用-initial参数! 五、检查工作状态在任意一台机子上启动管理终端: # ndb_mgm键入show命令查看当前工作状态:(下面是一个状态输出示例) - NDB Cluster - Management Client -ndb_mgm showConnected to Management Server at: 11:1186Cluster Configuration-ndbd(NDB) 2 node(s)id=3 11 (Version: 5.2.3, Nodegroup: 0, Master)id=4 10 (Version: 5.2.3, Nodegroup: 0)ndb_mgmd(MGM) 2 node(s)id=1 11 (Version: 5.2.3)id=2 10 (Version: 5.2.3)mysqld(API) 2 node(s)id=5 (not connected, accepting connect from any host)id=6 (not connected, accepting connect from any host)ndb_mgm 如果上面没有问题,现在开始加入mysqld(API): 注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。 在Server1 中: #mysqld_safe -ndb_nodeid=5 -user=mysql &在Server2 中: #mysqld_safe -ndb_nodeid=6 -user=mysql &# ndb_mgm -e show信息如下:Connected to Management Server at: 11:1186Cluster Configuration-ndbd(NDB) 2 node(s)id=3 11 (Version: 5.2.3, Nodegroup: 0, Master)id=4 10 (Version: 5.2.3, Nodegroup: 0)ndb_mgmd(MGM) 2 node(s)id=1 11 (Version: 5.2.3)id=2 10 (Version: 5.2.3)mysqld(API) 4 node(s)id=5 11 (Version: 5.2.3)id=6 10 (Version: 5.2.3)ok,可以测试了:在Server1 中# /usr/local/mysql/bin/mysql -u root -pcreate database aa; use aa; CREATE TABLE ctest (i INT) ; INSERT INTO ctest () VALUES (1); SELECT * FROM ctest;应该可以看到1 row returned信息(返回数值1)。 如果上述正常,则换到Server2,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。 如果都没有问题,那么恭喜成功! 六、破坏性测试将Server1或Server2的网线拔掉(即ifconfig eth0 down),观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。 注意:在未对集群做任何读写操作前,此测试结果无效,因为,集群初始后只在/var/lib/mysql-cluster/下建了几个空目录,还没有正常协同工作,会出现整个所有存储(ndbd)节点关闭.也可以这样测试:在Server1或Server2上: # ps aux | grep ndbd将会看到所有ndbd进程信息: root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbdroot 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbdroot 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的: # kill -9 5578 5579之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。 测试完成后,只需要重新启动被破坏服务器的ndbd进程即可: # ndbd -ndb_nodeid=此存储节点的id注意!前面说过了,此时是不用加-inital参数的! 至此,MySQL双机集群就配置完成了! MySQL CLUSTER(集群)系列 (2.另类在线增加节点-online hotplugin)MySQL CLUSTER(集群)系列 (2.另类在线增加节点-online hotplugin)一、介绍这篇文档旨在介绍如何设计MySQL集群,制做集群模板,有效规避mysql限制。(此文为二管理,四存储,八数据的模块制作)安装环境及软件包: vmware workstation 5.5.3mysql-5.2.3-falcon-alpha.tar.gzgentoo 2006.1 (每机单网卡多ip)Server1: 11 (ndb_mgmd, id=1)Server1: 12 (ndbd ,id=3)server1: 13 (ndbd,id=4)Server2: 10 (ndb_mgmd,id=2)server2: 09 (ndbd,id=5)server2: 08 (ndbd,id=6)二、在Server1和Server2上安装MySQL以下步骤需要在Server1和Server2上各做一次 # mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package# cd /tmp/package# groupadd mysql# useradd -g mysql mysql# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz # rm -f mysql-5.2.3-falcon-alpha.tar.gz # mv mysql-5.2.3-falcon-alpha mysql# cd mysql# ./configure -prefix=/usr -with-extra-charsets=complex -with-plugin-ndbcluster -with-plugin-partition -with-plugin-innobase# make & make install#ln -s /usr/libexec/ndbd /usr/bin#ln -s /usr/libexec/ndb_mgmd /usr/bin#ln -s /usr/libexec/ndb_cpcd /usr/bin#ln -s /usr/libexec/mysqld /usr/bin#ln -s /usr/libexec/mysqlmanager /usr/bin#mysql_install_db -user=mysql三、安装并配置节点以下步骤需要在Server1和Server2上各做一次1.配置管理节点配置文件: # mkdir /var/lib/mysql-cluster# cd /var/lib/mysql-cluster# vi config.ini在config.ini中添加如下内容: ndbd defaultNoOfReplicas= 4 (此文有四个存储节点)MaxNoOfConcurrentOperations= 10000DataMemory= 80MIndexMemory= 24MTimeBetweenWatchDogCheck= 30000DataDir= /var/lib/mysql-clusterMaxNoOfOrderedIndexes= 512ndb_mgmd defaultDataDir= /var/lib/mysql-clusterndb_mgmdId=1HostName= 11ndb_mgmdId=2HostName= 10ndbdId= 3HostName= 12ndbdId= 4HostName= 13ndbdId= 5HostName= 09ndbdId= 6HostName= 08mysqldmysqldmysqldmysqldmysqldmysqldmysqldmysqld 共八个mysqld定义tcp defaultPortNumber= 631322.配置通用f文件,mysqld及ndbd,ndb_mgmd均使用此文件.# vi /etc/f在f中添加如下内容:mysqlddefault-storage-engine=ndbcluster 避免在sql语句中还要加入ENGINE=NDBCLUSTER。ndbclusterndb-connectstring=11,10ndbdconnect-string=11,10ndb_mgmconnect-string=11,10ndb_mgmdconfig-file=/var/lib/mysql-cluster/config.inimysql_clusterndb-connectstring= 11,10保存退出后,启动管理节点Server1为: # ndb_mgmd -ndb_nodeid=1启动管理节点Server2为: # ndb_mgmd -ndb_nodeid=2四、初始化集群在Server1中# ndbd -bind_address=12 -nodeid=3 -initial#ndbd -bind_address=13-nodeid=4 -initial在Server2中#ndbd -bind_address=09 -nodeid=5 -initial#ndbd -bind_address=08 -nodeid=6 -initial注:只有在第一次启动ndbd时或者对config.ini进行改动后才需要使用-initial参数! 五、检查工作状态在任意一台机子上启动管理终端: # ndb_mgm键入show命令查看当前工作状态:(下面是一个状态输出示例) - NDB Cluster - Management Client -ndb_mgm showConnected to Management Server at: 11:1186Cluster Configuration-ndbd(NDB) 4 node(s)id=3 11 (Version: 5.2.3, Nodegroup: 0, Master)id=4 10 (Version: 5.2.3, Nodegroup: 0)id=5 09 (Version: 5.2.3, Nodegroup: 0)id=6 08 (Version: 5.2.3, Nodegroup: 0)ndb_mgmd(MGM) 2 node(s)id=1 11 (Version: 5.2.3)id=2 10 (Version: 5.2.3)mysqld(API) 8 node(s)id=7 (not connected, accepting connect from any host)id=8 (not connected, accepting connect from any host)id=9 (not connected, accepting connect from any host)id=10 (not connected, accepting connect from any host)id=11 (not connected, accepting connect from any host)id=12 (not connected, accepting connect from any host)id=13 (not connected, accepting connect from any host)id=14 (not connected, accepting connect from any host)ndb_mgm 如果上面没有问题,现在开始加入mysqld(API): 注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。 在Server1 中: #mysqld_safe -ndb_nodeid=7 -user=mysql &在Server2 中: #mysqld_safe -ndb_nodeid=8 -user=mysql &# ndb_mgm -e show信息如下:Connected to Management Server at: 11:1186Cluster Configuration-ndbd(NDB) 4 node(s)id=3 11 (Version: 5.2.3, Nodegroup: 0, Master)id=4 10 (Version: 5.2.3, Nodegroup: 0)id=5 09 (Version: 5.2.3, Nodegroup: 0)id=6 08 (Version: 5.2.3, Nodegroup: 0)ndb_mgmd(MGM) 2 node(s)id=1 11 (Version: 5.2.3)id=2 10 (Version: 5.2.3)mysqld(API) 4 node(s)id=5 11 (Version: 5.2.3)id=6 10 (Version: 5.2.3)id=7 (not connected, accepting connect from any host)id=8 (not connected, accepting connect from any host)id=9 (not connected, accepting connect from any host)id=10 (not connected, accepting connect from any host)id=11 (not connected, accepting connect from any host)id=12 (not connected, accepting connect from any host)ok,可以测试了:在Server1 中# /usr/local/mysql/bin/mysql -u root -pcreate database aa; use aa; CREATE TABLE ctest (i INT) ; INSERT INTO ctest () VALUES (1); SELECT * FROM ctest;应该可以看到1 row returned信息(返回数值1)。 如果上述正常,则换到Server2,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。 如果都没有问题,那么恭喜成功!至此模板制作完成。注意:在模板制作完成的过程中,测试过程完成了对集群的初次读写,若跳过测试(跳过读写),在集群未协同工作前进行下面的操作,则进行下面的操作毫无意义。因为,集群初始后只在/var/lib/mysql-cluster/下建了几个空目录,还没有正常协同工作.六、备份/var/lib/mysql-cluster/下的相应ndb_*_fs,留做以后使用。七、原理:ndbd -initial初始集群结构,在官方文档中增加节点要bakcup后restore要initial的主要是存储节点,管理节点和数据节点都可用集群restart实现.而存储节点特点是只要一个有效,则整个集群可以正常工作,因此,在模板完成后,未使用的存储节点可以当做故障节点,当启用时,存储节点可以通过其内部达到同步.缺点,在集群启动时,每个未使用存储节点默认等待启用时间为60秒,造成集群启动时间加长,可以能通过设置参数设小,不推荐。八、 实现:数据节点不用说了,管理节点两个也够用了,主要是存储节点了。根据上面的步骤搭建一台服务器,拷贝相应的ndb_*_fs到/var/lib/mysql-cluster/下,机器ip符合config.ini中的定义,好了,可以启用了,简单吧。对于现有设计,可以按官方文档增加修改节点的工作时,参考此文档,预留相应的空闲节点,为以后的工作增加便利。 MySQL CLUSTER(集群)系列 (3.lvs+keeplived+mysql cluster)一、介绍这篇文档旨在介绍如何结合lvs+keepalived实现mysql cluster的高可用及负载均衡。此文是在1文(双机高可用)基础上增加lvs+keepalived,稍加修改就可适合更多结点的集群.安装环境及软件包: vmware workstation 5.5.3mysql-5.2.3-falcon-alpha.tar.gzgentoo 2006.1ipvsadm-1.24.tar.gzkeepalived-1.1.13.tar.gzlinux-.tar.bz2iproute2-2.6.15-060110.tar.gz Server1: 11 (ndb_mgmd, id=1)Server2: 10 (ndb_mgmd,id=2)二六步参见1文(双机高可用)以下步骤需要在Server1和Server2上各做一次七、内核linux-.tar.bz2安装# tar xvjf linux-.tar.bz2 -C /usr/src#cd /usr/src/linux-#zcat /proc/config.gz .config#make menuconfig 选择 Network packet filtering framework (Netfilter) - 后在 TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL) 下出现 IP: Virtual Server Configuration -关天netfilter内的配置及Virtual Server的配置根据自己的需要选择。选择 IP: advanced router Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH) - IP: policy routing # make all & make modules_install & make install#vi /boot/grub.conf 加入title=kernel /vmlinuz- root=/你的根设备#reboot (以新内核启动系统)八、安装ipvsadm和keepalived#tar -zxvf ipvsadm-1.24.tar.gz -C /tmp/package# cd /tmp/package/ipvsadm-1.24# make & make install#tar -zxvf keepalived-1.1.13.tar.gz -C /tmp/package#cd /tmp/package/keepalived-1.1.13#vi keepalived/vrrp/vrrp_arp.c将 26 #include 27 28 /* local includes */ 29 #include vrrp_arp.h 30 #include memory.h 31 #include utils.h修改为 26 /* local includes */ 27 #include vrrp_arp.h 28 #include memory.h 29 #include utils.h 30#include 31 就是将#include 这行移到下面.#./configure -prefix=/usr -with-kernel-dir=/usr/src/linux-#make & make install#vi /etc/init.d/keepalived 加入以下内容#!/sbin/runscript# Copyright 1999-2004 Gentoo Foundation# Distributed under the terms of the GNU General Public License v2# $Header: /var/cvsroot/gentoo-x86/sys-cluster/keepalived/files/init-keepalived,v 1.3 2004/07/15 00:55:17 agriffis Exp $depend() use logger need netcheckconfig() if ! -e /etc/keepalived/keepalived.conf ; then eerror You need an /etc/keepalived/keepalived.conf file to run keepalived return 1 fistart() checkconfig | return 1 ebegin Starting Keepalived start-stop-daemon -start -quiet -pidfile /var/run/keepalived.pid -startas /usr/sbin/keepalived eend $?stop() ebegin Stopping Keepalived start-stop-daemon -stop -quiet -pidfile /var/run/keepalived.pid eend $?此为gentoo的keepalived的脚本.#chmod 755 /etc/init.d/keepalived#rc-update add keepalived default#vi /etc/keepalived/keepalived.conf 加入! Configuration File for keepalivedglobal_defs router_id mysql_clustervrrp_sync_group VG1 (此处是ha部分) group VI_1 vrrp_instance VI_1 state MASTER interface eth0 lvs_sync_daemon_interface eth0 virtual_router_id 1 (此处server1为1,server2为2) priority 150 advert_int 1 authentication auth_type PASS auth_pass mysqlcluster virtual_ipaddress 20 virtual_server 20 3306 (此处定义负载均衡部分,使用DR方式) delay_loop 6 lvs_sched wlc lvs_method DR persistence_timeout 60 ha_suspend protocol TCP real_server 10 3306 weight 1 TCP_CHECK connect_timeout 10 real_server 11 3306 weight 1 TCP_CHECK connect_timeout 10 九,启动#/etc/init.d/keepalived start#ip addr list (未安装iproute2 ,无此命今,可以使用emerge iproute2安装,注意emerge是gentoo的命今)出现类似下面的信息eth0: mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0c:29:6f:f9:21 brd ff:ff:ff:ff:ff:ff inet 192.168.1.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论