Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

2023-10-29

大纲
一、前言
二、环境准备
三、Corosync 安装与配置
四、Pacemaker 安装与配置
五、DRBD 安装与配置
六、MySQL 安装与配置
七、crmsh 资源管理

推荐阅读:

Linux 高可用(HA)集群基本概念详解 http://www.linuxidc.com/Linux/2013-08/88522.htm

Linux 高可用(HA)集群之Heartbeat详解 http://www.linuxidc.com/Linux/2013-08/88521.htm

一、前言
      前几篇博文中我们讲解了,heartbeat、corosync、pacemaker,也讲解了高可用的Web集群、高可用的Mysql集群,这一篇博文 进行小小的总结,heartbeat与corosync是流行的Messaging Layer (集群信息层),非要在这两个当中选一个我选择corosync,至于理由是仁者见仁,智者见智啦,用过的人都知道。Pacemaker是最流行的 CRM(集群资源管理器),是从heartbeat v3中独立出来的资源管理器,同时Corosync+Pacemaker是最流行的高可用集群的套件,前面我们讲解的高可用的Mysql集群是 heartbaet+mysql+nfs组合,其有点令人不满意的是得要三台服务器,其中一台为共享存储,可是这对于中小型公司来说,花个好几万来买台服 务器,会不会有点浪费了,在这篇博文中我们将讲解,只用两台服务器来实现,高可用的Mysql数据库。在上一篇博文中我们已经详细讲解过了DRBD,这里 就不在重复说明,想看的博友可以参考一下这篇博文 http://www.linuxidc.com/Linux/2013-08/89035.htm  (Linux 高可用(HA)集群之DRBD详解),下面我们就来具体演示一下配置过程。
二、环境准备
1.操作系统
CentOS 6.4 X86_64位系统

