首頁 資料庫 mysql教程 mysql+drbd+heartbeat高可用配置说明

mysql+drbd+heartbeat高可用配置说明

Jun 07, 2016 pm 02:53 PM
可用 配置 高可用

环境描述: 系统版本: Red Hat Enterprise Linux Server release 5.5 (Tikanga) x86_64 2.6.18-164.el5 mysql 版本: mysql-5.1.49.tar.gz drbd 版本: drbd83-8.3.15-2.el5.centos.rpm heartbeat 版本: heartbeat.x86_64 0:2.1.3-3.el5.centos.rpm 主机名

 

环境描述:

系统版本:Red Hat Enterprise Linux Server release 5.5 (Tikanga)x86_64 2.6.18-164.el5

mysql版本:mysql-5.1.49.tar.gz

drbd版本:drbd83-8.3.15-2.el5.centos.rpm

heartbeat版本:heartbeat.x86_64 0:2.1.3-3.el5.centos.rpm

主机名

Eth0

Eth1

备注

ln-master

10.10.206.193

192.168.1.10

ln-slave

10.10.206.194

192.168.1.11

VIP:10.10.206.211

 

前期工作(两台都要改)

修改主机名:

[root@ln-master ~]# cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=ln-master

更改hosts文件(两台都要改)

[root@ln-master ~]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

10.10.206.193     ln-master

192.168.1.10      ln-master

10.10.206.194     ln-slave

192.168.1.11      ln-slave

确保ping主机名能通,例如ping ln-slave

优化开机启动项,开基础的四项即可

[root@ln-master ~]#

[root@ln-master ~]# for A in `chkconfig --list |grep 3:on|awk '{print $1}'`;do chkconfig $A off;done

[root@ln-master ~]# for B in sshd crond syslog network;do chkconfig $B on;done

[root@ln-master ~]# chkconfig --list |grep 3:on

crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off

重启

reboot

 

 

 

安装配置DRBD

注意:事先配置好YUM

  1. 1.   通过yum安装drbd(两台都要安装)

:drbd的版本和系统内核的对应  不同的版本对应不同的内核可以去官网看看

[root@ln-master ~]#yum install drbd83* -y  #安装drbd

[root@ln-master ~]#yum -y install kmod-drbd83*    #安装内核模块

[root@ln-master ~]#modprobe drbd     #加载drbd内核模块

[root@ln-master ~]# lsmod |grep drbd

drbd                  273204  0 #看到这个,证明加载drbd内核模块了。

  1. 2.   修改drbd配置文件(两台主机配置一样)

[root@ln-master ~]# cat /etc/drbd.conf

#

# please have a a look at the example configuration file in

# /usr/share/doc/drbd83/drbd.conf

#

global{
        usage-count no;         #
这个问你让不让官网统计
}
common {
        syncer {rate 100M;}     #
传输速度
}
resource r0 {
        protocol C;             #
传输协议(下面进行协议说明)
        startup {
        }
        disk {
                on-io-error detach;
        }
        net {      
                cram-hmac-alg "sha1"; #
两台服务器通信间的算法
                shared-secret "FooFunFactory"; #通信密码
#               after-sb-0pri disconnect;
#               after-sb-1pri disconnect;
#               after-sb-2pri disconnect;
                after-sb-0pri discard-younger-primary;
                after-sb-1pri discard-secondary;
                after-sb-2pri call-pri-lost-after-sb;
                rr-conflict disconnect;
        }
         syncer {
                rate 100M;
                al-extents 257;
        }
        on ln-master{                 #
这里一定要是hosts定义的名称
                device  /dev/drbd0;     #逻辑设备路径
                disk    /dev/sdb1;       #真实设备路径
                address  192.168.1.10:7789;   #maser传输数据的IP地址
                meta-disk  internal;
        }
        on ln-slave{
                device  /dev/drbd0;
                disk    /dev/sdb1;
                address  192.168.1.11:7789;  #slave
传输数据的IP地址
                meta-disk  internal;
        }
}

  1. 3.   DRBD一些说明

 DRBD 协议说明:

  A协议:数据一旦写入磁盘并发送到网络中就认为完成了写入操作

  B协议:收到接收确认就认为完成了写入操作

  C协议:收到写入确认就认为完成了写入操作                         

