MySQL Heartbeat+drbd高可用

MySQL Heartbeat+drbd高可用环境

--具体的配置信息如下所示:
角色               ip地址                   主机名字               server-id  

primary        心跳及传输IP:192.168.0.51     data-1                 1  
               管理及对外IP:10.0.0.51
               VIP10.0.0.151

standby        心跳及传输IP:192.168.0.52     data-2                 1 
               管理及对外IP:10.0.0.51
               VIP10.0.0.152

Heartbeat安装配置
http://blog.csdn.net/lt53130640688/article/details/50149425

1)关闭防火墙(两节点执行)
    chkconfig iptables off
    service iptables stop
    service iptables status
    setenforce 0
    sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config

(2)修改hosts解析文件(两节点执行)
    vi /etc/hosts
    data-1 192.168.0.51
    data-2 192.168.0.524)添加主机路由(两节点分别执行)
    --一节点(192.168.0.51)
    route add -host 192.168.0.52 dev eth1
    echo 'route add -host 192.168.0.52 dev eth1'>>/etc/rc.local
    route -n

    --二节点(192.168.0.52)
    route add -host 192.168.0.51 dev eth1
    echo 'route add -host 192.168.0.51 dev eth1'>>/etc/rc.local
    route -n

(5)下载epel包,yum安装heartbeat(两节点执行)
    --保留rpm包配置 /etc/yum.conf
    --163yum源:wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
    wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    rpm -ivh epel-release-6-8.noarch.rpm
    yum install -y heartbeat*

(6)修改配置文件(两节点执行)    
    --配置文件模板路径:/usr/share/doc/heartbeat-3.0.4/
    配置:
    cd /usr/share/doc/heartbeat-3.0.4
    cp ha.cf authkeys haresources /etc/ha.d/

    --**ha.cf参数配置**
    debugfile /var/log/ha-debug
    logfile /var/log/ha-log
    logfacility local1

    keepalive 2
    deadtime 30
    warntime 10
    initdead 60

    #bcast  eth0    # Linux
    #mcast eth0 225.0.0.1 694 1 0
    #ucast eth0 192.168.1.2
    #使用多播,
    mcast eth1 225.0.0.18 694 1 0 

    auto_failback on
    node   data-1
    node   data-2

    --**authkeys参数配置(sha1安全级别最高)**
    auth 1
    1 sha1 43432eeffe03ffi9ekfk0efe000efe0ff0fef0

    --**haresources参数配置(资源配置)资源可传递start stop 参数即可**
    data-1 IPaddr::10.0.0.151/24/eth0
    data-2 IPaddr::10.0.0.152/24/eth0

(7)启动和关闭heartbeat服务
    service heartbeat start
    service heartbeat stop
    service heartbeat status
    service heartbeat reload
    --chkconfig heartbeat off|on8)heartbeat资源接管
    --完全释放
    /usr/share/heartbeat/hb_standby 

    --完全接管
    /usr/share/heartbeat/hb_takeover 

    --接管本地
    /usr/share/heartbeat/hb_takeover local 

drbd安装配置
http://blog.csdn.net/lt53130640688/article/details/50150135

存储分区

1)使用fdisk或者parted分区
 fdisk -l
 fdisk /dev/sdb
 partprobe        ##分区信息写入磁盘
 ##或者采用parted分区,超过2T必须用partprobe分区
 parted /dev/sdb mklabel gpt
 parted /dev/sdb mkpart primary 0 4800000 #4.9T
 parted /dev/sdb mkpart primary 4800001 5800001
 parted /dev/sdb mkpart primary 5800002 5804098
 parted /dev/sdb p

(2)数据文件盘格式化
 mkfs.ext4 /dev/sdb1
 #mkfs.ext4  ##备节点不需要格式化
 #状态分区不要格式化(大小范围:1-2G)
 [root@data-2 ~]# mount /dev/sdb2 /mnt
 mount: you must specify the filesystem type

drbd安装

1)设置环境变量
 export LC_ALL=C2)编译安装drbd软件
 wget http://oss.linbit.com/drbd/8.4/drbd-8.4.4.tar.gz
 tar xf drbd-8.4.4.tar.gz
 cd drbd-8.4.4

 ./configure --prefix=/application/drbd8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/
 make KDIR=/usr/src/kernels/$(uname -r)/
 make install

 lsmod |grep drbd
 modprobe drbd  ##重启失效,加载到内核中
 lsmod |grep drbd
 echo "modprobe drbd" >>/etc/rc.local ##开机自动加载
 #yum install kernel-devel -y3)yum安装drbd软件
 [root@data-1 /]# rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
 [root@data-2 /]# yum install drbd kmod-drbd84

drbd配置

--模板路径
[root@data-1 drbd8.4.4]# ll /etc/drbd.d/
total 4
-rw-r--r-- 1 root root 1836 Dec  1 10:52 global_common.conf

--配置文件(两节点)
[root@data-1 etc]# vi /etc/drbd.conf 
global {
        usage-count no;
}
common {
       syncer {
             rate 1000M;
             verify-alg crc32c;  
       }
}
resource data {
   protocol C;

   disk {
     on-io-error detach;
   }
   on data-1 {
     device    /dev/drbd0;
     disk      /dev/sdb1;
     address    192.168.0.51:7788;
     meta-disk /dev/sdb2[0];   
   }
   on data-2 {
     device    /dev/drbd0;
     disk      /dev/sdb1;
     address    192.168.0.52:7788;
     meta-disk /dev/sdb2[0];  
  }
}

drbd初始化与启动

