设为首页 加入收藏

TOP

MySQL双主互备+Keepalived高可用架构介绍(一)
2017-03-01 08:15:25 】 浏览:727
Tags:MySQL 双主互 Keepalived 可用 架构 介绍

一、MySQL双主互备+keepalived高可用架构介绍


MySQL主从复制架构可以在很大程度保证MySQL的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力。但是在这种架构中,主库出现故障时需要手动将一台从库提升为主库。在对写操作要求较高的环境中,主库故障在主从架构中会成为单点故障。因此需要主主互备架构,避免主节点故障造成写操作失效。


在双主互备的架构中,每台MySQL都充当主服务器,同时充当对方的从服务器。在任意一台服务器上的写操作都会被复制到另一台服务器上,从而保证了数据的可靠性。


在双主互备的基础上加上keepalived,在其中一台机器上绑定虚拟ip(VIP)。利用vip统一对外服务,可以避免在两个节点同时写数据造成冲突。同时当keepalived主节点发生故障时,keeplived会自动将VIP切换到备节点上,从而实现主服务器的高可用。



MySQL双主互备+keepalived高可用架构图


二、MySQL双主互备架构部署


1.开启原Master上的relay-log,指定不复制的库


[root@Mysql-248 mysql-5.6.30]# grep -A8 'mysqld' my.cnf
[mysqld]
port = 3306
server_id = 1
log-bin=mysql-bin
#以下部分为在原基础上新增的内容
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%


2.开启原Slave上的log-bin,指定不复制的库


[root@Mysql-249 mysql-5.6.30]# grep -A8 'mysqld' my.cnf


[mysqld]
port = 3306
server_id = 2
relay-log = mysql-relay-bin
#以下部分为在原基础上新增的内容
log-bin=mysql-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%


3.在Mysql248服务器上指定Mysql249为自己的主服务器并开启slave


####? ① 在Mysql249上查看当前master信息,并建立复制用户
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |? ? ? 493 |? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> grant replication slave on *.* to 'repl_user'@'192.168.175.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
?
#### ② 在Mysql248上指定Mysql249为自己的主服务器,开启slave
mysql> change master to \
? ? -> master_host='192.168.175.249',
? ? -> master_user='repl_user',
? ? -> master_password='123456',
? ? -> master_log_file='mysql-bin.000001',
? ? -> master_log_pos=493;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)


4.检验双主互备


? ①通过分别在两台服务器上使用show slave status\G,查询主库信息以及IO进程、SQL进程工作状态。若两台服务器的查询结果都为Slave_IO_Running: Yes,Slave_SQL_Running: Yes;则表示当前双主互备状态正常。


? ②在Mysql248数据库上建库建表,检查Mysql249上是否同步正常;然后在Mysql249上建库建表,检查Mysql248上是否同步正常。?


三、keepalived高可用部署


以下操作在两台机器上基本相同,不同之处请留意备注标识


1.keepalived编译安装


#编译操作两台机器一样
?
[root@Mysql-248 src]# tar -zxf keepalived-1.2.12.tar.gz
[root@Mysql-248 src]# cd keepalived-1.2.12
[root@Mysql-248 keepalived-1.2.12]# ./configure? --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-573.el6.x86_64/
[root@Mysql-248 keepalived-1.2.12]# make
[root@Mysql-248 keepalived-1.2.12]# make install
[root@Mysql-248 keepalived-1.2.12]# ln -s /usr/local/sbin/keepalived? /sbin/
[root@Mysql-248 keepalived-1.2.12]# chkconfig? --add keepalived
[root@Mysql-248 keepalived-1.2.12]# chkconfig? --level 35 keepalived on


2.keepalived配置


#配置文件中需要注意主备节点的priority与nopreempt配置不同
?
[root@Mysql-248 ~]# cd /etc/keepalived/
[root@Mysql-248 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
? notification_email {
? ? acassen@firewall.loc
? ? failover@firewall.loc
? ? sysadmin@firewall.loc
? }
? notificatio

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle服务器自动备份 下一篇MySQL主从复制操作

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目