DRBD设备的三个进程:

每个drbd设备都有三个进程:

1  drbd0_workerdrbd0的主进程

2  drbd0_asenderprimary上的drbd0的数据发送进程

3  drbd0_receiversecondary上的drdb0的数据写入进程

DRBD几点注意的地方:

1  mount drbd设备以前必须把设备切换到primary状态

2  两个节点中,同一时间只能有一台处于primary状态,另一台是secondary状态

3  处于secondary状态的节点不可以挂载

4  主备最好使用大小一样的分区。

 

DRBD使用时建议使用Innodb存储引擎,同时打开binlog日志,设置innodb_flush_log_at_commit=1MyISAM存储引擎在DRBD上容易造成数据丢失,及文件损坏。

DRBD脑裂后处理:

drdb1-master

drbdadm secondary r0

drbdadm — –discard-my-data connect r0

drbdadm connect r0

drbd2-slave

drbdadm disconnect r0

drbdadm connect r0

 

  1. 4.   创建DRBD设备

我这里用的是虚拟机,我两台都添加了一块30G硬盘。

对新的磁盘分区格式化(两台都要操作):

[root@ln-master ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

 

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

 

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-652, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-652, default 652):

Using default value 652

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

 

Syncing disks.

创建drbd设备(两台都要执行)

[root@ln-slave ~]# drbdadm create-md r0 

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.  #看到这些信息表示创建设备成功。

 

错误

Command 'drbdmeta 0 v08 /dev/sdb internal create-md' terminated with exit code 40
drbdadm create-md r0: exited with code 40

这是因为我们只把以前的分区删除了,并没有重新创建分区,创建分区即可

如果还出现这个错误提示运行

dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

即可

  1. 启动drbd服务(两台都要启动)

[root@ln-master ~]# /etc/init.d/drbd start

Starting DRBD resources: [ d(r0) s(r0) n(r0) ]..........

[root@ln-master ~]# /etc/init.d/drbd status

drbd driver loaded OK; device status:

version: 8.3.15 (api:88/proto:86-97)

GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder17.centos.org, 2013-03-27 16:04:08

m:res  cs         ro                   ds                         p  mounted  fstype

0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

 

错误

Starting DRBD resources: Can not load the drbd module.

没有加载drbd内核模块,安装内核模块并加载即可。

  1. 6.   将master设置为主节点(只在master上执行

master主机执行命令  设置为主节点

[root@ln-master ~]# drbdadm -- --overwrite-data-of-peer primary r0   #设置为主节点

[root@ln-master ~]# mkfs.ext3 /dev/drbd0     #格式化

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

655360 inodes, 1309240 blocks

65462 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1342177280

40 block groups

32768 blocks per group, 32768 fragments per group

16384 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912, 819200, 884736

 

Writing inode tables: done                           

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 33 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@ln-master /]# mkdir /data

[root@ln-master /]# mount /dev/drbd0 /data/  #挂载

[root@ln-master /]# df -h

文件系统              容量  已用可用已用% 挂载点

/dev/mapper/VolGroup00-LogVol00

                       45G   14G   30G  32% /

/dev/sda1              99M   24M   70M  26% /boot

tmpfs                 3.9G     0  3.9G   0% /dev/shm

/dev/drbd0             30G  1.4G   27G   5% /data

[root@ln-master /]# drbd-overview

0:r0  Connected Primary/Secondary UpToDate/UpToDate C r-----

:看到都是UpToDate了,证明两边已经同步完成了。

  1. 7.   测试

mater操作:

[root@ln-master /]# cd /data/

[root@ln-master data]# ll

total 16

drwx------ 2 root root 16384 Aug  6 10:39 lost+found

[root@ln-master data]# touch test  #创建test文件

 [root@ln-master data]# ll

total 16

drwx------ 2 root root 16384 Aug  6 10:39 lost+found

-rw-r--r-- 1 root root     0 Aug  6 12:35 test

