Là một giải pháp khá phổ biến hiện nay là dùng DRBD để cấu trúc hệ thống HA Cluster cho Mysql . Có thể hiểu , DRBD là chương trình cho phép ta xây dựng RAID1 thông qua mạng . Nói dể hiểu hơn 1 chút thì DRBD là chương trình dùng mạng để đồng bộ dữ liệu partition của HD . Vì vậy , thật ra không cần phải là Mysql, khi xây dựng xong chương trình này, ta sẽ có thể ứng dụng cho apache , mail , ftp , ldap vv… . Với nhu cầu của thành viên HVA nênbài viết này đặt trọng tâm ứng dụng DRBD cho Mysql .
Cấu hình DRBD yêu cầu ta tạo các phần vùng meta data để quản lý phần vùng và tạo phần vùng chứa dữ liệu .
Cài đặt
# yum –y drbd kmod-drbd
Tạo 2 tất cả là 2 phần vùng tại HD /dev/sdb như sau ,
# fdisk /dev/sdb
/dev/sdb1 – Meta data (128M hoặc 256M)
/dev/sdb2 – Data
Chú ý : Để tránh tình trạng lãng phí tài nguyên giải quyết domain , nên cấu hình/etc/hosts tương ứng cho mạng LAN của bạn .
Sau khi fdisk xong , sẽ có kết quả như sau
コマンド (m でヘルプ): p
Disk /dev/sdb: 73.4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 1 65 522081 83 Linux
/dev/sdb2 66 8924 71159917+ 83 Linux
Copy file /usr/share/doc/drbd/drbd.conf vào /etc/ như sau
/etc/drbd.conf
resource d0 {
protocol C;
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 500M;
al-extents 257;
}
on hvaonline.net {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.10.10:7788;
meta-disk /dev/sdb1[0];
}
on hvaonline.net {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.10.11:7788;
meta-disk /dev/sdb1[0];
}
}
Ý nghĩa của các thông số có ý nghĩa như sau ,
Resource : Đặt tên cho resource .
Protocol : Hãy chọn option này là C . Vì trong readme nó ghi vậy .
C: write IO is reported as completed, if we know it has
reached _both_ local and remote DISK.
* for critical transactional data.
B: write IO is reported as completed, if it has reached
local DISK and remote buffer cache.
* for most cases.
A: write IO is reported as completed, if it has reached
local DISK and local tcp send buffer. (see also sndbuf-size)
* for high latency networks
**********
# uhm, benchmarks have shown that C is actually better than B.
# this note shall disappear, when we are convinced that B is
# the right choice "for most cases".
# Until then, always use C unless you have a reason not to.
# --lge
#**********
on-io-error : Xử lý khi bị I/O error
pass_on : Report the io-error to the upper layers. (chưa hiểu lắm )
call-local-io-error : Chạy script mang tên call-local-io-error
detach : The node drops its backing storage device, and continues in disk less mode. (Chưa hiểu lắm)
Đọc module của drbd
lsmod |grep drbd
modprobe drbd minor_count=1
Kết quả khi nhúng drbd vào .
# modinfo drbd
filename: /lib/modules/2.6.9-42.ELsmp/kernel/drivers/block/drbd.ko
author: Philipp Reisner , Lars Ellenberg
description: drbd - Distributed Replicated Block Device v8.0.7
license: GPL
parm: minor_count:Maximum number of drbd devices (1-255)
alias: block-major-147-*
parm: allow_oosONT USE!
license: GPL
author: Evgeniy Polyakov
description: Generic userspace <-> kernelspace connector.
parm: cn_idx:Connector's main device idx.
parm: cn_val:Connector's main device val.
vermagic: 2.6.9-42.ELsmp SMP 686 REGPARM 4KSTACKS gcc-3.4
Tạo metadata.(chạy trên cả 2 máy chủ . )
# drbdadm create-md d0
Khởi động và kiểm tra như sau . (chạy trên cả 2 máy chủ )
# drbdadm up all
# cat /proc/drbd
# service drbd start
Vào host 192.168.10.10, dùng lệnh sau để thành primary
#drbdadm -- --overwrite-data-of-peer primary all
-> Phần 2 : Tạo filesystem cho 2 node
Tại bước này , sẽ tạo file system và mount nó theo các trình tự sau
Tại Primary : 192.168.10.10
# mke2fs -j /dev/drbd0
Mount /dev/drdb0 đã tạo
#mkdir /mnt/drbd
#mount /dev/drbd0 /mnt/drbd/
Xong bước này xem như đã có sẵn những thứ cần thiết để đồng bộ dữ liệu .
Thử failover bằng tay như sau
tại Primary node : 192.168.10.10
# umount /mnt/drbd/
# drbdsetup /dev/drbd0 secondary
Tại Secondary node : 192.168.10.11
# drbdsetup /dev/drbd0 primary
# mount /dev/drbd0 /mnt/drbd/
Cuối cùng , tạo một file nào đó và xem phía primary:192.168.10.10 có tồn tại nó hay không .
-> Phần 3 : Setup Mysql để đồng bộ dữ liệu .
1. Cài đặt mysql -> Tìm trên HVA
2. cấu hình mysql
Phần này là dễ nhất , bạn chỉ cần ấn định tại basedir vào dưới directory /mnt/drdb là xong .
Ví dụ file cấu hình .
# Example MySQL config file for medium systems.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir=/mnt/drbd/data
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# Replication Master Server (default)
# binary logging is required for replication
log-bin
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[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
-> Phần 4 : Dùng heartbeat để giám sát 2 máy chủ .
Đón đọc và làm thử post kết quả lên cho vui nha bà con