2.软件环境

  • corosync-1.4.1-15.el6_4.1.x86_64
  • pacemaker-1.1.8-7.el6.x86_64
  • crmsh-1.2.6-0.rc2.2.1.x86_64
  • kmod-drbd84-8.4.2-1.el6_3.elrepo.x86_64
  • drbd84-utils-8.4.2-1.el6.elrepo.x86_64
  • mysql-5.5.33
  • 4.配置各节点互相解析 
    node1:
    [root@node1 ~]# uname -n  
    node1.test.com  
    [root@node1 ~]# cat /etc/hosts  
    127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4  
    ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6  
    192.168.1.201    node1.test.com    node1  
    192.168.1.202    node2.test.com    node2

    node2:
    [root@node2 ~]# uname -n  
    node2.test.com  
    [root@node2 ~]# cat /etc/hosts  
    127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4  
    ::1        localhost localhost.localdomain localhost6 localhost6.localdomain6  
    192.168.1.201    node1.test.com    node1  
    192.168.1.202    node2.test.com    node2

    5.配置各节点ssh互信
    node1:
    [root@node1 ~]# ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ''  
    [root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2.test.com

    node2:
    [root@node2 ~]# ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P '' 
    [root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1.test.com

    6.配置各节点时间同步 
    node1:
    [root@node1 ~]# ntpdate 202.120.2.101

    node2:
    [root@node2 ~]# ntpdate 202.120.2.101

    7.各节点关闭防火墙与SELinux
    node1:
    [root@node1 ~]# service iptables stop  
    [root@node1 ~]# chkconfig iptables off  
    [root@node1 ~]# cat /etc/selinux/config 
    # This file controls the state of SELinux on the system.  
    # SELINUX= can take one of these three values:  
    #    enforcing - SELinux security policy is enforced.  
    #    permissive - SELinux prints warnings instead of enforcing.  
    #    disabled - No SELinux policy is loaded.  
    SELINUX=disabled

    node2:
    [root@node2 ~]# service iptables stop  
    [root@node2 ~]# chkconfig iptables off  
    [root@node2 ~]# cat /etc/selinux/config 
    # This file controls the state of SELinux on the system.  
    # SELINUX= can take one of these three values:  
    #    enforcing - SELinux security policy is enforced.  
    #    permissive - SELinux prints warnings instead of enforcing.  
    #    disabled - No SELinux policy is loaded.  
    SELINUX=disabled

    8.各节点安装yum源
    node1:
    [root@node1 src]# wget http://download.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
    [root@node1 src]# rpm -ivh epel-release-6-8.noarch.rpm 
    warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256Signature, key ID 0608b895: NOKEY 
    Preparing...                ########################################### [100%] 
    1:epel-release          ########################################### [100%] 
    [root@node1 src]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
    [root@node1 ~]# rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 
    [root@node1 ~]# yum list

    node2:
    [root@node2 src]# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
    [root@node2 src]# rpm -ivh epel-release-6-8.noarch.rpm 
    warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256Signature, key ID 0608b895: NOKEY 
    Preparing...                ########################################### [100%] 
    1:epel-release          ########################################### [100%] 
    [root@node2 src]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
    [root@node2 ~]# rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm 
    [root@node2 ~]# yum list

    三、Corosync 安装与配置(参考博文:http://www.linuxidc.com/Linux/2013-08/88733.htm )
    1.安装Corosync
    node1:
    [root@node1 ~]# yum install -y corosync

    node2:
    [root@node2 ~]# yum install -y corosync

    2.配置Corosync(注,所有的配置说明我就不详细说明了,因为前面的博文全部讲解过)
    [root@node1 ~]# cd /etc/corosync/  
    [root@node1 corosync]# ll  
    总用量 16  
    -rw-r--r-- 1 root root  445 5月  15 05:09 corosync.conf.example  
    -rw-r--r-- 1 root root 1084 5月  15 05:09 corosync.conf.example.udpu  
    drwxr-xr-x 2 root root 4096 5月  15 05:09 service.d  
    drwxr-xr-x 2 root root 4096 5月  15 05:09 uidgid.d  
    [root@node1 corosync]# cp corosync.conf.example corosync.conf  
    [root@node1 corosync]# vim corosync.conf  
    [root@node1 corosync]# cat corosync.conf  
    # Please read the corosync.conf.5 manual page  
    compatibility: whitetank 
    totem {  
        version: 2  
        secauth: on  
        threads: 0  
        interface {  
            ringnumber: 0  
            bindnetaddr: 192.168.1.0  
            mcastaddr: 226.94.10.10  
            mcastport: 5405  
            ttl: 1  
        }  

    logging {  
        fileline: off  
        to_stderr: no  
        to_logfile: yes  
        to_syslog: no  
        logfile: /var/log/cluster/corosync.log  
        debug: off  
        timestamp: on  
        logger_subsys {  
            subsys: AMF  
            debug: off  
        }  

    amf {  
        mode: disabled  

    service {  
        ver: 0 
        name: pacemaker 
    }  
    aisexec {    
        user: root 
        group: root 
    }

    3.生成密钥文件
    [root@node1 corosync]# mv /dev/{random,random.bak}  
    [root@node1 corosync]# ln -s /dev/urandom /dev/random  
    [root@node1 corosync]# corosync-keygen    
    Corosync Cluster Engine Authentication key generator.  
    Gathering 1024 bits for key from /dev/random.  
    Press keys on your keyboard to generate entropy.  
    Writing corosync key to /etc/corosync/authkey. 
    [root@node1 corosync]# ll  
    总用量 24  
    -r-------- 1 root root  128 8月  17 17:17 authkey  
    -rw-r--r-- 1 root root  544 8月  17 17:14 corosync.conf  
    -rw-r--r-- 1 root root  445 5月  15 05:09 corosync.conf.example  
    -rw-r--r-- 1 root root 1084 5月  15 05:09 corosync.conf.example.udpu  
    drwxr-xr-x 2 root root 4096 5月  15 05:09 service.d  
    drwxr-xr-x 2 root root 4096 5月  15 05:09 uidgid.d

    4.将node1上配置文件复制到node2上
    [root@node1 corosync]# scp authkey corosync.conf node2:/etc/corosync/  
    authkey                                                                                100%  128    0.1KB/s  00:00  
    corosync.conf                                                                          100%  542    0.5KB/s  00:00

    好了,到这里corosync配置完成,下面我们配置pacemaker

    四、Pacemaker 安装与配置(参考博文:http://www.linuxidc.com/Linux/2013-08/89037.htm )
    1.安装pacemaker
    node1:
    [root@node1 ~]# yum install -y pacemaker

    node2:
    [root@node2 ~]# yum install -y pacemaker

    2.安装crmsh
    node1:
    [root@node1 ~]# wget  http://download.openSUSE.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm 
    [root@node1 ~]# rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  
    warning: crmsh-1.2.6-0.rc2.2.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 7b709911: NOKEY  
    error: Failed dependencies:  
        pssh is needed by crmsh-1.2.6-0.rc2.2.1.x86_64  
        python-dateutil is needed by crmsh-1.2.6-0.rc2.2.1.x86_64  
        python-lxml is needed by crmsh-1.2.6-0.rc2.2.1.x86_64 
    [root@node1 ~]# yum install -y python-dateutil python-lxml 
    [root@node1 ~]# rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm --nodeps  
    warning: crmsh-1.2.6-0.rc2.2.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 7b709911: NOKEY  
    Preparing...                ########################################### [100%]  
      1:crmsh                  ########################################### [100%] 
    [root@node1 ~]# crm  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)  
    crm(live)# help 
    This is crm shell, a Pacemaker command line interface. 
    Available commands: 
        cib              manage shadow CIBs  
        resource        resources management  
        configure        CRM cluster configuration  
        node            nodes management  
        options          user preferences  
        history          CRM cluster history  
        site            Geo-cluster support  
        ra              resource agents information center  
        status          show cluster status  
        help,?          show help (help topics for list of topics)  
        end,cd,up        go back one level  
        quit,bye,exit    exit the program

    node2:
    [root@node2 ~]# wget  http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/x86_64/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm 
    [root@node2 ~]# rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm  
    warning: crmsh-1.2.6-0.rc2.2.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 7b709911: NOKEY  
    error: Failed dependencies:  
        pssh is needed by crmsh-1.2.6-0.rc2.2.1.x86_64  
        python-dateutil is needed by crmsh-1.2.6-0.rc2.2.1.x86_64  
        python-lxml is needed by crmsh-1.2.6-0.rc2.2.1.x86_64 
    [root@node2 ~]# yum install -y python-dateutil python-lxml 
    [root@node2 ~]# rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm --nodeps  
    warning: crmsh-1.2.6-0.rc2.2.1.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 7b709911: NOKEY  
    Preparing...                ########################################### [100%]  
      1:crmsh                  ########################################### [100%] 
    [root@node2 ~]# crm  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)  
    crm(live)# help 
    This is crm shell, a Pacemaker command line interface. 
    Available commands: 
        cib              manage shadow CIBs  
        resource        resources management  
        configure        CRM cluster configuration  
        node            nodes management  
        options          user preferences  
        history          CRM cluster history  
        site            Geo-cluster support  
        ra              resource agents information center  
        status          show cluster status  
        help,?          show help (help topics for list of topics)  
        end,cd,up        go back one level  
        quit,bye,exit    exit the program

    3.启动corosync(注,在配置corosync时,将pacemaker整合进corosync中,corosync启动的同时也会启动pacemaker)
    [root@node1 ~]# ssh node2 "service corosync start"  
    Starting Corosync Cluster Engine (corosync): [确定]  
    [root@node1 ~]# service corosync start  
    Starting Corosync Cluster Engine (corosync):              [确定]

    4.查看启动信息
    (1).查看corosync引擎是否正常启动
    [root@node1 ~]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log  
    Aug 17 17:31:20 corosync [MAIN  ] Corosync Cluster Engine ('1.4.1'): started and ready to provide service.  
    Aug 17 17:31:20 corosync [MAIN  ] Successfully read main configuration file '/etc/corosync/corosync.conf'.

    (2).查看初始化成员节点通知是否正常发出
    [root@node1 ~]# grep  TOTEM /var/log/cluster/corosync.log  
    Aug 17 17:31:20 corosync [TOTEM ] Initializing transport (UDP/IP Multicast).  
    Aug 17 17:31:20 corosync [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).  
    Aug 17 17:31:21 corosync [TOTEM ] The network interface [192.168.1.201] is now up.  
    Aug 17 17:31:21 corosync [TOTEM ] A processor joined or left the membership and a new membership was formed.

    (3).检查启动过程中是否有错误产生
    [root@node1 ~]# grep ERROR: /var/log/cluster/corosync.log  
    Aug 17 17:31:21 corosync [pcmk  ] ERROR: process_ais_conf: You have configured a cluster using the Pacemaker plugin for Corosync. The plugin is not supported in this environment and will be removed very soon.  
    Aug 17 17:31:21 corosync [pcmk  ] ERROR: process_ais_conf:  Please see Chapter 8 of 'Clusters from Scratch' (http://www.clusterlabs.org/doc) for details on using Pacemaker with CMAN

    (4).查看pacemaker是否正常启动
    [root@node1 ~]# grep pcmk_startup /var/log/cluster/corosync.log  
    Aug 17 17:31:21 corosync [pcmk  ] info: pcmk_startup: CRM: Initialized  
    Aug 17 17:31:21 corosync [pcmk  ] Logging: Initialized pcmk_startup  
    Aug 17 17:31:21 corosync [pcmk  ] info: pcmk_startup: Maximum core file size is: 18446744073709551615  
    Aug 17 17:31:21 corosync [pcmk  ] info: pcmk_startup: Service: 9  
    Aug 17 17:31:21 corosync [pcmk  ] info: pcmk_startup: Local hostname: node1.test.com

    5.查看集群状态
    [root@node1 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)  
    Last updated: Sat Aug 17 17:36:24 2013  
    Last change: Sat Aug 17 17:31:33 2013 via crmd on node2.test.com  
    Stack: classic openais (with plugin)  
    Current DC: node2.test.com - partition with quorum  
    Version: 1.1.8-7.el6-394e906  
    2 Nodes configured, 2 expected votes  
    0 Resources configured. 
    Online: [ node1.test.com node2.test.com ]

    注:node1与node2都在线,DC是node2,符合法定票数
    五、DRBD 安装与配置(参考博文:http://www.linuxidc.com/Linux/2013-08/89035.htm )
    1.安装DRBD 
    node1:
    [root@node1 ~]# yum -y install drbd84 kmod-drbd84

    node2:
    [root@node1 ~]# yum -y install drbd84 kmod-drbd84

    2.配置DRBD
    [root@node1 ~]# cat /etc/drbd.d/global_common.conf 
    global { 
    usage-count no; #让linbit公司收集目前drbd的使用情况,yes为参加,我们这里不参加设置为no 
    # minor-count dialog-refresh disable-ip-verification 

    common { 
    handlers { 
    pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
    pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
    local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; 
    # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; 
    # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; 
    # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; 
    # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; 
    # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; 

    startup { 
    # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb 

    options { 
    # cpu-mask on-no-data-accessible 

    disk { 
    # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes 
    # disk-drain md-flushes resync-rate resync-after al-extents 
    # c-plan-ahead c-delay-target c-fill-target c-max-rate 
    # c-min-rate disk-timeout 
    on-io-error detach; #同步错误的做法是分离 

    net { 
    # protocol timeout max-epoch-size max-buffers unplug-watermark 
    # connect-int ping-int sndbuf-size rcvbuf-size ko-count 
    # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri 
    # after-sb-1pri after-sb-2pri always-asbp rr-conflict 
    # ping-timeout data-integrity-alg tcp-cork on-congestion 
    # congestion-fill congestion-extents csums-alg verify-alg 
    # use-rle 
    cram-hmac-alg "sha1"; #设置加密算法sha1 
    shared-secret "mydrbdlab"; #设置加密key 

    }

    3.增加资源
    [root@node1 drbd.d]# cat web.res 
    resource web { 
    on node1.test.com { 
    device    /dev/drbd0; 
    disk      /dev/sdb; 
    address  192.168.1.201:7789; 
    meta-disk internal; 

    on node2.test.com { 
    device    /dev/drbd0; 
    disk      /dev/sdb; 
    address  192.168.1.202:7789; 
    meta-disk internal; 

    }

    4.同步配置文件到node2’
    [root@node1 drbd.d]# scp global_common.conf web.res node2:/etc/drbd.d/

    5.node1与node2上初始化资源
    node1:
    [root@node1 ~]# drbdadm create-md web 
    Writing meta data... 
    initializing activity log 
    NOT initializing bitmap 
    New drbd meta data block successfully created.

    node2:
    [root@node2 ~]# drbdadm create-md web 
    Writing meta data... 
    initializing activity log 
    NOT initializing bitmap 
    New drbd meta data block successfully created.

    6.启动DRBD
    node1:
    1 [root@node1 ~]# service drbd start

    node2:
    [root@node2 ~]# service drbd start

    7.查看一下状态
    node1:
    [root@node1 ~]# drbd-overview 
    0:web/0Connected Secondary/SecondaryInconsistent/InconsistentC r-----

    node2:
    [root@node2 ~]# drbd-overview 
    0:web/0Connected Secondary/SecondaryInconsistent/InconsistentC r-----

    8.设置node1为主节点
    [root@node1 ~]# drbdadm -- --overwrite-data-of-peer primary web  
    [root@node1 ~]# drbd-overview    
      0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r-----

    9.格式化并挂载
    [root@node1 ~]# mke2fs -j /dev/drbd 
    [root@node1 ~]# mkdir /drbd 
    [root@node1 ~]# mount /dev/drbd0 /drbd/ 
    [root@node1 ~]# mount 
    /dev/sda2on / typeext4 (rw) 
    proc on /proctypeproc (rw) 
    sysfs on /systypesysfs (rw) 
    devpts on /dev/ptstypedevpts (rw,gid=5,mode=620) 
    tmpfs on /dev/shmtypetmpfs (rw) 
    /dev/sda1on /boottypeext4 (rw) 
    /dev/sda3on /datatypeext4 (rw) 
    none on /proc/sys/fs/binfmt_misctypebinfmt_misc (rw) 
    /dev/drbd0on /drbdtypeext3 (rw) 
    [root@node1 ~]# cd /drbd/ 
    [root@node1 drbd]# cp /etc/inittab /drbd/ 
    [root@node1 drbd]# ll 
    总用量 20 
    -rw-r--r-- 1 root root  884 8月  17 13:50 inittab 
    drwx------ 2 root root 16384 8月  17 13:49 lost+found

    10.设置node2为主节点
    [root@node1 ~]# umount /drbd/ 
    [root@node1 ~]# drbdadm secondary web 
    [root@node1 ~]# drbd-overview 
    [root@node2 ~]# drbdadm primary web 
    [root@node2 ~]# drbd-overview  
    0:web/0Connected Primary/SecondaryUpToDate/UpToDateC r-----  
    [root@node2 ~]# mkdir /drbd 
    [root@node2 ~]# mount /dev/drbd0 /drbd/ 
    [root@node2 ~]# ll /drbd/ 
    总用量 20 
    -rw-r--r-- 1 root root  884 8月  17 13:50 inittab 
    drwx------ 2 root root 16384 8月  17 13:49 lost+found

    好了,到这里DRBD配置全部完成,下面我们来配置MySQl

    六、MySQL 安装与配置
    1.安装Mysql
    node1:
    [root@node1 ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/ 
    [root@node1 ~]# cd /usr/local/  
    [root@node1 local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql  
    "mysql" -> "mysql-5.5.33-linux2.6-x86_64"
    [root@node1 ~]# chown -R root:mysql /usr/local/mysql/* 
    [root@node1 ~]# scp mysql-5.5.33-linux2.6-x86_64.tar.gz node2:/root/

    node2:
    [root@node2 ~]# tar xf mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local/ 
    [root@node2 ~]# cd /usr/local/  
    [root@node2 local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql  
    "mysql" -> "mysql-5.5.33-linux2.6-x86_64"
    [root@node2 ~]# chown -R root:mysql /usr/local/mysql/*

    2.创建Mysql用户与组
    node1:
    (1).创建mysql组  
    1 [root@node1 ~]# groupadd -g 3306 mysql

    (2).创建mysql用户  
    [root@node1 ~]# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql

    (3).查看
    [root@node1 ~]# id mysql 
    uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)

    node2:
    (1).创建mysql组  
    [root@node2 ~]# groupadd -g 3306 mysql

    (2).创建mysql用户   
    [root@node2 ~]# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql

    (3).查看 
    [root@node2 ~]# id mysql 
    uid=3306(mysql) gid=3306(mysql) groups=3306(mysql)

    3.将node1的DRBD设置为主节点并挂载
    [root@node1 ~]# drbd-overview  
      0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r----- 
    [root@node1 ~]# mkdir /mydata  
    [root@node1 ~]# mount /dev/drbd0 /mydata/ 
    [root@node1 ~]# cd /mydata/ 
    [root@node1 mydata]# mkdir data 
    [root@node1 mydata]# chown -R  mysql.mysql /mydata/data/  
    [root@node1 mydata]# ll  
    总用量 20  
    drwxr-xr-x 2 mysql mysql  4096 8月  17 18:37 data  
    drwx------ 2 root  root  16384 8月  17 13:49 lost+found

    4.提供配置文件
    [root@node1 ~]# cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf 
    [root@node1 ~]# vim /etc/my.cnf 
    #增加一行 
    datadir = /mydata/data

    5.初始化Mysql
    [root@node1 data]# /usr/local/mysql/scripts/mysql_install_db --datadir=/mydata/data/ --basedir=/usr/local/mysql --user=mysql 
    [root@node1 data]# ll  
    总用量 8  
    drwx------ 2 mysql root 4096 8月  17 18:40 mysql  
    drwx------ 2 mysql root 4096 8月  17 18:40 test

    6.提供启动脚本
    [root@node1 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld  
    [root@node1 ~]# chmod +x /etc/init.d/mysqld

    7.启动并测试Mysql
    [root@node1 data]# service mysqld start  
    Starting MySQL..... SUCCESS!    
    [root@node1 data]# /usr/local/mysql/bin/mysql  
    Welcome to the MySQL monitor.  Commands end with ; or \g.  
    Your MySQL connection id is 1  
    Server version: 5.5.33-log MySQL Community Server (GPL) 
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 
    Oracle is a registered trademark of Oracle Corporation and/or its  
    affiliates. Other names may be trademarks of their respective  
    owners. 
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
    mysql> show databases;  
    +--------------------+  
    | Database          |  
    +--------------------+  
    | information_schema |  
    | mysql              |  
    | performance_schema |  
    | test              |  
    +--------------------+  
    4 rows in set (0.08 sec) 
    mysql>

    8.将node1上mysql配置文件与启动脚本复制到node2上
    [root@node1 ~]# scp /etc/my.cnf node2:/etc/  
    my.cnf                                                                                100% 4687    4.6KB/s  00:00  
    [root@node1 ~]# scp /etc/init.d/mysqld node2:/etc/init.d/  
    mysqld                                                                                100%  11KB  10.6KB/s  00:00

    9.关闭mysql并设置开机不启动
    [root@node1 ~]# service mysqld stop  
    Shutting down MySQL. SUCCESS! 
    [root@node1 data]# chkconfig mysqld off  
    [root@node1 data]# chkconfig mysqld --list  
    mysqld            0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

    10.将node2节点上的DRBD设置为主节点并挂载
    [root@node1 ~]# umount /mydata/  
    [root@node1 ~]# drbdadm secondary web  
    [root@node1 ~]# drbd-overview    
      0:web/0  Connected Secondary/Secondary UpToDate/UpToDate C r----- 
    [root@node2 ~]# drbdadm primary web  
    [root@node2 ~]# drbd-overview    
      0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r-----    
    [root@node2 ~]# mkdir /mydata  
    [root@node2 ~]# mount /dev/drbd0 /mydata/  
    [root@node2 ~]# cd /mydata/  
    [root@node2 mydata]# ll  
    总用量 20  
    drwxr-xr-x 5 mysql mysql  4096 8月  17 19:41 data  
    drwx------ 2 root  root  16384 8月  17 13:49 lost+found

    11.启动并测试node2上的mysql
    [root@node2 data]# service mysqld start  
    Starting MySQL... SUCCESS!    
    [root@node2 data]# /usr/local/mysql/bin/mysql    
    Welcome to the MySQL monitor.  Commands end with ; or \g.    
    Your MySQL connection id is 1    
    Server version: 5.5.33-log MySQL Community Server (GPL) 
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 
    Oracle is a registered trademark of Oracle Corporation and/or its  
    affiliates. Other names may be trademarks of their respective    
    owners. 
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
    mysql>

    12.关闭node2上mysql并设置开机不启动
    [root@node2 ~]# service mysqld stop  
    Shutting down MySQL. SUCCESS!    
    [root@node2 ~]# chkconfig mysqld off    
    [root@node2 ~]# chkconfig mysqld --list    
    mysqld            0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

    好了,到这里mysql配置全部完成,有一点得说明一下。启动mysql时,可能会出错查看一下错误日志会发现缺一下库文件 libaio,这里我们用yum install -y libaio安装一下,便能顺利启动。
    七、crmsh 资源管理
    1.关闭drbd并设置开机不启动
    node1:
    [root@node1 ~]# service drbd stop  
    Stopping all DRBD resources: .    
    [root@node1 ~]# chkconfig drbd off    
    [root@node1 ~]# chkconfig drbd --list    
    drbd              0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

    node2:
    12345 [root@node2 ~]# service drbd stop  
    Stopping all DRBD resources:    
    [root@node2 ~]# chkconfig drbd off    
    [root@node2 ~]# chkconfig drbd --list    
    drbd              0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

    2.增加drbd资源 
    [root@node1 ~]# crm 
     Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)  
    crm(live)# configure  
    crm(live)configure# property stonith-enabled=false  
    crm(live)configure# property no-quorum-policy=ignore    
    crm(live)configure# verify    
    crm(live)configure# commit    
    crm(live)configure# primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=web op start timeout=240 op stop timeout=100 op monitor role=Master interval=20 timeout=30 op monitor role=Slave interval=30 timeout=30 
    crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true 
    crm(live)configure# show 
    node node1.test.com  
    node node2.test.com    
    primitive mysqldrbd ocf:heartbeat:drbd \    
            params drbd_resource="web" \    
            op start timeout="240" interval="0" \    
            op stop timeout="100" interval="0" \    
            op monitor role="Master" interval="20" timeout="30" \    
            op monitor role="Slave" interval="30" timeout="30"  
    ms ms_mysqldrbd mysqldrbd \    
            meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"  
    property $id="cib-bootstrap-options" \    
            dc-version="1.1.8-7.el6-394e906" \    
            cluster-infrastructure="classic openais (with plugin)" \    
            expected-quorum-votes="2" \    
            stonith-enabled="false" \    
            no-quorum-policy="ignore"
    [root@node1 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    Last updated: Sat Aug 17 20:14:16 2013    
    Last change: Sat Aug 17 20:12:55 2013 via cibadmin on node1.test.com    
    Stack: classic openais (with plugin)    
    Current DC: node1.test.com - partition with quorum    
    Version: 1.1.8-7.el6-394e906    
    2 Nodes configured, 2 expected votes    
    2 Resources configured. 
    Online: [ node1.test.com node2.test.com ] 
     Master/Slave Set: ms_mysqldrbd [mysqldrbd]  
        Masters: [ node2.test.com ]    
        Slaves: [ node1.test.com ]

    3.增加文件系统资源 
    crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60    
    crm(live)configure# verify    
    crm(live)configure# colocation mystore_with_ms_mysqldrbd inf: ms_mysqldrbd:Master    
    ERROR: syntax in colocation: colocation mystore_with_ms_mysqldrbd inf: ms_mysqldrbd:Master    
    crm(live)configure# colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master    
    crm(live)configure# order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:start    
    crm(live)configure# verify    
    crm(live)configure# commit 
    crm(live)configure# show 
    node node1.test.com  
    node node2.test.com    
    primitive mysqldrbd ocf:heartbeat:drbd \    
            params drbd_resource="web" \    
            op start timeout="240" interval="0" \    
            op stop timeout="100" interval="0" \    
            op monitor role="Master" interval="20" timeout="30" \    
            op monitor role="Slave" interval="30" timeout="30"  
    primitive mystore ocf:heartbeat:Filesystem \    
            params device="/dev/drbd0" directory="/mydata" fstype="ext3" \    
            op start timeout="60" interval="0" \    
            op stop timeout="60" interval="0"  
    ms ms_mysqldrbd mysqldrbd \    
            meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"  
    colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master    
    order mystore_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mystore:start    
    property $id="cib-bootstrap-options" \    
            dc-version="1.1.8-7.el6-394e906" \    
            cluster-infrastructure="classic openais (with plugin)" \    
            expected-quorum-votes="2" \    
            stonith-enabled="false" \    
            no-quorum-policy="ignore"
    [root@node1 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    Last updated: Sat Aug 17 20:37:26 2013    
    Last change: Sat Aug 17 20:19:51 2013 via cibadmin on node1.test.com    
    Stack: classic openais (with plugin)    
    Current DC: node1.test.com - partition with quorum    
    Version: 1.1.8-7.el6-394e906    
    2 Nodes configured, 2 expected votes    
    3 Resources configured. 
    Online: [ node1.test.com node2.test.com ] 
     Master/Slave Set: ms_mysqldrbd [mysqldrbd]  
        Masters: [ node2.test.com ]    
        Slaves: [ node1.test.com ]    
     mystore    (ocf::heartbeat:Filesystem):    Started node2.test.com 
    [root@node2 ~]# mount  
    /dev/sda2 on / type ext4 (rw)    
    proc on /proc type proc (rw)    
    sysfs on /sys type sysfs (rw)    
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)    
    tmpfs on /dev/shm type tmpfs (rw)    
    /dev/sda1 on /boot type ext4 (rw)    
    /dev/sda3 on /data type ext4 (rw)    
    none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)    
    /dev/drbd0 on /mydata type ext3 (rw)    
    [root@node2 ~]# cd /mydata/data/    
    [root@node2 data]# ll    
    总用量 29824    
    -rw-rw---- 1 mysql mysql 18874368 8月  17 19:48 ibdata1    
    -rw-rw---- 1 mysql mysql  5242880 8月  17 19:48 ib_logfile0    
    -rw-rw---- 1 mysql mysql  5242880 8月  17 18:57 ib_logfile1    
    drwx------ 2 mysql root      4096 8月  17 18:57 mysql    
    -rw-rw---- 1 mysql mysql    27698 8月  17 18:57 mysql-bin.000001    
    -rw-rw---- 1 mysql mysql  1061358 8月  17 18:57 mysql-bin.000002    
    -rw-rw---- 1 mysql mysql      126 8月  17 19:41 mysql-bin.000003    
    -rw-rw---- 1 mysql mysql      126 8月  17 19:48 mysql-bin.000004    
    -rw-rw---- 1 mysql mysql      76 8月  17 19:47 mysql-bin.index    
    -rw-r----- 1 mysql root      2302 8月  17 19:41 node1.test.com.err    
    -rw-r----- 1 mysql root      1849 8月  17 19:48 node2.test.com.err    
    drwx------ 2 mysql mysql    4096 8月  17 18:57 performance_schema    
    drwx------ 2 mysql root      4096 8月  17 18:57 test

    4.增加mysql资源 
    crm(live)# configure    
    crm(live)configure# primitive mysqld lsb:mysqld    
    crm(live)configure# colocation mysqld_with_mystore inf: mysqld mystore    
    crm(live)configure# verify    
    crm(live)configure# show    
    node node1.test.com    
    node node2.test.com    
    primitive mysqld lsb:mysqld    
    primitive mysqldrbd ocf:heartbeat:drbd \    
        params drbd_resource="web" \    
        op start timeout="240" interval="0" \    
        op stop timeout="100" interval="0" \    
        op monitor role="Master" interval="20" timeout="30" \    
        op monitor role="Slave" interval="30" timeout="30"  
    primitive mystore ocf:heartbeat:Filesystem \    
        params device="/dev/drbd0" directory="/mydata" fstype="ext3" \    
        op start timeout="60" interval="0" \    
        op stop timeout="60" interval="0"  
    ms ms_mysqldrbd mysqldrbd \    
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"  
    colocation mysqld_with_mystore inf: mysqld mystore    
    colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master    
    order mystore_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mystore:start    
    property $id="cib-bootstrap-options" \    
        dc-version="1.1.8-7.el6-394e906" \    
        cluster-infrastructure="classic openais (with plugin)" \    
        expected-quorum-votes="2" \    
        stonith-enabled="false" \    
        no-quorum-policy="ignore"
    crm(live)configure# order mysqld_after_mystore mandatory: mystore mysqld  
    crm(live)configure# verify    
    crm(live)configure# show    
    node node1.test.com    
    node node2.test.com    
    primitive mysqld lsb:mysqld    
    primitive mysqldrbd ocf:heartbeat:drbd \    
        params drbd_resource="web" \    
        op start timeout="240" interval="0" \    
        op stop timeout="100" interval="0" \    
        op monitor role="Master" interval="20" timeout="30" \    
        op monitor role="Slave" interval="30" timeout="30"  
    primitive mystore ocf:heartbeat:Filesystem \    
        params device="/dev/drbd0" directory="/mydata" fstype="ext3" \    
        op start timeout="60" interval="0" \    
        op stop timeout="60" interval="0"  
    ms ms_mysqldrbd mysqldrbd \    
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"  
    colocation mysqld_with_mystore inf: mysqld mystore    
    colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master    
    order mysqld_after_mystore inf: mystore mysqld    
    order mystore_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mystore:start    
    property $id="cib-bootstrap-options" \    
        dc-version="1.1.8-7.el6-394e906" \    
        cluster-infrastructure="classic openais (with plugin)" \    
        expected-quorum-votes="2" \    
        stonith-enabled="false" \    
        no-quorum-policy="ignore"  
    crm(live)configure# commit 
    [root@node1 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    Last updated: Sat Aug 17 20:46:35 2013    
    Last change: Sat Aug 17 20:46:07 2013 via cibadmin on node1.test.com    
    Stack: classic openais (with plugin)    
    Current DC: node1.test.com - partition with quorum    
    Version: 1.1.8-7.el6-394e906    
    2 Nodes configured, 2 expected votes    
    4 Resources configured. 
    Online: [ node1.test.com node2.test.com ] 
     Master/Slave Set: ms_mysqldrbd [mysqldrbd]  
        Masters: [ node2.test.com ]    
        Slaves: [ node1.test.com ]    
     mystore    (ocf::heartbeat:Filesystem):    Started node2.test.com    
     mysqld    (lsb:mysqld):    Started node2.test.com 
    [root@node2 ~]# netstat -ntulp | grep :3306  
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                  LISTEN      26907/mysqld      
    [root@node2 ~]# /usr/local/mysql/bin/mysql    
    Welcome to the MySQL monitor.  Commands end with ; or \g.    
    Your MySQL connection id is 1    
    Server version: 5.5.33-log MySQL Community Server (GPL) 
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 
    Oracle is a registered trademark of Oracle Corporation and/or its  
    affiliates. Other names may be trademarks of their respective    
    owners. 
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
    mysql>

    5.增加vip资源 
    crm(live)# configure    
    crm(live)configure# primitive vip ocf:heartbeat:IPaddr params ip=192.168.1.200 nic=eth0 cidr_netmask=255.255.255.0    
    crm(live)configure# colocation vip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master vip    
    crm(live)configure# verify    
    crm(live)configure# show 
    node node1.test.com  
    node node2.test.com    
    primitive mysqld lsb:mysqld    
    primitive mysqldrbd ocf:heartbeat:drbd \    
            params drbd_resource="web" \    
            op start timeout="240" interval="0" \    
            op stop timeout="100" interval="0" \    
            op monitor role="Master" interval="20" timeout="30" \    
            op monitor role="Slave" interval="30" timeout="30"  
    primitive mystore ocf:heartbeat:Filesystem \    
            params device="/dev/drbd0" directory="/mydata" fstype="ext3" \    
            op start timeout="60" interval="0" \    
            op stop timeout="60" interval="0"  
    primitive vip ocf:heartbeat:IPaddr \    
            params ip="192.168.1.200" nic="eth0" cidr_netmask="255.255.255.0"  
    ms ms_mysqldrbd mysqldrbd \    
            meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"  
    colocation mysqld_with_mystore inf: mysqld mystore    
    colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master    
    colocation vip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master vip    
    order mysqld_after_mystore inf: mystore mysqld    
    order mystore_after_ms_mysqldrbd inf: ms_mysqldrbd:promote mystore:start    
    property $id="cib-bootstrap-options" \    
            dc-version="1.1.8-7.el6-394e906" \    
            cluster-infrastructure="classic openais (with plugin)" \    
            expected-quorum-votes="2" \    
            stonith-enabled="false" \ 
    crm(live)configure# commit 
    [root@node1 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    Last updated: Sat Aug 17 20:53:15 2013    
    Last change: Sat Aug 17 20:52:11 2013 via cibadmin on node1.test.com    
    Stack: classic openais (with plugin)    
    Current DC: node1.test.com - partition with quorum    
    Version: 1.1.8-7.el6-394e906    
    2 Nodes configured, 2 expected votes    
    5 Resources configured. 
    Online: [ node1.test.com node2.test.com ] 
     Master/Slave Set: ms_mysqldrbd [mysqldrbd]  
        Masters: [ node1.test.com ]    
        Slaves: [ node2.test.com ]    
     mystore    (ocf::heartbeat:Filesystem):    Started node1.test.com    
     mysqld    (lsb:mysqld):    Started node1.test.com    
     vip    (ocf::heartbeat:IPaddr):    Started node1.test.com

    好了,到这里所有的资源配置全部完成,下面我们进行测试一下。
    6.测试mysql高可用集群
    (1).新增授权
    [root@node1 ~]# /usr/local/mysql/bin/mysql  
    Welcome to the MySQL monitor.  Commands end with ; or \g.    
    Your MySQL connection id is 2    
    Server version: 5.5.33-log MySQL Community Server (GPL) 
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 
    Oracle is a registered trademark of Oracle Corporation and/or its  
    affiliates. Other names may be trademarks of their respective    
    owners. 
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
    mysql> grant all on *.* to root@"192.168.1.%" identified by "123456";  
    Query OK, 0 rows affected (0.10 sec) 
    mysql> flush privileges;  
    Query OK, 0 rows affected (0.00 sec)

    (2).远程测试一下
    [root@nfs ~]# yum install -y mysql 
    [root@nfs ~]# mysql  
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)    
    [root@nfs ~]# mysql -uroot -p123456 -h 192.168.1.200    
    Welcome to the MySQL monitor.  Commands end with ; or \g.    
    Your MySQL connection id is 3    
    Server version: 5.5.33-log MySQL Community Server (GPL) 
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 
    Oracle is a registered trademark of Oracle Corporation and/or its  
    affiliates. Other names may be trademarks of their respective    
    owners. 
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
    mysql> show databases;  
    +--------------------+    
    | Database          |    
    +--------------------+    
    | information_schema |    
    | mysql              |    
    | performance_schema |    
    | test              |    
    +--------------------+    
    4 rows in set (0.06 sec) 
    mysql> create database mydb;  
    Query OK, 1 row affected (0.00 sec) 
    mysql>

    (3).模拟一下故障
    [root@node1 ~]# crm    
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    crm(live)# node    
    crm(live)node# standby    
    crm(live)node# show    
    node1.test.com: normal    
        standby: on    
    node2.test.com: normal 
    [root@node2 ~]# crm status  
    Cannot change active directory to /var/lib/pacemaker/cores/root: No such file or directory (2)    
    Last updated: Sat Aug 17 21:02:13 2013    
    Last change: Sat Aug 17 21:02:00 2013 via crm_attribute on node1.test.com    
    Stack: classic openais (with plugin)    
    Current DC: node1.test.com - partition with quorum    
    Version: 1.1.8-7.el6-394e906    
    2 Nodes configured, 2 expected votes    
    5 Resources configured. 
    Node node1.test.com: standby    
    Online: [ node2.test.com ] 
     Master/Slave Set: ms_mysqldrbd [mysqldrbd]  
        Masters: [ node2.test.com ]    
        Stopped: [ mysqldrbd:1 ]    
     mystore    (ocf::heartbeat:Filesystem):    Started node2.test.com    
     mysqld    (lsb:mysqld):    Started node2.test.com    
     vip    (ocf::heartbeat:IPaddr):    Started node2.test.com

    (4).再进行远程测试一下
    mysql> create database testdb;  
    ERROR 2006 (HY000): MySQL server has gone away    
    No connection. Trying to reconnect...    
    Connection id:    1    
    Current database: *** NONE *** 
    Query OK, 1 row affected (0.42 sec) 
    mysql> show databases;  
    +--------------------+    
    | Database          |    
    +--------------------+    
    | information_schema |    
    | mydb              |    
    | mysql              |    
    | performance_schema |    
    | test              |    
    | testdb            |    
    +--------------------+    
    6 rows in set (0.12 sec) 
    mysql>

    大家可以看到依然可以访问,好了今天的所有的演示到这里就全部结束了,我们下次再见。^_^……

    转载:http://www.linuxidc.com/Linux/2013-08/89036p3.htm


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群 的相关文章

  • 从隔离中崛起:我重新梳理的‘大厂面试指南’助你一战成就职业巅峰

    在这个独特的时期 求职者们面临着前所未有的挑战 而我希望通过这份重新梳理的 大厂面试指南 能够为他们提供有力的支持和指导 我深知 面试是一个关键的环节 能否在众多竞争者中脱颖而出 决定着求职者能否顺利进入理想的大厂 现在 V2 0版的 大厂
  • 解决Error: Cannot find module 'node-sass'问题

    今天在运行angular前端的时候出现了以下的问题 解决办法 1 在项目目录cmd下运行 npm install g cnpm registry https registry npm taobao org 2 下载成功后再运行 cnpm i
  • Node.js在数据库进行多条件模糊查询的sql技巧

    实现简单的前台输入框查询筛选出内容包含的数据 使用ajax请求后台 后台拦截后再交给逻辑处理层 controller 再在dao层进行sql语句的查询并返回数据给逻辑层 blog search function req resp let s
  • 【多线程】ThreadPoolExecutor 类的使用详解

    ThreadPoolExecutor 构造方法 ThreadPoolExecutor共4个构造方法 咱们直接看参数最多的7个参数分别代表 public ThreadPoolExecutor 线程池核心线程数 int corePoolSize
  • 蓝桥云课——数字三角形 Python(动态规划)

    由于本人还在复习考研 留给蓝桥杯的时间不会太多 能不能拿奖还另说 听天由命吧 题目地址 数字三角形 一道比较简单的动态规划题目 比较适合新手学习 从动态规划三部曲开始走 1 先确认dp方程含义 在这我们采用二维数组 每个数组用来储存最大的值
  • Typora文本颜色设置

    Typora文本颜色设置 前言 方法一 使用markdown语法的内联公式 设置颜色 文本颜色设置公式 常用的颜色公式代码表 效果预览 方法二 使用html代码 设置颜色 文本颜色设置公式 颜色代码 方法三 借助第三方软件AutoHotKe
  • 数据库之SqlSessionTemplate源码解析

    前言 在普遍的JAVA WEB项目的实际业务处理中 最终都是通过SqlSessionTemplate执行数据库的CURD操作 本文结合mybatis源码 对SqlSessionTemplate进行详细的介绍 SqlSessionTempla
  • 【微信小程序】微信小程序怎么让tabbar右上角的红点动起来,闪烁红点。

    1 需要用到两个API分别是wx showTabBarRedDot 和wx hideTabBarRedDot wx showTabBarRedDot 显示 tabBar 某一项的右上角的红点 wx hideTabBarRedDot 隐藏 t
  • ERC20接口下USDT代币的深入解析

    ERC20代币合约规则简介 ERC20 是各个代币的标准接口 ERC20 代币仅仅是以太坊代币的子集 为了充分兼容 ERC20 开发者需要将一组特定的函数 接口 集成到他们的智能合约中 以便在高层面能够执行这些操作 获得代币总供应量 获得账
  • Hbase存储方式

    Hbase概念 HBase是一个分布式的 面向列的数据库它介于nosql和RDBMS之间 仅能通过主键 row key 和主键的range来检索数据 仅支持单行事务 可通过hive支持来实现多表join等复杂操作 主要用来存储非结构化和半结
  • do{}while(0)的用法

    这几天在看代码的时候遇到了一个好像很神奇的用法 do while 0 do while 1 我能理解 就是一直循环 然后在循环体内设置跳出条件 或者干脆就不跳出 那do while 0 是干嘛的呢 在内部也改变不了循环条件 然后执行一次就结
  • 测试-1-基础篇

    基础概念 一 相关概念 1 软件测试 2 软件测试和研发的区别 3 软件开发的生命周期 4 需求 5 什么是 BUG 6 什么是测试用例 二 开发模型 1 瀑布模型 2 螺旋模型 3 增量模型 4 迭代模型 5 敏捷开发 三 测试模型 1
  • usb的pid和vid

    根据USB 规范的规定 所有的USB设备都有供应商ID VID 和产品识别码 PID 主机通过不同的VID和PID来区别不同的设备 VID和PID都是两个字节长 其中 供应商ID VID 由供应商向USB执行论坛申请 每个供应商的VID是唯
  • 【课程作业经验】盘古α模型数据集生成以及训练初始化问题解决方案

    盘古模型代码及指导 models Models of MindSpore Gitee com 环境 华为云ModelArts Ascend 8 Ascend 910 Mindspore 1 5 1 PyTorch 1 8 一 盘古数据集生成
  • 前后端中的异步和事件机制

    前言 在前后端程序设计开发工作中 小伙伴们一定都接触过事件 异步这些概念 出现这些概念的原因之一是 我们的代码在执行过程中所涉及的逻辑在不同的场合下执行时间的期望是各不相同的 为了尽量做到充分利用CPU等资源做尽可能多的事 免不了通过异步和
  • 处理跨域问题

    1 vue hr2 1234567890 gitee com 2 画图 整个的登录流程 3 画图解释 vue cli的proxy代理解决跨域问题 4 cookie和localStorage区别 存储大小 cookie 一般不超过4K 因为每
  • 毕业设计-基于街景影像中行人车辆检测方法 -YOLO

    目录 前言 课题背景和意义 实现技术思路 一 方法理论 二 试验与分析 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目
  • 特征变换:特征归一化(Normalization)作用以及方法 Min-Max、Z-Score

    为什么需要对特征数据进行归一化 1 在基于梯度下降的算法中 使用特征归一化方法将特征统一量纲 能够提高模型收敛速度和最终的模型精度 1 如上图所示 黄色的圈圈图代表的是两个特征的等高线 其中左图两个特征 X1 和 X2 的区间相差非常大 X
  • Element UI input输入框实现模糊查询

    Element UI的input输入框进行搜索的时候 根据输入内容提供对应的输入建议 有个坑 它只能用第一个字进行搜索 不能够实现模糊匹配 下面的方法就是填这个坑 原来搜 奖 后台给返回数据 但是不会出现下拉框 例如 只要搜 抽 才出现下拉
  • JAVA面试

    JAVA网络通信篇 一 TCP和UDP有什么区别 TCP为什么是三次握手 而不是两次 TCP Transfer Control Protocol 是一种面向连接 可靠的 传输层通信协议 特点 好比是打电话 面向连接的 点对点的通信 高可靠的

随机推荐

  • 基础笔记(二):设计模式摘录

    基础笔记 二 设计模式摘录 前言 收录一些自己在开发过程中比较常用的模式 整理出来以便自己复习 毕竟熟才能生巧 才能变通 举一反三 设计模式在大多数灵活性好 可扩展性高 可移植的优秀程序中都有运用 比如界面展现层运用的MVC模式的主要关系就
  • Java俄罗斯方块,老程序员花了一个周末,连接中学年代!

    Java俄罗斯方块 老程序员花了一个周末 连接中学年代 热门专栏推荐 1 Java小游戏 俄罗斯方块 飞机大战 植物大战僵尸等 2 JavaWeb项目实战 图书管理 在线考试 宿舍管理等 3 JavaScript精彩实例 飞机大战 贪吃蛇
  • 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜

    从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 目录 从零开始基于nonebot2搭建Q群机器人自动获取各大平台热搜 安装步骤 使用方法 退出方法 启用方法 参考链接 安装步骤 安装步骤如下所示 总共仅需简单的17步 1 创
  • 从库mysqldump会导致复制中断

    背景 环境 数据库版本 5 6 24 log 主从架构 一主两从搭配mha 操作步骤 1 开发要求truncate一张表 在删除之前需要备份下数据 2 在从库上使用mysqldump命令做逻辑备份 备份sql mysqldump uXXX
  • ubuntu20.04下搭建pcl安装环境

    我是小白 初学PCL 此文章用来提醒自己安装流程 同时也希望能帮助其他人一贴搭完环境 此贴安装版本为 Ubuntu20 04 6LTS ros2 foxy VTK 8 2 0 cmake 3 16 3 PCL 1 10 1 1 安装vmwa
  • Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean

    问题出现 SpringBoot工程启动不起来 报错Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean
  • 虚拟服务器vps怎么扩展,vps虚拟服务器怎么用

    vps虚拟服务器怎么用 内容精选 换一换 裸金属服务器具备物理机级的性能和隔离性 用户独占计算资源 并且无任何虚拟化开销 存储在高性能高可靠的服务器上的数据 自然也会很安全 带有本地磁盘的裸金属服务器 支持本地磁盘组RAID 磁盘数据冗余存
  • SpringCloud Alibaba 组件介绍

    Spring Cloud Alibaba 一 介绍Spring Cloud Alibaba 简介 spring cloud Netflix 相关技术整体进入维护模式 Ribbon Hystrix zuul Eureka config等 sp
  • Vue课后练习题及答案解析

    Vue课后练习题 第一章 Vue js基础入门 填空题 Vue是一套构建 的渐进式框架 用户界面 MVVM主要包含3个部分 分别是Model View和 ViewModel Vue中通过 属性获取相应的DOM元素 refs 在进行Vue调试
  • html a标签去掉下划线_HTML常用标签a、img、table

    HTML常用标签 a 标签的用法 标签定义超链接 用于从一张页面链接到另一张页面 主要属性有href target download rel等 href指示超链接目标 可以取网址 相对路径 绝对路径 伪协议进行跳转 target属性规定在何
  • 【SpringBoot】最通俗易懂的任务机制(一)--异步任务和定时任务

    注 本文章基于尚硅谷Springboot高级特性相关视频及资料进行编写 代码简单 较容易理解 若有问题或者源码资料获取可以在评论区留言或者联系作者 目录 导引 异步任务 没有返回值的异步任务 有返回值的异步任务 定时任务 总结 导引 开发w
  • springboot自定义favicon.ico

    Favicon配置 说到favicon ico这个小图标 Spring Boot提供了默认的小叶子 如果大家想定制这个小图标可通过以下做法 1 application properties spring mvc favicon enable
  • QObject::connect: No such signal 原因

    QObject connect No such signal 使用connect连接信号与槽函数时 附带了信号或者槽函数的参数 编译会通过 而运行不会通过 若信号函数 void signal 1 int param 槽函数 void fun
  • ssh连接localhost失败 permission deny问题解决

    首先确认ssh 和 sshd都已经正常安装且运行 其次设置ssh和sshd的一些系统参数 基本都是修改以下这两个文件 1 etc ssh ssh config 2 etc ssh sshd config 比如permitrootlogin
  • 如何使用 docker 搭建本地 overleaf 服务器

    如何使用 docker 搭建本地 overleaf 服务器 overleaf 使用便捷 相信很多人都在上面编辑过论文 但是国内访问 overleaf 确实网速限制比较大 编译时等待时间较长 而且中文字体等配置也不是很方便 应运而生的 ove
  • 自动化测试之 Espresso VS Appium

    前言 事情的起因是这样的 相信很多人都经历过这样一个过程 一个成熟的线上app版本需要更新一个系列新功能的时候 我们上线需要完成以下几个步骤 1 测试环境下 测试人员测试新功能 并且连带需要测试线上稳定版本的主要老功能 2 确保没问题以后
  • B树与B+树

    一 B树 B 树 特点 1 多路 非二叉树 2 每个节点既保存索引 又保存数据 3 搜索时相当于二分查找 二 B 树 特点 1 多路非二叉 2 只有叶子节点保存数据 3 搜索时相当于二分查找 4 增加了相邻接点的指向指针 三 B树与B 树的
  • 决策树和 K 近邻分类

    决策树和 K 近邻分类 决策树和 K 近邻分类 决策树和 K 近邻分类 介绍 知识点 机器学习介绍 示例 决策树 如何构建决策树 熵 玩具示例 决策树构建算法 分类问题中其他的分割质量标准 示例 树的关键参数
  • CUnit的用法

    CUnit下载地址 http sourceforge net projects cunit CUnit 在线文档帮助 http cunit sourceforge net doc index html 关于CUnit 本文主要从介绍三方面的
  • Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一 前言二 环境准备三 Corosync 安装与配置四 Pacemaker 安装与配置五 DRBD 安装与配置六 MySQL 安装与配置七 crmsh 资源管理 推荐阅读 Linux 高可用 HA 集群基本概念详解 http www l