[root@ln-master data]# cd ..

[root@ln-master /]# umount /data/

[root@ln-master /]# df -h

文件系统              容量  已用可用已用% 挂载点

/dev/mapper/VolGroup00-LogVol00

                       45G   14G   30G  32% /

/dev/sda1              99M   24M   70M  26% /boot

tmpfs                 3.9G     0  3.9G   0% /dev/shm

[root@ln-master /]# drbdadm secondary r0  #将自己切换成从

[root@ln-master /]# drbd-overview  #检查

  0:r0  Connected Secondary/Secondary UpToDate/UpToDate C r-----

 

slave操作:

[root@ln-slave /]# drbd-overview       

  0:r0  Connected Secondary/Secondary UpToDate/UpToDate C r-----

[root@ln-slave /]# drbdadm primary r0  #将自己提升为主

[root@ln-slave /]# drbd-overview    

  0:r0  Connected Primary/Secondary UpToDate/UpToDate C r-----

[root@ln-slave /]# mount /dev/drbd0 /data/

[root@ln-slave /]# cd /data/

[root@ln-slave data]# ll

total 16

drwx------ 2 root root 16384 Aug  6  2014 lost+found

-rw-r--r-- 1 root root     0 Aug  6  2014 test

以上如果在slave端看到了test文件,证明数据已经同步了。

 

注:将master 还原成主,再做下面的操作。

 

安装配置mysql(两台都要装)

安装mysql:

#创建mysql用户

useradd mysql -s /sbin/nologin –M

id mysql

#安装

tar zxf mysql-5.1.49.tar.gz

cd mysql-5.1.49

#配置

./configure --prefix=/usr/local/mysql-5.1.49 --with-unix-socket-path=/usr/local/mysql-5.1.49/tmp/mysql.sock --localstatedir=/data --enable-assembler --with-charset=utf8 --with-collation=utf8_general_ci --with-plugins=innobase --enable-thread-safe-client --with-mysqld-user=mysql --with-big-tables --without-debug --with-pthread --enable-assembler --with-extra-charsets=complex --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static

#拷贝启动脚本,配置文件

/bin/cp support-files/mysql.server /etc/init.d/mysqld

/bin/cp support-files/my-small.cnf /etc/my.cnf

chmod 700 /etc/init.d/mysqld

#做软连接

ln -s /usr/local/mysql-5.1.49/ /usr/local/mysql

#主库初始化

/application/tools/mysql-5.1.49/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql      #备库不需要初始化

 

mysql程序路径:/usr/local/mysql

mysql data目录:/data/mysql/data

my.cnf配置文件(两边相同),根据机器配置优化,以下配置仅供参考

[root@ln-master mysql]# cat /etc/my.cnf
[client]
port = 3306

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock

sync_binlog = 0
binlog_format = ROW

skip-locking

skip-name-resolve
skip-host-cache
default-character-set=utf8
default-collation=utf8_general_ci
skip-character-set-client-handshake

max_allowed_packet = 16M
table_cache = 128
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 2M


default-storage-engine=INNODB
log-bin=mysql-bin
max_connections=5000
max_connect_errors=100000
log_slow_queries=slow.log
long_query_time=2
log_queries_not_using_indexes=0
#skip-federated
server-id= 10
table_lock_wait_timeout=180
innodb_lock_wait_timeout=180

innodb_data_file_path = ibdata1:1000M:autoextend
#innodb_buffer_pool_size = 1G
innodb_additional_mem_pool_size = 8M
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency=0
transaction-isolation=READ-COMMITTED
innodb_doublewrite=1
innodb_flush_method=O_DIRECT


