加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Keepalive+mysql(主主)高可用测试

(2012-04-06 12:25:23)
标签:

keepalive

mysql

ha

it

分类: Database

主:192.168.128.10

从:192.168.128.11

VIP192.168.128.20

 

1,  mysql配置

主服务器:

[root@localhost ~]# yum install mysql-server mysql

[root@localhost ~]# /etc/init.d/mysqld start

mysql> grant replication slave,file on *.* to 'mysql1'@'192.168.128.11' identified by '123456';

mysql> grant all privileges on *.* to 'root'@'%' identified by '111111';  #开启远程连接

[root@localhost ~]# /etc/init.d/mysqld stop

[root@localhost ~]# vi /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

old_passwords=1

 

###以下红色部分为新添加

log-bin=mysql-bin

server-id=1

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=1

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[root@localhost ~]# /etc/init.d/mysqld start

[root@localhost ~]# mysql

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |      98 | test         | mysql            |

+------------------+----------+--------------+------------------+

 

从服务器:

[root@localhost ~]# yum install mysql-server mysql

[root@localhost ~]# /etc/init.d/mysqld start

mysql> grant replication slave,file on *.* to 'mysql2'@'192.168.128.10' identified by '123456';

mysql> grant all privileges on *.* to 'root'@'%' identified by '111111';  #开启远程连接

[root@localhost ~]# /etc/init.d/mysqld stop

[root@localhost ~]# vi /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

old_passwords=1

 

###以下红色部分为新添加

log-bin=mysql-bin

server-id=2

binlog-do-db=test

binlog-ignore-db=mysql

replicate-do-db=test

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

sync_binlog=1

auto_increment_increment=2

auto_increment_offset=2

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[root@localhost ~]# /etc/init.d/mysqld start

[root@localhost ~]# mysql

mysql> show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 |      98 | test         | mysql            |

+------------------+----------+--------------+------------------+

 

主服务器:

[root@localhost ~]# /etc/init.d/mysqld start

mysql> flush tables with read lock\G

mysql> show master status\G

mysql> change master to

->master_host='192.168.128.11',

->master_user='mysql2',

->master_password='123456',

->master_log_file='mysql-bin.000001'    ,

### master_log_file需要在另一台上执行show master status查看

->master_log_pos=98;

 

mysql> start slave;

mysql> show slave status\G

以下两项为yes则成功

          Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

 

从服务器:

[root@localhost ~]# /etc/init.d/mysqld start

mysql> flush tables with read lock\G

mysql> show master status\G

mysql> change master to

->master_host='192.168.128.10',

->master_user='mysql1',

->master_password='123456',

->master_log_file='mysql-bin.000001',

### master_log_file需要在另一台上执行show master status查看

->master_log_pos=98;

 

mysql> start slave;

mysql> show slave status\G

以下两项为yes则成功

          Slave_IO_Running: Yes

          Slave_SQL_Running: Yes

 

2,  mysql主主同步测试

1)  主服务器创建表,查看从服务器;

2)  主服务器插入数据,查看从服务器;

3)  从服务器插入数据,查看主服务器;

4)  远程root登陆测试;

 

 

3keepalived安装(主从安装相同)

[root@localhost ~]# uname -r

2.6.18-238.el5

[root@localhost ~]# ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# tar zxf keepalived-1.2.1.tar.gz

[root@localhost src]# cd keepalived-1.2.1

[root@localhost keepalived-1.2.1]# vi keepalived/libipvs-2.6/ip_vs.h

[root@localhost keepalived-1.2.1]# ./configure

[root@localhost keepalived-1.2.1]# make

[root@localhost keepalived-1.2.1]# make install

 

2,拷贝程序文件

[root@localhost keepalived-1.2.1]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

[root@localhost keepalived-1.2.1]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

[root@localhost keepalived-1.2.1]# mkdir /etc/keepalived

[root@localhost keepalived-1.2.1]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived

[root@localhost keepalived-1.2.1]# cp /usr/local/sbin/keepalived /usr/sbin/

 

3,修改keepalived.conf配置文件

[root@localhost keepalived-1.2.1]# cd /etc/keepalived/

[root@localhost keepalived]# vi keepalived.conf

global_defs {

        router_id Haweb_1

        }

 

vrrp_sync_group VGM {

        group {

        VI_HA

        }

}

 

vrrp_script chk_mysql {

        script "killall -0 mysqld"            #检测mysqld进程,也可以替换成检测脚本

        interval 5

}

 

vrrp_instance VI_HA {

        state MASTER          ###从为BACKUP

        interface eth0

        virtual_router_id 51

        priority 100                ###从为99

        advert_int 5

        authentication {

        auth_type PASS

        auth_pass 111

        }

 

        virtual_ipaddress {

        192.168.128.20/24 dev eth0

        }

 

        track_script {

        chk_mysql        #执行上面的命令

        }

 

}

[root@localhost ~]# /etc/init.d/keepalived start             #主从同时启动

[root@localhost ~]# tail -f /var/log/messages        #查看日志启动信息

[root@localhost ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0c:29:05:38:cd brd ff:ff:ff:ff:ff:ff

    inet 192.168.128.10/24 brd 192.168.128.255 scope global eth0

    inet 192.168.128.20/24 scope global secondary eth0

 

4keepalived测试

 1),停止主服务器keepalived,检查VIP是否切换到从服务器;

重启主服务器keepalivedVIP再次由主服务器接管;

 2),停止主服务器mysql,检查VIP是否切换到从服务器;

重启主服务器mysqlVIP再次由主服务器接管;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有