Keepalived 架构高可用 Mysql
以下是我实验的步骤,仅供参考。
1、实验网络拓扑图
2、keepalived的安装
在10.72.16.226和10.72.16.227分别安装keepalived软件。
[root@localhost ~]# tar xf keepalived-1.2.1.tar.gz
[root@localhost ~]# cd keepalived-1.2.1
[root@localhost keepalived-1.2.1]# ./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5xen-i686/
--选择和自己一样的kernel,tab键补齐。
[root@localhost keepalived-1.2.1]# make
[root@localhost keepalived-1.2.1]# make install
主备机器都如上安装。
3、keepalived的配置
3.1在10.72.16.226(master)上面配置
[root@localhost keepalived-1.2.1]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.default
[root@localhost keepalived]# vim keepalived.conf
主备mysql中只是黄色字体不一样,其他都一样
global_defs {
router_id Hadb_1
}
vrrp_sync_group VGM {
group {
VI_HA
}
}
vrrp_script chk_mysql {
script "killall -0 mysqld"
#script "/tcp/127.0.0.1/3306"
interval 1
}
# vvrp_instance define #
vrrp_instance VI_HA {
state MASTER
interface eth0
virtual_router_id 54
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass hamysql
}
virtual_ipaddress {
10.72.16.230
}
track_script {
chk_mysql
}
}
[root@localhost keepalived]#scp keepalived.conf 10.72.16.227:/etc/keepalived/
3.2在10.72.16.227(backup)上面的配置
[root@localhost keepalived-1.2.1]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.default
[root@localhost keepalived]# vim keepalived.conf
主备的keepalived.conf中只是黄色字体不一样,其他都一样。
所以只需将state改成BACKUP,priority改成50即可
global_defs {
router_id Hadb_1
}
vrrp_sync_group VGM {
group {
VI_HA
}
}
vrrp_script chk_mysql {
script "killall -0 mysqld"
#script "/tcp/127.0.0.1/3306"
interval 1
}
# vvrp_instance define #
vrrp_instance VI_HA {
state BACKUP
interface eth0
virtual_router_id 54
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass hamysql
}
virtual_ipaddress {
10.72.16.230
}
track_script {
chk_mysql
}
}
3.3启动 Keepalived 服务
分别启动两台服务器(10.72.16.226和10.72.16227)的 Keepalived 服务并观察其日志,校验高可用是否成功。
[localhost@localhost ~]# service keepalived start
[localhost @localhost ~]# tail /var/log/messages
3.4 测试keepalived
1)在一台装有 mysql 客户端的 windows 或 linux 机器登陆 VIP 10.72.16.230 测试。
# mysql -uroot –p123 -h10.72.16.230
2)keepalived 故障转移测试
A:在 windows 或 linux 客户端一直去 ping VIP 10.72.16.230,然后关闭 10.72.16.226 上的 keepalived,正常情况下 VIP 10.72.16.230就会切换到 10.72.16.227 上面去。
注:通过命令ip a来查看vip 10.72.16.230,ifconfig看不到。
B:开启 10.72.16.226 上的 keepalived,看vip是否能自动切换回来。
3)MySQL 故障转移测试
A:在 10.72.16.226 上关闭 MySQL 服务,看 VIP 是否会切换到 10.72.16.227上
[localhost@localhost ~]# service mysqld stop
[localhost @localhost ~]# tail /var/log/messages -f
[root@localhost keepalived]# ip a
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:76:fe:3b brd ff:ff:ff:ff:ff:ff
inet 10.72.16.226/24 brd 10.72.16.255 scope global eth0
inet 10.72.16.230/32 scope global eth0
inet6 fe80::20c:29ff:fe76:fe3b/64 scope link
valid_lft forever preferred_lft forever
4 、MySQL主主复制
4.1 授权用户
在10.72.16.226上
grant replication slave,file on *.* to 'repl1'@'10.72.16.227' identified by '123';
在10.72.16.227上
grant replication slave,file on *.* to 'repl2'@'10.72.16.226' identified by '123';
4.2 修改配置文件
4.2.1 在10.72.16.226上
vi /etc/my.cnf
添加如下标黄色部分,其中只需要修改红色字体部分。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=1
binlog-do-db=db1 #需要进行同步的数据库
binlog-ignore-db=mysql
replicate-do-db=db1 #需要进行同步的数据库
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
master-host=10.72.16.227
master-user=repl2
master-password=123
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.2.2 在10.72.16.227上
vi /etc/my.cnf
添加如下标黄色部分,其中只需要修改红色字体部分。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=2
binlog-do-db=db1 #需要同步的数据库
binlog-ignore-db=mysql
replicate-do-db=db1 #需要同步的数据库
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
master-host=10.72.16.226
master-user=repl1
master-password=123
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
~
4.3分别重启两服务器的 Mysql 服务
service mysqld restart
4.4 分别在两服务器上查看从服务器状态
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
查看以上两项的值,均为 Yes 则表示状态正常
4.5 测试主主同步
A:测试服务器 Master,在服务器 Master 中新建数据
mysql> use db1
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
1 row in set (0.00 sec)
mysql> create table t2 (id int,name varchar(10));
Query OK, 0 rows affected (0.00 sec)
B:在 Backup 服务器进行查看
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t2 |
+----------------+
2 rows in set (0.00 sec)
C:在 Backup 服务器中插入一条记录
mysql> insert into t2 values (001,"ganxing");
Query OK, 1 row affected (0.01 sec)
D:在 Master 服务器中查看
mysql> select * from t2;
+------+---------+
| id | name |
+------+---------+
| 1 | ganxing |
+------+---------+
1 row in set (0.00 sec)
以上,我们搭建完成了MYSQL的主主复制和keepalived提供vip漂移的高可用模式。
完!
附件列表
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-1409122/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28916011/viewspace-1409122/