[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

 

 

安装配置heartbeat

1.添加主机路由

master:

route add -host 192.168.1.11 dev eth1

slave:

route add -host 192.168.1.10 dev eth1

添加到/etc/rc.local.

2.安装heartbeat

yum install -y heartbeat

3.配置heartbeat

heartbeat会有三个配置文件ha.cfharesourcesauthkeys(本实验主备节点三个配置文件必须相同)

 

ha.cf主配置文件:

[root@ln-master ha.d]# cat ha.cf

logfile /var/log/ha-log     #日志名字及存放位置

keepalive 2                #设定心跳检测时间2秒

deadtime 15               #死亡时间15秒,备用节点15秒没有检测到主节点心跳,确认对方故障

warntime 10                #警告次数

initdead 30                #守护进程启动30s后启动服务资源

udpport 694                #使用ucast或bcast的udp通讯端口,默认694

bcast   eth1               #广播通讯接口,ucast得指定ip地址

auto_failback off              #当主节点切换到备份节点后,主节点又恢复正常,此处定义不进行回切操作,因为回切一次,NFS和mysql等成本很高      

#watchdog /dev/watchdog

node    ln-master

node    ln-slave

ping 10.10.206.1

authkeys验证文件:

[root@ln-master ha.d]# cat authkeys

auth 1                  #使用crc验证方式,这种方式不需要秘钥,因此性能比较好,还有其他两种安全依次增高,性能依次降低

1 crc

[root@ln-master ha.d]# ll authkeys    #必须为600权限

-rw------- 1 root root 31 08-12 17:49 authkeys

haresources配置文件:

[root@ln-master ha.d]# cat haresources

ln-master IPaddr::10.10.206.211 drbddisk::r0  Filesystem::/dev/drbd0::/data::ext3 mysqld

说明:

IPaddr::10.10.206.211   #VIP

drbddisk::r0     #启动drbd r0资源,相当于执行/etc/ha.d/resource.d/drbddisk r0 stop/start操作

Filesystem::/dev/drbd0::/data::ext3     #drbd分区挂载到/data目录,相当于执行/etc/ha.d/resource.d/Filesystem /dev/drbd0 /data ext3 stop/start 

mysqld             #启动mysql服务脚本,相当于/etc/init.d/mysqld stop/start

 

 

4.启动heartbeat(两边都要启动)

[root@ln-master ~]# /etc/init.d/heartbeat start

Starting High-Availability services:

2014/08/13_10:25:01 INFO:  Resource is stopped

                                                           [确定]

[root@ln-master ~]# ip add       

1: lo: mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:56:97:39:7c brd ff:ff:ff:ff:ff:ff

    inet 10.10.206.193/24 brd 10.10.206.255 scope global eth0

    inet 10.10.206.211/24 brd 10.10.206.255 scope global secondary eth0:0  #VIP也起来了

    inet6 fe80::250:56ff:fe97:397c/64 scope link

       valid_lft forever preferred_lft forever

 

 

测试(启动heartbeat后)

master

drbd自动成为了主,mysql也启动了。

root@ln-master ~]# ip add|grep "10.10"

    inet 10.10.206.193/24 brd 10.10.206.255 scope global eth0

    inet 10.10.206.211/24 brd 10.10.206.255 scope global secondary eth0:0

[root@ln-master ~]# drbd-overview

  0:r0  Connected Primary/Secondary UpToDate/UpToDate C r----- /data ext3 30G 1.

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PyCharm中如何設定Git配置 在PyCharm中如何設定Git配置 Feb 20, 2024 am 09:47 AM

標題:如何在PyCharm中正確配置Git在現代軟體開發中,版本控制系統是非常重要的工具,而Git作為其中一種流行的版本控制系統,為開發者提供了強大的功能和靈活的操作。而PyCharm作為一款功能強大的Python整合開發環境,自備了對Git的支持,能夠讓開發者更方便地管理程式碼版本。本文將介紹如何在PyCharm中正確地配置Git,以便於在開發過程中更好地

Linux系統中GDM的工作原理及配置方法 Linux系統中GDM的工作原理及配置方法 Mar 01, 2024 pm 06:36 PM

標題:Linux系統中GDM的工作原理及設定方法在Linux作業系統中,GDM(GNOMEDisplayManager)是一種常見的顯示管理器,用於控制圖形使用者介面(GUI)登入和使用者會話管理。本文將介紹GDM的工作原理和設定方法,以及提供具體的程式碼範例。一、GDM的工作原理GDM是GNOME桌面環境下的顯示管理器,負責啟動X伺服器並提供登入介面,使用者輸

