Resource
Manager[3271]: 2011/09/01_09:23:36 info: Releasing resource group: mysqlm1 IPADDR::172.17.94.208/24/eth0:0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 mysqld
ResourceManager[3271]: 2011/09/01_09:23:36 info: Running /etc/ha.d/resource.d/mysqld stop
ResourceManager[3271]: 2011/09/01_09:23:36 ERROR: Cannot locate resource script Filesystem
ResourceManager[3271]: 2011/09/01_09:23:36 ERROR: Cannot locate resource script Filesystem
ResourceManager[3271]: 2011/09/01_09:23:37 info: Retrying failed stop operation [Filesystem::/dev/drbd0::/data::ext3]
ResourceManager[3271]: 2011/09/01_09:23:37 ERROR: Cannot locate resource script Filesystem
ResourceManager[3271]: 2011/09/01_09:23:37 ERROR: Cannot locate resource script Filesystem
ResourceManager[3271]: 2011/09/01_09:23:38 info: Retrying failed stop operation [Filesystem::/dev/drbd0::/data::ext3]
ResourceManager[3271]: 2011/09/01_09:23:38 ERROR: Cannot locate resource script Filesystem
ResourceManager[3271]: 2011/09/01_09:23:38 ERROR: Cannot locate resource script Filesystem
1:为什么MYSQLM2没有获取primary权限,谢谢!
一. 环境描述OS环境:CentOS 5.5 x86_64 (development环境)
DRBD版本:
drbd83-8.3.13-2.el5.centos.x86_64
kmod-drbd83-8.3.13-1.el5.centos.x86_64
MySQL版本:MySQL 5.5.28
Keepalived版本:keepalived-1.1.19-1.i386.rpm
drbd3:192.168.0.96
drbd4:192.168.0.97
drbd_vip:192.168.0.100
二. DRBD部署
a) 定义主机名
# vim /etc/hosts
192.168.0.96 drbd3
192.168.0.97 drbd4
b) 创建分区
在drbd3和drbd4上分别创建两个10G大小空间的分区,并不对分区进行文件系统格式化
c) yum部署DRBD
yum -y install drbd83* kmod-drbd83
d) 配置DRBD
# vim /etc/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 drbd3{ #这里一定要是hosts定义的名称
device /dev/drbd0 #逻辑设备路径
disk/dev/hda3#真实设备路径
address 192.168.0.96:7789
meta-disk internal
}
on drbd4{
device /dev/drbd0
disk/dev/hda3
address 192.168.0.97:7789
meta-disk internal
}
}
在drbd3 上执行:
drbdadm create-md r0 (创建drbd记录信息的数据块,正常会有下面提示)
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
在drbd4 上执行:drbdadm create-md r0
#/etc/init.d/drbd start 启动服务,2台机子都启动,这个启动有时候要你填YES
在drbd3上执行:drbdadm -- --overwrite-data-of-peer primary r0 设为主节点
mkfs.ext3 /dev/drbd0
mount /dev/drbd0 /data
测试:
在drbd3上:
cd /data/
touch test
umount /dev/drbd0
drbdadm secondary r0
在drbd4上执行:
drbdadm primary r0
mount /dev/drbd0 /data/
DRBD 协议说明:
A协议:数据一旦写入磁盘并发送到网络中就认为完成了写入 *** 作
B协议:收到接收确认就认为完成了写入 *** 作
C协议:收到写入确认就认为完成了写入 *** 作
DRBD net处理脑裂说明:
DRBD设备的三个进程:
每个drbd设备都有三个进程:
1) drbd0_worker是drbd0的主进程
2) drbd0_asender是primary上的drbd0的数据发送进程
3) drbd0_receiver是secondary上的drdb0的数据写入进程
DRBD几点注意的地方:
1) mount drbd设备以前必须把设备切换到primary状态
2) 两个节点中,同一时间只能有一台处于primary状态,另一台是secondary状态
3) 处于secondary状态的节点不可以挂载
4) 主备最好使用大小一样的分区。
DRBD使用时建议使用Innodb存储引擎,同时打开binlog日志,设置innodb_flush_log_at_commit=1。MyISAM存储引擎在DRBD上容易造成数据丢失,及文件损坏。
DRBD脑裂后处理:
在drdb4上
drbdadm secondary r0
drbdadm — –discard-my-data connect r0
drbdadm connect r0
在drbd3上
drbdam disconnect r0
drbdadm connect r0
三. MySQL部署
添加mysql用户:
useradd mysql –s /sbin/nologin
安装cmake工具:
wget http://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz
tar zxfv cmake-2.8.7.tar.gz
cd cmake-2.8.7
./configure &&make &&make install
安装MySQL
tar zxfv mysql-5.5.28.tar.gz
cd ../mysql-5.5.28
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/3306 -DWITH_INNOBASE_STORAGE_ENGINE=on -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/data/3306/my
sqld.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DSYSCONFDIR=/etc/mysql/3306 &&make &&make install
cd /usr/local/mysql/
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql --datadir=/data/3306
创建PID并授权
cp support-files/mysql.server /etc/init.d/mysqld
四. Keepalived部署
部署keepalived:
rpm -ivh keepalived-1.1.19-1.i386.rpm
在drbd3上配置文件如下:
-----------------/etc/keepalived/keepalived.conf-----------------
! Configuration File for keepalived
global_defs {
router_id 192.168.0.96
}
vrrp_script chk_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 5
weight -10
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.100
}
track_script {
chk_mysql
}
}
--------------------------------- check_mysql.sh ----------------------------------------
#!/bin/bash
A=`ps -C mysqld --no-header |wc -l`
if [ $A -eq 0 ]then
/bin/umount /data/
drbdadm secondary r0
killall keepalived
fi
------------------------------------------to_master.sh--------------------------------------------
#!/bin/bash
drbdadm primary r0
/bin/mount /dev/drbd0 /data/
/etc/init.d/mysqld start
在drbd4上配置文件如下:
-----------------/etc/keepalived/keepalived.conf-----------------
! Configuration File for keepalived
global_defs {
router_id 192.168.0.97
}
vrrp_sync_group VI{
group {
VI_1
}
notify_master /etc/keepalived/to_master.sh
notify_backup /etc/keepalived/to_backup.sh
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 52
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.100
}
}
------------------------------------------to_master.sh--------------------------------------------
#!/bin/bash
drbdadm primary r0
/bin/mount /dev/drbd0 /data/
/etc/init.d/mysqld start
------------------------------------------to_backup.sh-------------------------------------------
#!/bin/bash
/etc/init.d/mysqld stop
/bin/umount /dev/drbd0
drbdadm secondary r0
比较:ndb是一种存储引擎,通常在mysql cluster中使用,MySQL Cluster 是一个基于NDB Cluster 存储引擎的完整的分布式数据库系统。
和Oracle Real Cluster Application 不太一样的是,MySQL Cluster 是一个Share Nothing 的架构
各个MySQLServer 之间并不共享任何数据,高度可扩展以及高度可用方面的突出表现是其最大的特色。
目前还是MySQL 家族中的一个新兴产品
优势:可用性非常高,性能非常好。每一分数据至少在不同主机上面存在一份拷贝,且
冗余数据拷贝实时同步。
劣势:维护较为复杂,产品还比较新,存在部分bug,目前还不一定适用于比较核心的
线上系统。
drdb是一种数据高可用 数据冗余方案
简单来说,DRBD 其实就是通过网络来实现块设备的数据镜像同步的一款开源Cluster
软件,也被俗称为网络RAID1
优势:软件功能强大,数据在底层快设备级别跨物理主机镜像,且可根据性能和可靠性
要求配置不同级别的同步。IO *** 作保持顺序,可满足数据库对数据一致性的苛刻要求。
劣势:非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两者相互矛盾,
无法适用于性能和可靠性要求都比较苛刻的环境。维护成本高于MySQL Replication。
初步结论:楼主数据量大,还是超大,如果业务不是特别关键,建议用MySQL Cluster,遇到BUG也为MySQL Cluster提供些问题和建议,一起完善它。
如果业务又很关键,那还要具体分析,为什么要采用集群,是哪里存在瓶颈了,据我所了解,MYSQL如果是关键业务,数据量又大,访问量也大,今后还会更大,可能无限制增长,那还是从数据分割上下手。如果只是量大,但增长不会长期,那把服务器性能提升下得了,同时对数据库优化参数多研究下。硬件主要是CPU能力、内存大小,磁盘性能,磁盘做RAID10或RAID50是最好的,不要做RAID5或RAID1。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)