本文是生產環境下實現數據庫高可用方案實例,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 <<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 //通過此命令只能拷貝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
我這裏就不演示了。
歡迎大家多交流!