drbdadm --help
drbdadmin create-md data1)初始化
    [root@data-1 ~]# drbdadm create-md data
     Writing meta data...
     initializing activity log
     NOT initializing bitmap
     New drbd meta data block successfully created.2)创建目录
    mkdir -p /application/drbd8.4.4/var/run/drbd

(3)启动资源data
    drbdadm up data
    --查看同步状态
    [root@data-1 ~]# cat /proc/drbd 
    version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1, 2015-12-01 10:52:04
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:62974524)将第一个节点置为primary
    drbdadm -- --overwrite-data-of-peer primary data5)查看同步完成状态
    [root@data-1 data]# cat /proc/drbd 
    version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1, 2015-12-01 10:52:04
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:6297520 nr:0 dw:72 dr:6298459 al:3 bm:385 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:06)磁盘挂载(仅primary节点),Secondary挂载需要先drbdadm down data -->mount /dev/sdb1 /data
    mount /dev/drbd0 /data

MySQL编译安装
http://blog.csdn.net/lt53130640688/article/details/49659289

--MySQL参数不能有调用主机名的
yum install ncurses-devel -y

tar xf cmake-2.8.8.tar.gz 
cd cmake-2.8.8
./configure 
gmake
gmake install

groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
tar zxf mysql-5.5.32.tar.gz
cd  mysql-5.5.32

cmake -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
-DMYSQL_DATADIR=/application/mysql-5.5.32/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0

make && make install

ln -s /application/mysql-5.5.32 /application/mysql
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile

cd /
rz -y
unzip -o data.zip 
chmod -R 1777 /tmp
chown -R mysql.mysql /data
find /data/ -type f -name "mysql"|xargs chmod +x 
find /data/ -type f -name "mysql"|xargs ls -l
find /data/ -type f -name "mysql"|xargs dos2unix

cd /application/mysql/scripts/
./mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data/ --user=mysql

cd /data/3306/
./mysql start
netstat -lntup

/application/mysql/bin/mysqladmin -u root password '123456' -S /data/3306/mysql.sock 

cd /data/3306/
./mysql stop
netstat -lntup

高可用集群配置

--两节点执行,启动drbd
drbdadm up data

--主节点执行,主节点挂载磁盘
mount /dev/drbd0 /data

--两节点执行,MySQL初始化,删除备节点/data下内容,或者备节点不初始化
mkdir -p /data/3306/data
chown mysql.mysql /data/3306/data
cd /application/mysql/scripts/
./mysql_install_db --basedir=/application/mysql/ --datadir=/data/3306/data/ --user=mysql

--两节点执行,拷贝mysql启动脚本
cp /data/3306/mysql /etc/init.d/

--两节点执行,修改heartbeat资源参数配置
[root@data-1 resource.d]# vi /etc/ha.d/haresources 
data-1 IPaddr::10.0.0.151/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext4 mysql
data-2 IPaddr::10.0.0.152/24/eth

--两节点执行,关闭开机自启动服务
chkconfig mysql off
chkconfig drbd off
chkconfig heartbeat off
chkconfig --list|grep heartbeat
chkconfig --list|grep mysql
chkconfig --list|grep drbd

--主节点执行,关闭mysql服务,解除磁盘挂载,重启heartbeat服务
service mysql stop
service heartbeat stop
service heartbeat start

--备节点启动heartbeat
service heartbeat start

--查看主节点各服务状态
[root@data-1 resource.d]# ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.0.51/24 brd 10.0.0.255 scope global eth0
    inet 10.0.0.151/24 brd 10.0.0.255 scope global secondary eth0

[root@data-1 resource.d]# mount
/dev/drbd0 on /data type ext4 (rw)

[root@data-1 resource.d]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State           
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN 

--备节点,其他服务无
[root@data-2 /]# ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.0.52/24 brd 10.0.0.255 scope global eth0
    inet 10.0.0.152/24 brd 10.0.0.255 scope global secondary eth0

主备切换

--主节点,service heartbeat stop
--查看备节点服务状态
[root@data-2 /]# ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.0.52/24 brd 10.0.0.255 scope global eth0
    inet 10.0.0.152/24 brd 10.0.0.255 scope global secondary eth0
    inet 10.0.0.151/24 brd 10.0.0.255 scope global secondary eth0 

[root@data-2 /]# mount|grep data
/dev/drbd0 on /data type ext4 (rw)    

[root@data-2 /]# cat /proc/drbd 
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-2, 2015-12-01 10:52:04
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1348 nr:1492 dw:2840 dr:18339 al:9 bm:5 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0    

[root@data-2 /]# netstat -lntup|grep 3306
tcp       0      0 0.0.0.0:3306      0.0.0.0:*       LISTEN      10082/mysqld     

--启动主节点heartbeat服务,资源重新回到主节点 
[root@data-1 resource.d]# service heartbeat start
[root@data-1 resource.d]# netstat -lntup|grep 3306
tcp        0      0 0.0.0.0:3306    0.0.0.0:*        LISTEN      17887/mysqld  

[root@data-1 resource.d]# mount |grep data
/dev/drbd0 on /data type ext4 (rw)  

[root@data-1 resource.d]# cat /proc/drbd 
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1, 2015-12-01 10:52:04
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1812 nr:1536 dw:3368 dr:25317 al:10 bm:5 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

[root@data-1 resource.d]# ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.0.0.51/24 brd 10.0.0.255 scope global eth0
    inet 10.0.0.151/24 brd 10.0.0.255 scope global secondary eth0

--一节点服务器宕机,资源同样自动切换

你可能感兴趣的:(MySQL,mysql)