Chinaunix首页 | 论坛 | 博客

  • 博客访问: 915967
  • 博文数量: 226
  • 博客积分: 10077
  • 博客等级: 上将
  • 技术积分: 2708
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-25 14:36
文章分类

全部博文(226)

文章存档

2010年(15)

2009年(82)

2008年(129)

我的朋友

分类: LINUX

2009-11-13 17:46:28

运行环境:Ubuntu8.0.4
              DRBD-8.0.11
              MySQL-5.1.36-log
             
服务器名称及IP:DBTest1 192.168.0.101 primary node
                     DBTest2 192.168.0.102 secondary node
 
步骤:
一,编译安装MySQL
     在DBTest1和DBTest2上分别执行如下步骤
     #tar -zxvf mysql-5.1.36.tar.gz
     #cat mysql-5.1.36
     #./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-plugins=max-no-ndb
     #make
     #make install
     #adduser mysql
     到此mysql安装完成,先不急着运行mysql下面安装DRBD
二,安装DRBD
    在DBTest1和DBTest2上分别执行如下步骤
    #sudo apt-get install drbd8-utils
    安装完成后查看drbd是否安装成功
    #lsmod | grep drbd
      drbd                  213256  4 
      cn                      9632  1 drbd
    看到上面的信息则表示安装成功了
三,增加磁盘分区
     在我的测试环境中有一个新的磁盘/dev/sdb 现在在这个磁盘上分一个区/dev/sdb1用于drbd, 注册DBTEST1和DBTEST2上的磁盘分区大小最好相同。
     #fdisk /dev/sdb
     
四,配置DRBD
     DRBD 的配置文件一般位于/etc/drbd.conf,修改这个文件,注意在DBTEST1和DBTEST2中这个文件要完成相同
   
     global {
       usage-count no;
     }
 
     common {
        syncer { rate 10M; }
     }
 
    resource mysql {
     protocol C;
 
     on DBTest1 {
         device     /dev/drbd0;
        disk       /dev/sdb1;
        address    192.168.0.101:7788;
        flexible-meta-disk  internal;
     }
 
  on DBTest2 {
        device    /dev/drbd0;
        disk      /dev/sdb1;
        address   192.168.0.102:7788;
        meta-disk internal;
    }
}
五,启动DRBD
     在DBTEST1(主节点)上执行如下命令 
    1) 创建matadata:
        #drbdadm create-md all
    2) 启动drbd:
       #/etc/init.d/drbd start
    3) 设置为主节点:
       #drbdadm  primary all
    4) 在新设备上面创建文件系统
       #mkfs.ext3 /dev/drbd0
    5) 将文件系统mount上
       #mkdir /dbfile
       #mount /dev/drbd0 /dbfile
     在DBTEST2(从节点)上执行如下命令:
    1) 创建matadata:
       #drbdadm create-md all
    2) 启动drbd:
       #/etc/init.d/drbd start

    注:在从节点上不用创建文件系统(因为这些信息都会从主节点同步过来的)

六,检查DRBD的服务状态:
     在DBTEST1上执行如下命令:
     #pa -aux | grep drbd
root@DBTest1:~# ps aux | grep drbd
root      5761  0.1  0.0      0     0 ?        S    14:44   0:09 [drbd0_worker]
root      5763  0.4  0.0      0     0 ?        S    14:44   0:29 [drbd0_receiver]
root      5768  0.1  0.0      0     0 ?        S    14:44   0:08 [drbd0_asender]
root      6413  0.0  0.4   1784   536 pts/1    R+   16:41   0:00 grep drbd
#cat /proc/drbd
root@DBTest1:~# cat /proc/drbd 
version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
 0: cs:Connected st:Primary/Secondary ds:Inconsistent/UpToDate C r---
    ns:88796 nr:1060 dw:89856 dr:0 al:42 bm:28 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/257 hits:22157 misses:66 starving:0 dirty:24 changed:42
 
在DBTEST2上执行如下命令
root@DBTest2:/tools/mysql-5.1.36# ps -aux |grep drbd
Warning: bad ps syntax, perhaps a bogus '-'? See 
root      5672  0.0  0.0      0     0 ?        S    14:38   0:00 [drbd0_worker]
root      5673  0.3  0.0      0     0 ?        S    14:38   0:26 [drbd0_receiver]
root      5695  0.0  0.0      0     0 ?        S    14:44   0:03 [drbd0_asender]
root      6097  0.0  0.4   1788   576 pts/0    S+   16:42   0:00 grep drbd
 
