前提准备三台虚拟机,一台提供MYSQL服务,两台准备配置高可用集群组成高可用MYSQL集群服务;
两台配置为高可用集群前提是两台机器能用域名ping通、支持基于ssh的双机互信、时间同步;
这两台配置高可用集群的服务器名字分别为node1.magedu.com node2.magedu.com
提供MYSQL服务名字为mail.magedu.com
首先配置域名ping通:在这两台服务器上这个配置文件中/etc/hosts添加如下内容:
172.16.6.3 node2.magedu.com node2
172.16.6.4 node1.magedu.com node1
并且要保证uname -n这个命令显示的内容跟你hostname显示的名字一样;
在RS1上输出一下的命令出现下面内容:
在RS2上输出一下的命令出现下面内容:
这样这两台就实现了域名直接的通信;

然后支持基于ssh的双机互信内容如下:
配置双机互信的命令是ssh-keygen -t rsa -P ''复制到对方的主机上用命令ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1(主机名称),然后检验用命令:ssh node1(这是对方的名称) 'ifconfig'出现nodefile1的地址就成功了
配置三台主机直间的互信只要把公钥发个对方就好了,命令是ssh-copy-id -i ~/.ssh/id_rsa.pub root@node1

时间同步是为了不出现在问题,因为高可用是有心跳检查的,要是时间差距大了,会让服务器认为对方宕机,所有要时间同步,一般时间差不能超过一秒钟,配置如下:
输入 date               显示系统时间
输入 hwclock --show     显示硬件时间
上面的命令是为了看看两台服务器的时间是系统时间一样还是硬件时间一样
  hwclock –hctosys     把硬件时间设置成系统时间
  hwclock –systohc     把系统时间设置成硬件时间
至于时间同步的调整看自己的需要了,这里就不在详细的介绍了;

现在就来配置这个基于高可用的mysql集群服务:

首先配置提供MYSQL服务的服务器
 1、我们现在创建一个目录: mkdir -pv /data/mydata
    并且基于nfs导出命令是: vim /etc/exports 添加如下内容:
    /data/mydata   172.16.6.0/24(rw,no_root_squash)  这里的能读写是因为前段的主机的节点是能来存储数据的。
    因为mysql的服务器的存储数据是以mysql用户的身份,为了保证nfs这节点上目录能被于前段节点上mysql ID号相同的用户具有读写权限,所以我们要创建一个这样的用户ID号是306,建立系统用户命令是:
   groupadd -r -g 306 dbuser
   useradd -g dbuser -u 306 -r dbuser
   检查是否创建成功输入命令:
   id dbuser 查看一下它的 uid gid groups是不是306是的话就成功了,否则在创建;
   给这个目录读写权限对于这个用户命令是:
   setfacl -m u:dbuser:rwx /data/mydata/
   导出命令:exportfs -ra
2、在node1、node2上分别创建上面的用户方法是一样的
   然后查看是否这个用户有读写权限内容如下:
   #mount -t nfs 172.16.6.1:/data/mydata/mnt
   #su - dbsuer
   $cd /mnt
   $touch a.txt
   $ls
   a.txt
   $rm a.txt
   $exit
   # umount /mnt


现在去配置高可用集群:
  1、在两个服务器上都安装这些rpm包
    resource-agents-1.0.4-1.1.el5.i386.rpm
    perl-TimeDate-1.16-5.el5.noarch.rpm
    pacemaker-libs-1.1.5-1.1.el5.i386.rpm
    pacemaker-cts-1.1.5-1.1.el5.i386.rpm
    pacemaker-1.1.5-1.1.el5.i386.rpm
    openaislib-1.1.3-1.6.el5.i386.rpm
    openais-1.1.3-1.6.el5.i386.rpm
    libesmtp-1.0.4-5.el5.i386.rpm
    heartbeat-libs-3.0.3-2.3.el5.i386.rpm
    heartbeat-3.0.3-2.3.el5.i386.rpm
    corosynclib-1.2.7-1.1.el5.i386.rpm
    corosync-1.2.7-1.1.el5.i386.rpm
    cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
    cluster-glue-1.0.6-1.6.el5.i386.rpm
    名命令是yum -y --nogpgcheck localinstall *.rpm
    安装好后:cd /etc/corosync
    复制这个配置文件: cp corosync.conf.example  corosync.conf
    打个这个配置文件进行修改内容如下:vim corosync.conf


    创建目录:mkdir /var/log/cluster
    生成认证密钥命令:corosync-keygen
    这个会生成一个文件叫做:authkey
    然后把这个corosync.conf authkey 复制给node2这个服务器上,并且在node2上创建一个目录也是/var/log/cluster
    命令如下:mkdir /var/log/cluster 复制命令是:scp -p corosync.conf authkey node2:/etc/corosync
    回到node1上启动corosync服务命令service corosync start
    在node1上启动node2上的corosync服务命令:ssh RS2 'service corosync start'
2、配置 corosync服务操作如下:


3、安装mysql
   创建一个目录/data/mydata命令是:mkdir -pv /data/mydata
   挂载这个目录mount -t nfs 172.16.6.1:/data/mydata  /data/mydata
   这里要确保dbuser对这里的/data/mydata有读写权限
   安装mysql的rpm包:mysql-5.5.28-linux2.6-i686.tar.gz
   然后解压到我们规划的目录下: tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local
   这里就不在详细介绍砸安装mysql,安装好后部不能让Mysql开机自动启动
   这里需要说明的是,mysql的配置文件可以放到一个共享文件中,这样就能让其他挂载点儿一个公用。
   在第二个节点上不能初始化mysql了。解压安装包挂载就好了,配置mysql好mysql。
   在这里我们需要修改一下这个配置文件 /etc/rc.d/mysqld 修改内容:
   datadir=/data/mydata
  

4、配置高可用的资源:命令如下:
   #crm configure   (进入用命令行配置高可用)
   #primitive MySQLIP ocf:hearbeat:IPaddr params ip=172.16.6.5(定义一个主资源)
   #verify (验证语法是否有错误)
   #primitive MySQLFS ocf:heartbeat:Filesystem params device="172.16.6.1:/data/mydata" directory="/data/mydata" fstype="nfs"  op start timeout=60 op stop timeout=60
   #verify
   #primitive MySQL lsb:mysqld
   #verify
   #group MySQLService MySQLIP MySQLFS MySQLD(定义一个组,让这三个资源工作的一起)
   #order MySQLFS_before_MySQLD mandatory:MySQLFS MySQLD(定义次序,一定要让MySQLD在MySQLFS之后启动)
   #verify
   #commit
   #status(检验服务启动与否)
   #exit

这样MYSQL的高可用服务器集群配置完成