这篇文章将为大家详细讲解有关DRBD和Corosync如何实现高可用MySQL,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。(1)节点之间需要传递事务信息,节点之间识别节点是通过节点名称实现,所以需要DNS解析,将相应IP对应节点名称,但是如果依赖DNS服务器时,高可用集群服务又增大了风险,为了避免DNS服务器存在的隐患,配置解析时直接使用本地/etc/hosts配置文件定义(2)节点名称必须要与‘uname–n’命令显示的名称一致(3)高可用集群节点的管理,比如停止某一节点时,是不能在自身这个节点停止其服务,需要在一个运行正常的节点上停止其他节点;所以,提供ssh互信通信(配置每个节点基于密钥的方式与节点进行通信)(4)时间需要同步节点之间网络通信配置test1节点IP配置test2节点IP配置配置完成重启网络服务各节点节点名称配置test1节点名称配置# vim /etc/sysconfig/network# hostname test1.magedu.comtest2节点名称配置# vim /etc/sysconfig/network# hostname test2.magedu.com配置完成重新登录一下终端主机名解析配置RS1主机名解析配置# vim /etc/hostsRS2主机名解析配置# vim /etc/hosts
节点之间的ssh互信功能配置节点test1(简称)配置# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ”# ssh-copy-id -i .ssh/id_rsa.pubroot@test2.magedu.com测试一下节点test2配置# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ”# ssh-copy-id -i .ssh/id_rsa.pubroot@test1.magedu.com测试时间同步配置一台主机为时间服务器,进行时间同步,这里直接使用的是实验提供的时间服务器,没有做其他配置节点test1与test2同时同步# ntpdate 172.16.0.1计划任务制定定义一条计划任务,时刻同步着时间# crontab –e*/5 * * * * ntpdate 172.16.0.1 >/dev/null本次实验中在节点test1与test2需要安装的rpm包列表cluster-glue-1.0.6-1.6.el5.i386.rpmcluster-glue-libs-1.0.6-1.6.el5.i386.rpmcorosync-1.4.5-1.1.i386.rpmcorosynclib-1.4.5-1.1.i386.rpmheartbeat-3.0.3-2.3.el5.i386.rpmheartbeat-libs-3.0.3-2.3.el5.i386.rpmlibesmtp-1.0.4-5.el5.i386.rpmopenais-1.1.3-1.6.el5.i386.rpmopenaislib-1.1.3-1.6.el5.i386.rpmpacemaker-1.1.5-1.1.el5.i386.rpmpacemaker-cts-1.1.5-1.1.el5.i386.rpmpacemaker-libs-1.1.5-1.1.el5.i386.rpmresource-agents-1.0.4-1.1.el5.i386.rpm在节点test1上的操作配置准备配置文件# cd /etc/corosync/# cp corosync.conf.example corosync.conf# vim corosync.conf修改内容如下totem {secauth:oninterface{bindnetaddr:172.16.0.0mcastaddr:239.151.51.51添加的内容service {ver: 0name: pacemaker}aisexec {user: rootgroup: root}创建日志文件目录# mkdir /var/log/cluster# ssh test2 ‘mkdir /var/log/cluster’生成一对密钥# corosync-keygen复制密钥文件与配置文件到test2节点# scp -p authkey corosync.conf test2:/etc/corosync/启动corosync查看节点状态免费主机域名信息
开始crm配置说明:因为没有stonith设备并且只有两个节点所以需要禁用stonith功能,并更改节点默认属性crm(live)configure#property stonith-enabled=falsecrm(live)configure#verifycrm(live)configure#property no-quorum-policy=ignorecrm(live)configure#verifycrm(live)configure#commit定义资源粘性,配置在当前节点test1粘性crm(live)configure#rsc_defaults resource-stickiness=100crm(live)configure#verifycrm(live)configure#commit全局资源配置信息查看资源配置(1)将drbd配置为基本资源(2)将drbd配置为克隆类资源资源代理查看crm(live)# racrm(live)ra#providers drbd查看元数据信息crm(live)ra# metaocf:heartbeat:drbd定义一个主资源与一个主从类资源crm(live)#configurecrm(live)configure#primitive mydrbdservice ocf:heartbeat:drbd params drbd_resource=mydrbd op starttimeout=240 op stop timeout=100 op monitor role=Master interval=20 timeout=30op monitor role=Slave interval=30 timeout=30crm(live)configure#ms ms_mydrbd mydrbdservice meta master-max=1 master-node-max=1 clone-max=2clone-node-max=1 notify=truecrm(live)configure#verifycrm(live)configure#commit状态信息查看主从转换验证crm(live)# nodecrm(live)node#standbycrm(live)node#online test1.magedu.com配置资源,通过NFS使其能够实现自动挂载Filesystem资源添加crm(live)configure#primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60定义排列colocation使Filesystem必须跟主节点在一起crm(live)configure#colocation mystore_with_ms_mydrbd inf: mystore ms_mydrbd:Master定义排列order约束crm(live)configure#order mystore_after_ms_mydrbd mandatory: ms_mydrbd:promote mystore:start节点状免费主机域名态信息查看在节点test2上查看是否成功挂载主备节点切换验证crm(live)# nodecrm(live)node#standby test2.magedu.com状态信息查看查看test1节点上Filesystem是否成功挂载
准备mysql服务现在的主节点是test1,首先在节点1上配置mysql服务创建mysql用户与mysql组# groupadd -g3306 mysql# useradd -g 3306-u 3306 -M mysql准备mysql# tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/# ln -sv mysql-5.5.28-linux2.6-i686mysql准备数据目录# cd /mydata# mkdir data# chownmysql.mysql data -R更改mysql文件属主属组# cd/usr/local/mysql# chown root.mysql/usr/local/mysql/* -R准备配置文件与服务脚本# cd/usr/local/mysql# cpsupport-files/my-large.cnf /etc/my.cnf# cpsupport-files/mysql.server /etc/init.d/修改配置文件# vim /etc/my.cnf添加以下内容(线程数与datadir目录位置)thread_concurrency= 2datadir=/mydata/data设置mysql服务不能开机启动# chkconfig –addmysqld# chkconfigmysqld off初始化mysql# cd/usr/local/mysql#scripts/mysql_install_db –user=mysql –datadir=/mydata/data启动mysqltest2节点mysql服务配置与test1节点相同,说明流程如下1关闭节点test1的mysql服务2把节点test2转换成Mastercrm(live)# nodecrm(live)node#standby test1.magedu.comcrm(live)node#online test1.magedu.com3开始配置test2的mysql服务流程与test1相同(不执行初始化操作)
配置mysql服务为高可用服务添加mysql为集群资源crm(live)configure#primitive mysqld lsb:mysqldcrm(live)configure#verifycrm(live)configure#定义colocation约束(mysql与mystore在一起;即与主节点在一起)crm(live)configure#colocation mysql_with_mystore inf: mysqld mystorecrm(live)configure#verify定义order约束(最后启动mysql服务)crm(live)configure#order mysqld_after_mystore mandatory: mystore mysqldcrm(live)configure#verifycrm(live)configure#commit节点状态信息查看test2上mysql服务启动状态查看主从节点切换测试crm(live)# nodecrm(live)node#standby test2.magedu.comcrm(live)node#online test2.magedu.com查看状态信息查看test1节点是否成功运行mysql服务到这里一个基于drbd与corosync实现的高可用mysql就完成了,希望能为大家提供一些帮助关于“DRBD和Corosync如何实现高可用MySQL”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
这篇文章主要介绍了MySQL常用的字符串函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值。MySQL 为…