# cat /proc/drbd 
version: 8.0.11 (api:86/proto:86)
GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by phil@mescal, 2008-02-12 11:56:43
 0: cs:Connected st:Secondary/Primary ds:UpToDate/Inconsistent C r---
    ns:3302 nr:88796 dw:89856 dr:2615 al:9 bm:8 lo:0 pe:0 ua:0 ap:0
        resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0
        act_log: used:0/257 hits:256 misses:9 starving:0 dirty:0 changed:9
 
看到以上信息说明DRBD已经正确启动了。其中drbd0_worker是drbd的主进程,而drbd0_asender是块发送进程,drbd0_receiver是块接收进程. cat /proc/drbd 中的信息如下
Field        说明                  值:
cs         连接状态               出现的值:
                    o Unconfigured:设备在等待配置。
                    o Unconnected:连接模块时的过渡状态。
                    o WFConnection:设备等待另一测的配置。
                    o WFReportParams:过渡状态,等待新TCP 连接的第一个数据包时。.
                    o SyncingAll:正将主节点的所有模块复制到次级节点上。.
                    o SyncingQuick:通过复制已被更新的模块(因为现在次级节点已经离开了集群)来更新次级节点。
                    o Connected:一切正常。
                    o Timeout:过渡状态。
st         状态(设备的作用)      可能的值为:
                    o 本地/远程一级状态
                    o 二级状态
                    o 未知(这不是一种作用)
ns    网络发送    模块号码
nr    网络接收    模块号码
dw   磁盘写入    模块号码
DR   磁盘读取    模块号码
of    运行中(过时的)模块号码
pe   待解决的    模块号码
ua    未答复的    模块号码(最好为0)  
 
 
七,配置MySQL
     #cd /usr/local/mysql
     #bin/mysql_install_db --datadir=/dbfile --user=mysql
     #vi /dbfile/my.cnf
      
[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
skip-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
datadir=/dbfile
basedir=/usr/local/mysql
 
server-id       = 2
 
log-bin=DBTest_bin
 
# binary logging format - mixed recommended
#binlog_format=mixed
 
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /opt/data/innodb
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 2M
#innodb_additional_mem_pool_size = 1M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 1M
#innodb_flush_log_at_trx_commit = 2
#innodb_lock_wait_timeout = 50
 
#Slave Configure
#master-host=192.168.0.101
#master-port=3306
#master-user=repl #同步用户帐号
#master-password=oursaadmin
#master-connect-retry=60 #预设重试间隔60秒
#replicate-do-db=crn #告诉slave只做blog数据库的更新
#relay-log=mysqld-relay-bin
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
 
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
 
[mysqlhotcopy]
interactive-timeout
 
八,测试
     在DBTEST1中启动MYSQL
     #cd /usr/local/mysql
     # bin/mysqld_safe --defaults-file=/dbfile/my.cnf --user=mysql &
     #mysql > create database crn;
     #mysql > create table t(i int);
     #mysql > insert into t values(1),(2),(3)
     #mysql> select * from t;
+------+
| i    |
+------+
|    1 | 
|    2 | 
|    3 | 
+------+
3 rows in set (0.00 sec)
   退出mysql,并在DBTEST1上关闭MYSQL,将主节点切换到DBTEST2
   # bin/mysqladmin shutdown
   #umount /dbfile
   #drbdadm secondary  all
  在DBTEST2 上执行如下命令
   #drbdadmin primary all
   #mount /dev/drbd0 /dbfile
   #cd /usr/local/mysql
   #bin/mysqld_safe --defaults-file=/dbfile/my.cnf --user=mysql &
   #mysql > use crn;
   #mysql > select * from t;
     
+------+
| i    |
+------+
|    1 | 
|    2 | 
|    3 | 
+------+
3 rows in set (0.00 sec)
    查看数据完成一致,说明DRBD的同步已经成功了
阅读(1003) | 评论(0) | 转发(0) |
0

上一篇:Kvm 网络桥接方案

下一篇:认识moosefs

给主人留下些什么吧!~~