精品两台linux完美实现双机热备.docx
《精品两台linux完美实现双机热备.docx》由会员分享,可在线阅读,更多相关《精品两台linux完美实现双机热备.docx(8页珍藏版)》请在冰豆网上搜索。
![精品两台linux完美实现双机热备.docx](https://file1.bdocx.com/fileroot1/2022-11/30/c33bc440-a278-4ceb-bdd5-b1f9a497423e/c33bc440-a278-4ceb-bdd5-b1f9a497423e1.gif)
精品两台linux完美实现双机热备
【关键字】精品
两台linux完美实现双机热备
ip1:
ha1
ip2:
ha2
物理磁盘10g
系统分区5g
disk:
/dev/sda1(一个2G的分区)
disk:
/dev/sda2(一个2G的分区)
通过drbd,挂在每台机器上的sdb1这块分区将成为咱们“保存”。
let'sgo!
++++++现在开始两台机器配置一样++++++
1.设定hosts
vi/etc/hosts
ha1
ha2
注意:
比如在1.11这台机器上。
drbd1是你执行hostname命令看到的,而不是随手一写的哟:
)
2.安装并配置drbd
1).安装drbd。
你可以去/下载最新的版本。
本文为了方便直接从ubuntu的源进行安装
更新apt源
执行操作
拷贝sources.list到/etc/apt覆盖原文件
拷贝resolv.conf到/etc覆盖原文件
apt-getupdate
apt-getinstalldrbd8-utilsdrbd8-module-sourcebuild-essentialmodule-assistant
module-assistantauto-installdrbd8
磁盘分区
cfdisk/dev/sda
sda2:
2G
sda3:
2G
创建分区后重启
2).创建配置文件
备机上文件从主机上拷贝
如果用apt-get或者yum的方式安装的话,会默认创建配置文件,而编译安装则不会。
不管直接清空或改名,写入以下内容。
vi/etc/drbd.conf
common
{
syncer
{
rate500M;
}
}
resourcer0
{
protocolC;
startup{wfc-timeout30;degr-wfc-timeout120;}
disk
{
on-io-errordetach;
}
onha1
{
device/dev/drbd0;
disk/dev/sda2;
address;
meta-diskinternal;
}
onha2
{
device/dev/drbd0;
disk/dev/sda2;
address;
meta-diskinternal;
}
}
resourcer1
{
protocolC;
startup{wfc-timeout30;degr-wfc-timeout120;}
disk
{
on-io-errordetach;
}
onha1
{
device/dev/drbd1;
disk/dev/sda3;
address;
meta-diskinternal;
}
onha2
{
device/dev/drbd1;
disk/dev/sda3;
address;
meta-diskinternal;
}
}3)创建资源
修改hosts文件
Vi/etc/hosts
ha1
ha2
drbdadmcreate-mdr0#r0为刚才配置文件里的资源名
drbdadmcreate-mdr1#r1为刚才配置文件里的资源名
会提示三个疑问,如果你英文还可以的话,可以阅读一下,不然的话,直接回车。
在终点你会看到
success
:
)
4)启动drbd服务
/etc/init.d/drbdstart
等待单机数据同步完成
cat/proc/drbd
你应该可以看到
注意里面我标注的"Secondary/Secondary"意思是说现在这块盘是从盘,主盘不知道。
++++++现在开始只在drbd1上操作++++++
5)初始化网络硬盘
drbdsetup/dev/drbd0primary-o
cat/proc/drbd
你会发现现在已经是"Primary/Secondary"了,而且已经开始同步硬盘状态。
为了实时的查看同步情况,你可以在drbd1上执行
watch-n1cat/proc/drbd
同步还在进行
经过一段时间的等待,你会发现成功完成!
同步完成以后,在drbd2上查看硬盘状态
注意磁盘状态是:
"Secondary/Primary"
格式化网络磁盘
6)设置drbd开机启动
在两台机器上都执行
chkconfigdrbdon
7)手工测试drbd是不是正常工作
在drbd1上建立3个文件
在drbd2上验证结果
ok,我们现在已经确定drbd是正常工作的了。
也相信在这么细致的介绍下,你已经熟悉了它是怎么工作了。
我们现在有了“网络存储”了。
下一步就是让一个东东帮我们调度资源了。
简单的几步配置有请heartbeat出场
建立/data/mysql文件夹用来移植MYSQL数据文件
3.配置heartbeat
1)安装heartbeat
apt-getinstallheartbeat
2)配置heartbeat
vi/etc/heartbeat/ha.cf
logfacilitylocal0
keepalive2
deadtime10
auto_failbackoff
bcasteth0
nodedrbd1drbd2
vi/etc/heartbeat/haresources
heart2drbddisk:
:
r0Filesystem:
:
/dev/drbd0:
:
/mnt:
:
ext3
viauthkeys
auth3
3md5abc
chmod600authkeys
3)相同的配置复制到drbd2
scpauthkeysharesourcesha.cfroot@
4)确保服务都是正常运行的
/etc/init.d/drbdstart
/etc/init.d/heartbeatstart
5)切换测试
通过cat/proc/drbd查看drbd的状态或者mount查看/mnt是不是已经挂载确定资源所在的机器。
然后在那台机器的/mnt新建立一些文件并停掉那台机器上的heartbeat。
看另一台机器上/mnt是不是被自动挂载了呢?
里面是不是有刚创建的文件?
goodluck!
总结:
基本两台linux实现的双机热备到此就要结束了。
回顾一下环境:
两台机器;两块独立的分区,最好是一样大,只分区,而没有格式化;linux操作系统;drbd网络磁盘;heartbeat实现资源调度;好像就这么多东西吧。
可能您要说了,看完这篇文章,一点实际意义都没有,因为只是实现了共享磁盘。
哈哈,我要说,要想发挥威力就要仔细的看一下heartbeat的资源调度了,有了这位大管家,还有啥实现不了的服务呢?
本文出自“rainbird”博客,转载请与作者联系!
安装MYSQL
取消mysql自动启动
servicemysqlstop
update-rc.d-fmysqlremove
update-rc.d-ftomcat6remove
update-rc.d-fheartbeatremove
update-rc.dheartbeatdefaults
迁移MySQL数据目录
未分类,byAthurgFeng.
话说在VPS中,重装系统也许是不可避免的事。
对于很多VPS供应商而言,尤其是Linux客户机的VPS。
所谓的重装,也就是直接用一块已经安装好系统的新硬盘镜像,替换掉以前的就是了。
因此很多VPS供应商明确的指出——“VPS系统重装后,Windows客户机的C盘数据将清空,Linux客户机所有数据将清空,请客户做好备份”。
大家都知道,中国的拨号式“宽带”。
对于备份整个服务器,简直是有点找抽的做法。
因此作为服务商推出一项新策略——智能备份。
简单的说,就是直接将给你的硬盘空间一分为二,一半用于运行,一半用于备份。
所以常常号称40G硬盘空间的你,实际上只能得到20G可用空间。
这样的确起到了备份的作用,但是付出的代价也是极为巨大的。
既然服务商的方案我们不想采用,又更不想每次重装都要下载、上传整个硬盘。
那我们怎么办呢?
方法很简单,借鉴Windows的做法,将数据和程序物理性的分开处理。
即将磁盘分区修改为两个以上,一个存储系统程序,一个用于存储数据。
这里,我们要说的就是MySQL数据的剥离。
知道MySQL的人都知道,MySQL的默认数据存放于/var/lib/mysql。
这里我们假定将这个数据位置修改为/home/mysql。
于是就有了我们三步走的迁移攻略了:
1.停下mysql服务;
2.复制数据到新位置:
要注意的是,mysql的数据及其数据存储目录的属主和属组都是mysql。
而通常我们貌似也不知道mysql用户的密码,所以怎么办呢?
当然是以root用户来复制咯。
所以这一要注意,复制完成后,切记要将新目录及其子目录、文件的属组、属主修改为mysql;
3.修改MySQL配置文件/etc/mysql/f,将datadir设置项的值设置为新的数据位置/home/mysql。
这里提供个小脚本,请注意这个脚本的适用环境是ArchLinux,其他发行版可参考。
主要的差别在于默认的MySQL配置文件路径、默认的MySQL数据存储目录、修改后的MySQL数据存储目录。
OLD_PATH=/var/lib/mysql
NEW_PATH=/data/mysql
#很多发行版的MySQL配置目录可能是/etc/f
CFG_PATH=/etc/mysql/f
install-D${NEW_PATH}
cp-rvf${OLD_PATH}/*${NEW_PATH}
chown-Rmysql:
mysql${NEW_PATH}
sed-ibackup"s/^datadir.*/datadirt=/data/mysql/p"${CFG_PATH}
修改my。
Cnf文件
[mysqld]
#
#*BasicSettings
#
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/data/mysql/mysql
tmpdir=/tmp
language=/usr/share/mysql/English
修改vi/etc/heartbeat/haresources
加入mysql,tomcat
ha1IPaddr:
:
drbddisk:
:
r0Filesystem:
:
/dev/drbd0:
:
/data/mysql:
:
ext3drbddisk:
:
r1Filesystem:
:
/dev/drbd1:
:
/home:
:
ext3mysqltomcat6
将MYSQL数据库映射到第二台机器上启动myslq出错的解决方式
拷贝第一台机器/etc/mysql/f
/usr/../mysqladmin
覆盖第二台机器
取消mysql自动启动
servicemysqlstop
update-rc.d-fmysqlremove
tomcat6也不自动启动
drbd脑裂处理
一个朋友告诉我要是脑裂了,一般管理员也就脑裂了,你不知道哪台现在正在提供服务,我的例子倒是很好找,我有个虚IP,这个虚IP在哪漂着,哪台就是主,然后在从机上手动恢复
步骤是:
1、先umountdrbd的分区
2、drbdadmdisconnectall
3、drbdadmsecondaryall
4、drbdadm----discard-my-dataconnectall
如果还不行,在主上执行drbdadmconnectall就行了
我试验时是这么恢复的,仅供参考。
此文档是由网络收集并进行重新排版整理.word可编辑版本!