вторник, 24 августа 2010 г.

DRBD+Heartbeat+MySQL - Краткий экскурс по резервированию данных в Linux.

 Данный вариант настройки производился под Ubuntu 9.04.

DRBD

Устанавливаем DRBD

shell> apt-get update
shell> apt-get install drbd8-utils drbd8-module-source \
  build-essential module-assistant
shell> module-assistant auto-install drbd8


Для настройки DRBD необходимо создать отдельный раздел на диске, размер которого достаточен для размещения базы данных. Далее настраиваем файл /etc/drbd.conf следующим образом:
global {                      
  usage-count no;              
}                          
common {                      
  protocol C;                  
}                          
resource r0 {                  
  syncer {                  
    rate 10M;                  
  }                          
  device    /dev/drbd0;          
  disk      /dev/sdb2;          
  meta-disk internal;          
  on ubuntu1 {                  
    address   192.168.0.1:27789;  
  }                          
  on ubuntu2 {                  
    address   192.168.0.2:27789;  
  }                          
}

где:
rate - скорость обмена данными между резервной и основной машиной.
device - имя виртуального дисковый накопителя.
disk - раздел на диске о котором говорил ранее.
ubuntu1,ubuntu2 - соответствующие host-имена машин.

Копируем данный файл на резервную машину.

1)Настраиваем DRBD для основной машины:
Создаем устройство /dev/drbd0
root-shell> drbdadm create-md all

запускаем DRBD
root-shell> /etc/init.d/drbd start

переводим DRBD в режим primary
root-shell> drbdadm -- --overwrite-data-of-peer primary all

Форматируем раздел под файловую систему ext3 (Можно под другую, но должна быть журналируемой)
root-shell> mkfs.ext3 /dev/drbd0      

Монтируем раздел к операционной системе
root-shell> mkdir /mnt/drbd          
root-shell> mount /dev/drbd0 /mnt/drbd    


2)Настраиваем DRBD для запасной машины

создаем раздел /dev/drbd0
root-shell> drbdadm create-md all

запускаем DRBD
root-shell> /etc/init.d/drbd start

после чего должна запуститься синхронизация, проверить можно следующим образом.
root-shell> cat /proc/drbd
version: 8.0.4 (api:86/proto:86)
SVN Revision: 2947 build by root@drbd-one, 2007-07-30 16:43:05
 0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
    ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0
        [==>.................] sync'ed: 12.3% (1845088/2097152)K
        finish: 0:06:06 speed: 4,972 (4,580) K/sec


MySQL

Отключаем MySQL
shell> mysqladmin shutdown

создаем папку MySQL
root-shell> mkdir /mnt/drbd/mysql

копируем базу данных в созданную папку
root-shell> cp -R /var/lib/mysql /mnt/drbd/mysql/data

в файле /etc/mysql/my.cnf на обоих машинах изменяем следующую строку
datadir = /mnt/drbd/mysql/data

Далее вносим аналогичные изменения в файл /etc/apparmor.d/usr.sbin.mysqld
и перезапускаем службу  apparmor
root-shell> /etc/init.d/apparmor upgrate

Перезапускаем MySQL
root-shell> /etc/init.d/mysql start


Heartbeat

В папке /etc/ha.d/ надо создать три файла со следующм содержанием
a) ha.cf
logfacility local0          
keepalive 500ms              
deadtime 10                  
warntime 5                  
initdead 30                  
mcast bond0 225.0.0.1 694 2 0      
auto_failback off              
node ubuntu1              
node ubuntu2

              
b) authkeys - установить права только для чтения
auth 1  
1 crc    


c) haresources
ubuntu1 drbddisk Filesystem::/dev/drbd0::/mnt/drbd::ext3::group gdm mysql apache2 chown 192.168.0.100


   chown — это скрипт который меняет пользователя для монтируемой папки, может иметь следующие содержание

#!/bin/sh -e                  
chown -R mysql:mysql /mnt/drbd

Комментариев нет:

Отправить комментарий