SUSE11 下的 Heartbeat+DRBD+Mysql 安装配置 系统环境: 我用的虚拟机为 vmware ,安装的 linux 系统为 opensuse11. 两台电脑(两个节点)用路由器链接,两个节点的信息如下: 节点一(主机) :主机名: laborc , ip : 192.168.0.110 节点二(备用机):
SUSE11下的Heartbeat+DRBD+Mysql安装配置
系统环境:
我用的虚拟机为vmware,安装的linux系统为opensuse11.两台电脑(两个节点)用路由器链接,两个节点的信息如下:
节点一(主机) :主机名:laborc, ip:192.168.0.110
节点二(备用机):主机名:linux-xua5 ,ip:192.168.0.111
这里需要注意一下,虚拟机默认的网络链接为NAT,但是我发现两台虚拟机的linux无法相互ping对方,然后我把网络链接改为了Bridged然后把两台虚拟机的ip改为同个网段就可以相互ping了,具体为什么NAT不能相互ping,我不是很清楚。
1. Heartbeat安装配置
1.1.安装heartbeat
在安装heartbeat之前需要安装libnet,安装方法如下:
tar -xzvf libnet.tar.gz
cd libnet
./configure
make
make install
然后安装heartbeat,安装方法如下:
tar -xzvf heartbeat-2.1.2.tar.gz
cd heartbeat-2.1.2
useradd -u 694 -g haclient hacluster
./ConfigureMe configure
make
make install
1.2.配置/etc/hosts和/etc/HOSTNAME
这里对node1进行配置,node2与node1一样,修改主机名如下:
#vi /etc/HOSTNAME
对主机名字修改,我把我的虚拟机名字改为laborc.site(可以改成自己所要的)。
修改hosts如下:
#vi /etc/hosts
在node1中的hosts里面需要添加以下内容,node2也添加相同内容。
192.168.0.110 laborc #前面的ip为node1的ip,后面的那个是node1主机名
192.168.0.111 linux-xua5 #前面的ip为node2的ip,后面的那个是node2主机名。
我的修改结果如下:
两个节点修改以上配置以后,需要重启系统。
1.3.配置文件
运行Heartbeat需要配置三个文件,分别为ha.cf,haresources和authkeys。首先把三个文件复制到/etc/ha.d/文件夹下,操作如下:
#cp ha.cf /etc/ha.d/
#cp haresources /etc/ha.d/
#cp authkeys /etc/ha.d/
1.3.1.对ha.cf进行配置
我对ha.cf的配置如下
Name |
Value |
description |
debugfile |
/var/log/ha-debug |
该文件保存heartbeat的调试信息 |
logfile |
/var/log/ha-log |
heartbeat的日志文件 |
logfacility |
local0 |
|
keepalive |
2 |
心跳的时间间隔,默认时间单位为秒
|
deadtime |
10 |
超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡 |
initdead |
120 |
在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。 |
udpport |
694 |
设置广播通信使用的端口,694为默认使用的端口号。 |
baud |
19200 |
设置串行通信的波特率。 |
serial |
/dev/ttyS0 |
选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。 |
bcast |
eth0 |
设置广播通信所使用的网络接口卡。 |
auto_failback |
on |
heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,在该选项设为on的情况下,一旦主节点恢复运行,则自动获取 |
node |
laborc |
设置节点 |
node |
linux-xua5 |
设置节点 |
1.3.2.配置haresources文件
配置如下:
laborc IPaddr::192.168.0.112 apache #laborc 为主机名 192.168.0.112为集群对外公布的ip,后面跟这的是服务,这里是apache,apache的配置后面会说到。
我的结果如下:
1.3.3.配置authkeys
配置如下:
auth 1
1 crc
我的结果如下:
这里需要对autokeys文件的权限进行修改,修改如下:
#chmod 600 /etc/ha.d/authkeys
如不修改为600,heartbeat服务会无法开启。
到这里,对配置文件的修改完成,把三个文件复制到node2下的/etc/ha.d/下,注意node1和node2中的这三个文件确保相同。
1.4.安装apache
软件包:httpd-2.2.6.tar.gz
我把软件包放在了/home/laborc
1.解压缩
#cd /home/laborc
#tar -zvxf httpd-2.2.6.tar.gz
#cd httpd-2.2.6
2.创建安装目录
#mkdir -p /usr/local/apache2
#./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-rewrite
#make
#make install
到这里apache安装完成,node2安装过程如上。为了区别node1和node2的apache服务,我把apache的默认页面进行了修改,node1改为laborc work ,node2 改为 linux-xua5 work
1.5.建立http服务切换启动脚本的链接文件
# mv apache apache-bak (node2上也要做这步)
# ln -s /var/local/apache/bin/apachectl apache (node2上也要做这步)
1.6.启动heartbeat
#cd /etc/init.d
#./heartbeat start
node2 如上启动heartbeat
1.7.测试
启动heartbeat以后,从另外的电脑输入http://192.168.0.112,查看的结果如下
然后拔掉node1的网线,再次刷新页面,发现node2的apach接收了node1的apace,结果如下:
把网线插到node1中,node1的apache恢复正常,再次刷新页面,结果如下
2. DRBD安装配置
2.1.下载DRBD
下载地址:http://software.opensuse.org/search?baseproject=ALL&p=1&q=drbd
根据自己的版本下载合适的包
需要下载两个包,DRBD和drbd-kmp-desktop,我的版本如下:
DRBD:drbd-8.3.4-2.4.i586.rpm
drbd-kmp-desktop:rbd-kmp-xen-8.3.4_2.6.31.5_0.1-2.4.i586.rpm
这里需要注意,如果不安装drbd-kmp-desktop,那DRBD在启动的时候会报can not load drbd module,网上说是opensuse默认不能加载drbd module,需要升级一下内核,具体我也不是很清楚。
2.2.安装DRBD
# rpm –ivh drbd-8.3.4-2.4.i586.rpm
# rpm –ivh drbd-kmp-desktop-8.3.4_2.6.31.5_0.1-2.4.i586.rpm
2.3.配置drbd.conf
我的配置如下:
#
# please have a a look at the example configuration file in
# /usr/share/doc/packages/drbd/drbd.conf
#
global{
usage-count yes; #(是否参加使用者统计,yes为参加)
}
common{
syncer{ rate 300M;}
}
resource r0{
protocol C; #(数据同步协议,C为收到数据并写入后返回,确认成功)
disk{
on-io-error detach;
size 5G; #(由于实验环境下两台服务器硬盘大小不同,所以需要设置drbd的大小)
}
net{
after-sb-0pri disconnect;
rr-conflict disconnect;
}
on laborc{
device /dev/drbd0;
disk /dev/sdb5;
address 192.168.0.110:7788;
meta-disk internal;
}
on linux-xua5{
device /dev/drbd0;
disk /dev/sdb5;
address 192.168.0.111:7788;
mate-disk internal;
}
}
上面的disk /dev/cdb5;中的cdb5一定要注意,这个分区必须是未挂载的,
如果是已挂载的启动DRBD的时候会报如下错误:(Restarting all DRBD resources:# r0:
Failure: (114) Lower device is already claimed. This usually means it is mounted.),如果系统中
没有未挂载的分区,需要创建新分区,如果创建下面会提到。
图如下:
2.4.创建新分区
首先在虚拟机上添加一个硬盘,我添加了20G,一旦添加以后,我系统就有了两块硬盘,
分别为:/dev/sda和/dev/sdb(新添加的),现在需要对sdb分区,我使用fdisk进行分区,操作如下:
1.fdisk /dev/sdb #进入新硬盘sdb
2.p #查看硬盘现有哪些分区,现在查看应该还无分区
3.n #添加一个分区
4.e #添加扩展分区,然后它会提示让您输入一些属性,输入完以后,扩展分区就建好了
5.n #这里将会创建逻辑分区
6.l #添加逻辑分区,然后它会提示让您输入一些属性,输入完以后,逻辑分区就建好了
7.w #把创建好的分区写入磁盘表
以下是操作的图:
2.5.创建数据块
# drbdadm create-md r0 (r0是我在drbd.conf中配置的resource),结果如下图
2.6.启动DRBD
# /etc/init.d/drbd srart 结果如下图:
可以用cat /proc/drbd查看数据同步的进度,如下图
等数据同步完查看DRBD的状态,如下图
第一次同步耗时比较长,因为需要把整个分区的数据全部同步一遍。
2.7.设置主节点
上面图中st:Secondary/Secondary,说明还未设置主节点,我们可以使用一下命令来设置
# drbdadm primary db
可能第一次设置会出现一下错误:
State change failed: (-2) Refusing to be Primary without at least one UpToDate disk
Command ‘drbdsetup /dev/drbd0 primary’ terminated with exit code 11
可以看到,第一次设置主节点时用 drbdadm 命令会失败,所以先用drbdsetup 来做,以后就可以用 drbdadm 了。
# drbdsetup /dev/drbd0 primary –o
再次查看2台服务器的drbd状态,见下图:
可以看到st:Secondary/Secondary 变成了st:Primary/Secondary
2.8.测试同步数据
第一次同步完成之后,就可以对drbd的设备创建文件系统了:
# mkfs.ext3 /dev/drbd0
将文件系统mount上:
# mount /dev/drbd0 /drbddata
在主节点上写入测试数据到/drbddata
然后,我们把node1的primary降级成secondary,把secondary提升成primary:
# umount /drbddata/
# drbdadm secondary r0
把node2的primary降级前,一定要先umount设备才行。然后提升secondary:
# drbdadm primary r0
# mount /dev/drbd0 /drbddata/
3. Mysql 安装配置
3.1.编译安装mysql
我使用的mysql为mysql-5.0.40.tar.gz
按照以下步骤进行编译安装:
# tar -zxvf mysql-5.0.40.tar.gz
# cd mysql-5.0.40
# groupadd mysql
# useradd -g mysql -s /sbin/nologin -M mysql
# ./configure --prefix=/urs/local/mysql --with-charset=gbk --localstatedir=/drbddata/drbd/data --with-extra-charset=all --enable-thread-safe-client
# make && make install
# cp support-files/my-large.cnf /etc/my.cnf
# chown -R mysql.mysql /urs/local/mysql/
# /urs/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root.root /urs/local/mysql/
# chown -R mysql.mysql /drbddata/drbd/data
启动数据库服务,并添加到自启动
# /urs/local/mysql/bin/mysqld_safe --user=mysql &
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chm od 755 /etc/rc.d/init.d/mysqld
加入服务队列:
# chkconfig --add mysqld
配置库文件搜索路径
# echo "/urs/local/mysql/lib/mysql">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
添加/usr/local/mysql/bin到环境变量PATH中
#echo "export PATH=$PATH:/urs/local/mysql/bin">>/etc/profile
#source /etc/profile
如果在编译的时候出现:checking for termcap functions library... configure: error: No curses/termcap library found。原因是缺少ncurses。
如果在make的时候出现以下错误:exec g++ not found。原因是缺少gcc-c++包,安装好以后需要重新configure
4. 集成Mysql和DRBD至Heartbeat
4.1.集成DRBD至Heartbeat
把DRBD集成至Heartbeat只需要修改/etc/ha.d/haresources这个文件,修改方法和内容如下:
# vi /etc/ha.d/haresources
laborc 192.168.0.112 drbddisk::r0 Filesystem::/dev/drbd0::/drbddata/drbd:ext3 apache
上面那行解释如下:
laborc # 定义laborc为heartbeat的主机
192.168.0.12 #定义对外服务的IP地址,这个IP自动在主从机之间切换
drbddisk::r0 #定义使用的drbd资源
Filesystem::/dev/drbd0::/drbddata/drbd:ext3 #定义挂载文件系统
apache # 定义其他需要切换的服务(用空格隔开)
4.2.集成Mysql至Heartbeat
1.如果Mysql服务还开着,请把服务服务关掉
#service mysqld stop
2.把my.cnf复制到drbd设备中(我这里是硬盘,drbd0所挂载的文件系统/drbddata/drbd)
#cp /etc/my.cnf /drbddata/drbd
3.把mysql的data文件复制到drbd设备中(我这里是硬盘,drbd0所挂载的文件系统/drbddata/drbd),我的mysql的data文件放在/drbddata/data文件下
#cp –R /drbddata/data /drbddata/drbd /data
4.修改mysql的启动脚本,修改mysql的data文件的路径
#vi /etc/init.d/mysqld
datadir = /drbddata/drbd /data
5.创建/etc/my.cnf到DRBD文件系统中新配置文件的链接
#ln –s /drbddata/drbd /my.cnf /etc/my.cnf
6.修改/etc/ha.d/haresources这个文件,在其后面添加Mysql的服务
laborc 192.168.0.112 drbddisk::r0 Filesystem::/dev/drbd0::/drbddata/drbd:ext3 apache mysqld
5. 效率测试
首先我在node1中创建了一张测试表test,结构如下:
然后创建一个存储过程,如下:
create procedure t_procedure()
begin
declare a int;
set a = 1;
while a
insert into test_procedure(id,name) values(a,'asd');
set a = a+1;
end while;
end;
//
执行存储过程:
Call t_procedure();
我插入了两千万条数据,两个节点同步所需的时间如下图:
以下是node1中的数据查询:
以下是node2中的数据查询:
以下是同步的详细信息:

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境