本文是生产环境下实现数据库高可用方案实例,heartbeat我就不多说了,下面直接就是配置详细步骤:


   架构图大致如下:




一、硬件配置:


二、具体安装和配置步骤:

1、数据库的安装 (两台数据库上安装的方式一样!)

# yum install gcc gcc-c++ make ncurses-devel -y

# cd /usr/local/src

# tar xvf  cmake-2.8.5.tar.gz       //安装cmake

# cd cmake-2.8.5

# ./configure 

# make

# make install

 

# cd /usr/local/src

# tar zxvf mysql-5.5.23.tar.gz

# cd mysql-5.5.23

# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \

         -DMYSQL_DATADIR=/data/mysql \

         -DWITH_MYISAM_STORAGE_ENGINE=1 \

         -DWITH_INNOBASE_STORAGE_ENGINE=1 \

         -DWITH_ARCHIVE_STORAGE_ENGINE=1 \

         -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

         -DENABLED_LOCAL_INFILE=1 \

         -DDEFAULT_CHARSET=utf8 \

         -DDEFAULT_COLLATION=utf8_general_ci \

         -DEXTRA_CHARSETS=all  

         

# make 

#make install

 

mysql 配置

#userdel -r mysql

#groupadd -r -g 3306 mysql

# useradd -u 3306 -g mysql -r -M -s /sbin/nologin mysql

# cp support-files/my-huge.cnf   /etc/my.cnf

# cp support-files/mysql.server  /etc/init.d/mysqld

# chmod +x /etc/init.d/mysqld

一般安装mysql的时候,这地方都要加到开机自动启动中,但是做heartbeat的时候就不需要了,他的资源都是有heartbeat统一管理的,不需要单独启动的  

# cd /usr/local/bin //进入用户的默认搜索路径下建立mysql命令的软连接,可以直接执行mysql命令

#  ln -s /opt/mysql/bin/mysql

#  ln -s /opt/mysql/bin/mysqldump 

#  ln -s /opt/mysql/bin/mysqladmin  

#  ln -s /opt/mysql/bin/mysqlbinlog  

这里先不用初始化数据库的,应为我们要把数据库的数据文件放到共享存储设备上。

2、 接下来是安装和配置heartbeat了。

心跳网卡配置,我这里是拿一根网线直接连接到了两个服务器的eth1上了,网卡地址配置如下:


1)两个数据库进行密钥认证

 db01上的配置

 #ssh-keygen -t rsa  //生成公钥和密钥,一步enter到底就行了

 # ssh-copy-id -i .ssh/id_rsa root@10.1.1.3  //输入密码就行了

 db02上的配置

 #ssh-keygen -t rsa  //生成公钥和密钥,一步enter到底就行了

 # ssh-copy-id -i .ssh/id_rsa root@10.1.1.2  //输入密码就行了 


2)两台主机上都配置/etc/hosts

cat >>/etc/hosts <<EOF

10.211.1.178 db01.luowei.com

10.211.1.179 db02.luowei.com

192.168.1.2     db01.luowei.com

192.168.1.3     db02.luowei.com

EOF

(3) 安装heartbeat

# yum install  libnet -y

# groupadd haclient

# useradd -g haclient hacluster

# yum install heartbeat -y 

# cd /usr/share/doc/heartbeat-2.1.3/

# cp ha.cf haresources authkeys  /etc/ha.d/

# cd !$

配置heartbeat

编辑heartbeat主配置文件:

# vim  ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 15

warntime 5

initdead 30

udpport 694

ucast eth1 192.168.1.3

auto_failback off

node db01.luowei.com

node db02.luowei.com

respawn hacluster /usr/lib64/heartbeat/dopd

apiauth ipfail gid=haclient uid=hacluster

apiauth dopd gid=haclient uid=hacluster



编辑authkeys文件(加密认证文件)

# vim authkeys

auth 1

1 crcasdfdfasdfadfad      //这里的十个任意的字符串,就是两端认证的时候用到的

# chmod 600 authkeys

接下来就是配置资源文件了

# vim haresources 

db01.luowei.com    IPaddr::10.211.1.185/24/eth0 Filesystem::/dev/mpath/mpath1p1::/data::ext3 mysqld

这个时候需要把mysqld服务从/etc/init.d/mysqld 拷贝或者连接到/etc/ha.d/resource.d/

我这里就是连接过去:



这个时候你需要手动把存储挂在到一台服务器上,然后初始化数据库

接下来就是初始化 mysql

# mkdir -vpr /data

# mount /dev/mpath/mpath1p1 /data

# mkdir -vrp /data/{mysql,log,backup}

#chown -R mysql:mysql /data/

#/opt/mysql/scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/data/mysql &   //初始化数据库

修改mysql的配置文件中的datadir=/data/mysql就行了

保证两边的配置文件是相同的。

然后在卸载存储。

接下来就是把上面三个文件拷贝到另外一台服务器服务器上了。

#  /usr/lib64/heartbeat/ha_propagate  //通过此命令只能拷贝authkeysha.cf两个文件

# scp  haresources  db02.luowei.com:/etc/ha.d/

然后需要修改db02上的ha.cf文件,记住ucastip指向对方的ip就行了

然后就是把heartbeat添加到开机自动启动服务,记住要在一个节点上启动

# chkconfig heartbeat on 

# /etc/init.d/heartbeat start 

# ssh db02.luowei.com  -- '/etc/init.d/heartbeat start'

接下来看一下资源启动情况:



自动切换

# /etc/init.d/heartbeat standby

我这里就不演示了。


欢迎大家多交流!