PyCharm與PyTorch完美結合:安裝設定步驟詳解 PyCharm與PyTorch完美結合:安裝設定步驟詳解 Feb 21, 2024 pm 12:00 PM

PyCharm是一款強大的整合開發環境(IDE),而PyTorch則是深度學習領域備受歡迎的開源架構。在機器學習和深度學習領域,使用PyCharm和PyTorch進行開發可以大大提高開發效率和程式碼品質。本文將詳細介紹如何在PyCharm中安裝設定PyTorch,並附上具體的程式碼範例,幫助讀者更好地利用這兩者的強大功能。第一步:安裝PyCharm和Python

了解Linux Bashrc:功能、設定與使用方法 了解Linux Bashrc:功能、設定與使用方法 Mar 20, 2024 pm 03:30 PM

了解LinuxBashrc:功能、配置與使用方法在Linux系統中,Bashrc(BourneAgainShellrunco​​mmands)是一個非常重要的配置文件,其中包含了系統啟動時自動運行的各種命令和設定。 Bashrc文件通常位於使用者的家目錄下,是一個隱藏文件,它的作用是為使用者自訂設定Bashshell的環境。一、Bashrc的功能設定環境

win11系統如何配置工作小組 win11系統如何配置工作小組 Feb 22, 2024 pm 09:50 PM

Win11系統如何設定工作群組工作群組是一種在區域網路中連接多台電腦的方式,它允許電腦之間共用檔案、印表機和其他資源。在Win11系統中,設定工作群組非常簡單,只需依照下列步驟操作即可。步驟1:開啟「設定」應用程式首先,點擊Win11系統的「開始」按鈕,然後在彈出的選單中選擇「設定」應用程式。你也可以使用快捷鍵“Win+I”開啟“設定”。步驟2:選擇「系統」在「設定」應用程式中,你會看到多個選項。請點選「系統」選項,進入系統設定頁面。步驟3:選擇「關於」在「系統」設定頁面中,你會看到多個子選項。請點

簡單易懂的PyCharm設定Git教學 簡單易懂的PyCharm設定Git教學 Feb 20, 2024 am 08:28 AM

PyCharm是常用的整合開發環境(IDE),在日常開發中,使用Git管理程式碼是不可或缺的。本文將介紹如何在PyCharm中設定Git,並使用Git進行程式碼管理,並附帶具體程式碼範例。第一步:安裝Git首先,確保在你的電腦上已經安裝了Git。如果沒有安裝,可以前往[Git官網](https://git-scm.com/)下載並安裝最新版本的Git

Linux系統中如何設定和安裝FTPS Linux系統中如何設定和安裝FTPS Mar 20, 2024 pm 02:03 PM

標題:Linux系統中如何配置和安裝FTPS,需要具體程式碼範例在Linux系統中,FTPS是一種安全的檔案傳輸協議,與FTP相比,FTPS透過TLS/SSL協議對傳輸的資料進行加密,提高了資料傳輸的安全性。在本文中,將介紹如何在Linux系統中設定和安裝FTPS,並提供特定的程式碼範例。步驟一:安裝vsftpd開啟終端,輸入以下指令安裝vsftpd:sudo

CentOS7系統安裝與設定 DRBD?實現高可用性和資料冗餘教程! CentOS7系統安裝與設定 DRBD?實現高可用性和資料冗餘教程! Feb 22, 2024 pm 02:13 PM

DRBD(DistributedReplicatedBlockDevice)是一種用於實現資料冗餘和高可用性的開源解決方案。以下是在CentOS7系統上安裝和設定DRBD的教學:安裝DRBD:開啟終端機並以管理員身分登入CentOS7系統。執行以下命令以安裝DRBD軟體包:sudoyuminstalldrbd配置DRBD:編輯DRBD設定檔(通常位於/etc/drbd.d目錄下),配置DRBD資源的設定。例如,可以定義主節點和備份節點的IP位址、連接埠和設備等。確保主節點和備份節點之間可以透過網

See all articles