zoukankan      html  css  js  c++  java
  • 【原】ubuntu下Mysql的HA(corosync+pacemaker+drbd)

    一、前提准备:

    1、OS:ubuntu 12.04

    2、cat /etc/hosts:

    1 127.0.0.1 localhost
    2 192.168.153.154 ha1
    3 192.168.153.155 ha2

    3、硬盘:/dev/sdb1

    4、vip:192.168.153.200

    二、corosync和pacemaker的安装配置:

    1、[ha1+ha2]:

    1 apt-get install -y pacemaker corosync

    2、[ha1]:

    1 corosync-keygen(时间较长)
    2 scp /etc/corosync/authkey root@ha2:/etc/corosync/

    3、[ha1+ha2]:取消corosync和pacemaker的开机启动:

     1 apt-get install -y sysv-rc-conf
     2 sysv-rc-conf(使用空格把drbd,pacemaker,corosync有X的地方取消掉,q退出)
     3 sed -i 's/127.0.0.1/192.168.153.0/g' /etc/corosync/corosync.conf
     4 sed -i 's/ver:       0/ver:       1/g' /etc/corosync/corosync.conf
     5 mkdir /var/log/cluster
     6 update-rc.d pacemaker start 50 1 2 3 4 5 . stop 01 0 6 .
     7 sed -i 's/no/yes/g' /etc/default/corosync
     8 service corosync start
     9 corosync-cfgtool -s
    10 corosync-quorumtool -l
    11 service pacemaker start
    12 验证:crm status
    13 
    14 root@ha1:~# crm status
    15 ============
    16 Last updated: Tue Feb 25 22:18:44 2014
    17 Last change: Tue Feb 25 22:17:49 2014 via crmd on ha1
    18 Stack: openais
    19 Current DC: ha1 - partition with quorum
    20 Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
    21 2 Nodes configured, 2 expected votes
    22 0 Resources configured.
    23 ============
    24 
    25 
    26 Online: [ ha1 ha2 ]

    三、drbd的安装配置:

    1、[ha1+ha2]:drbd的安装:

    1 tar -zxvf drbd8_8.4.4.orig.tar.gz(由于drbd8.4.2有bug,所以这里选择手动安装8.4.4版本)
    2 apt-get install -y debhelper flex xsltproc
    3 cd drbd8_8.4.4
    4 ./configure --localstatedir=/var --sysconfdir=/etc --with-km
    5 make && make install

    2、[ha1+ha2]:创建磁盘:

    1 fdisk /dev/sdb
    2 n
    3 p
    4 1
    5 2048
    6 ...
    7 w

    3、[ha1+ha2]:创建drbd的mysql资源:

     1 cat /etc/drbd.d/mysql.res
     2 resource mysql {
     3         device /dev/drbd0;
     4         disk /dev/sdb1;
     5         meta-disk internal;
     6         on ha1 {
     7                 address 192.168.153.154:7788;
     8         }
     9         on ha2 {
    10                 address 192.168.153.155:7788;
    11         }
    12         syncer {
    13                 rate 10M;
    14         }
    15 }
    16 echo -e 'drbd # -> added' >> /etc/modules
    17 drbdadm dump mysql
    18 drbdadm create-md mysql
    19 drbdadm up mysql
    20 验证:drbd-overview
    21 0:mysql/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r----- 

    4、[ha1]:

     1 drbdadm -- --overwrite-data-of-peer primary mysql
     2 cat /proc/drbd:
     3 root@ha1:~# cat /proc/drbd
     4 version: 8.4.4 (api:1/proto:86-101)
     5 GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by root@ha1, 2014-02-25 22:22:00
     6   0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
     7     ns:108044 nr:0 dw:0 dr:108708 al:0 bm:6 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:20861776
     8 [>....................] sync'ed:  0.6% (20372/20476)M
     9 finish: 0:16:02 speed: 21,608 (21,608) K/sec
    10 直到同步100%的时候才成功。结果是:
    11 root@ha1:~# cat /proc/drbd
    12 version: 8.4.4 (api:1/proto:86-101)
    13 GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by root@ha1, 2014-02-25 22:22:00
    14   0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    15     ns:20969820 nr:0 dw:0 dr:20970484 al:0 bm:1280 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
    16 service drbd restart
    17 mkfs.ext4 /dev/drbd0
    18 mkdir /mydata
    19 mount /dev/drbd0 /mydata
    20 mkdir -p /mydata/testfile  
    21 umount /dev/drbd0  
    22 drbdadm secondary mysql

    5、[ha2]:

    1 service drbd restart
    2 drbdadm primary mysql
    3 4 mkdir /mydata
    5 mount /dev/drbd0 /mydata
    6 ll /mydata/ 如果可以看到testfile说明成功。
    7 umount /dev/drbd0 
    8 drbdadm secondary mysql(如果中间出现错误,可以把ha1和ha2的drbd重启即可。)

    6、[ha1]:

    1 drbdadm primary mysql

    7、[ha1+ha2]:mysql的安装配置

    1 apt-get install -y mysql-server
    2 sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
    3 service mysql restart
    4 mysql -uroot -p
    5 grant all privileges on *.* to root@"%" identified by "password" with grant option;
    6 FLUSH PRIVILEGES;
    7 delete from mysql.user where user="";
    8 quit;
    9 service mysql stop

    8、[ha1]: 

    1 drbdadm primary mysql
    2 drbd-overview
    3 mount /dev/drbd0 /mydata
    4 cp -R -p /var/lib/mysql /mydata/

    9、[ha1+ha2]: 

    1 sed -i 's/2345/!0123456/g' /etc/init/mysql.conf
    2 sed -i -e '/datadir/cdatadir         = /mydata/mysql'  /etc/mysql/my.cnf
    3 sed -i '//var/lib/mysql/ /c/mydata/mysql/ r,' /etc/apparmor.d/usr.sbin.mysqld
    4 sed -i '//var/lib/mysql/** rwk/c/mydata/mysql/** rwk,' /etc/apparmor.d/usr.sbin.mysqld

    10、[ha1]:

    1 service mysql start
    2 mysql -uroot -p
    3 CREATE DATABASE test1;
    4 quit
    5 service mysql stop
    6 umount /dev/drbd0
    7 drbdadm secondary mysql

    11、[ha2]:

    1 drbdadm primary mysql
    2 mount /dev/drbd0 /mydata/
    3 service mysql start
    4 查看是否有数据库test1
    5 service mysql stop
    6 umount /dev/drbd0
    7 drbdadm secondary mysql

    12、[ha1]: 

    1 drbdadm primary mysql

    13、[ha1+ha2]: 

    1 service drbd stop

    14、[ha1]:

     1 crm configure property stonith-enabled=false
     2 crm configure property no-quorum-policy=ignore
     3 
     4 crm configure
     5 primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mysql op start timeout=240 op stop timeout=100 op monitor role=Master interval=20 timeout=30 op monitor role=Slave interval=30 timeout=30
     6 ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
     7 commit
     8 exit
     9 验证:crm status
    10 root@ha1:~# crm status
    11 ============
    12 Last updated: Tue Feb 25 23:06:09 2014
    13 Last change: Tue Feb 25 23:06:05 2014 via cibadmin on ha1
    14 Stack: openais
    15 Current DC: ha1 - partition with quorum
    16 Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
    17 2 Nodes configured, 2 expected votes
    18 2 Resources configured.
    19 ============
    20 
    21 
    22 Online: [ ha1 ha2 ]
    23 
    24 
    25   Master/Slave Set: ms_mysqldrbd [mysqldrbd]
    26      Masters: [ ha1 ]
    27       Slaves: [ ha2 ]
    28 
    29 crm configure
    30 primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/mydata fstype=ext4 op start timeout=60 op stop timeout=60
    31 colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master
    32 order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:start
    33 commit
    34 exit
    35 验证:crm status,mount
    36   Master/Slave Set: ms_mysqldrbd [mysqldrbd]
    37       Masters: [ ha1 ]
    38       Slaves: [ ha2 ]
    39   mystore (ocf::heartbeat:Filesystem): Started ha1
    40 
    41 
    42 crm configure
    43 primitive mysql lsb:mysql
    44 colocation mysql_with_mystore inf: mysql mystore
    45 order mysql_after_mystore mandatory: mystore mysql
    46 commit
    47 exit
    48 验证:crm status
    49 Master/Slave Set: ms_mysqldrbd [mysqldrbd]
    50       Masters: [ ha1 ]
    51       Slaves: [ ha2 ]
    52   mystore (ocf::heartbeat:Filesystem): Started ha1
    53   mysql (lsb:mysql): Started ha1
    54 
    55 crm configure
    56 primitive vip ocf:heartbeat:IPaddr params ip=192.168.153.200 nic=eth0 cidr_netmask=255.255.255.0  
    57 colocation vip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master vip 
    58 commit
    59 exit
    60 验证crm status
    61 Master/Slave Set: ms_mysqldrbd [mysqldrbd]
    62       Masters: [ ha1 ]
    63       Slaves: [ ha2 ]
    64   mystore (ocf::heartbeat:Filesystem): Started ha1
    65   mysql (lsb:mysql): Started ha1
    66   vip (ocf::heartbeat:IPaddr): Started ha1

    四、验证:

    1、客户端mysql验证:

     1 mysql -uroot -p -h 192.168.153.200  
     2 mysql> show databases;
     3 +--------------------+
     4 | Database           |
     5 +--------------------+
     6 | information_schema |
     7 | mysql              |
     8 | performance_schema |
     9 | test               |
    10 | test1              |
    11 +--------------------+

    2、模拟故障:

     1 root@ha1:~# crm
     2 crm(live)# node
     3 crm(live)node# standby
     4 crm(live)node# show
     5 ha1: normal
     6 standby: on
     7 ha2: normal
     8 crm(live)node# exit
     9 bye
    10 此时看一下状态:
    11 root@ha1:~# crm status
    12 Node ha1: standby
    13 Online: [ ha2 ]
    14 
    15 
    16  Master/Slave Set: ms_mysqldrbd [mysqldrbd]
    17      Masters: [ ha2 ]
    18      Stopped: [ mysqldrbd:0 ]
    19  mystore (ocf::heartbeat:Filesystem): Started ha2
    20  mysql (lsb:mysql): Started ha2
    21  vip (ocf::heartbeat:IPaddr): Started ha2

    此时,mysql已经运行于ha2上了。

  • 相关阅读:
    统计次数
    使用正则消除行号
    【收集】sql查询统计,周,月,年
    ASP.NET脚本过滤-防止跨站脚本攻击(收集别人的)
    win10环境下jdk1.8+Android Developer Tools Build: v22.3.0-887826的问题
    关于虚拟机的问题解决(转自豆瓣)
    工作
    numpy学习
    deepin Python pycharm安装
    pymysql连接和操作Mysql数据库
  • 原文地址:https://www.cnblogs.com/yuandianliws/p/3566981.html
Copyright © 2011-2022 走看看