本文是生产环境下实现数据库高可用方案实例,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 [email protected] //输入密码就行了
db02上的配置
#ssh-keygen -t rsa //生成公钥和密钥,一步enter到底就行了
# ssh-copy-id -i .ssh/id_rsa [email protected] //输入密码就行了
(2)两台主机上都配置/etc/hosts
cat >>/etc/hosts <
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 //通过此命令只能拷贝authkeys和ha.cf两个文件
# scp haresources db02.luowei.com:/etc/ha.d/
然后需要修改db02上的ha.cf文件,记住ucast的ip指向对方的ip就行了
然后就是把heartbeat添加到开机自动启动服务,记住要在一个节点上启动
# chkconfig heartbeat on
# /etc/init.d/heartbeat start
# ssh db02.luowei.com -- '/etc/init.d/heartbeat start'
接下来看一下资源启动情况:
自动切换
# /etc/init.d/heartbeat standby
我这里就不演示了。
欢迎大家多交流!