您的位置:首页 > 数据库 > MySQL

主主互备配合keepalived,MYSQL解决方案

2016-03-06 11:02 651 查看
数据库是最基础的数据存储服务之一,需要具备高可用性,实现不同SLA(服务水平协定)的解决方案有很多种,这些方案可用保证数据库服务器子故障时服务继续可用

高可用性需要解决的主要问题有两个,一是如何实现数据共享和同步数据,另一个是如何处理failover

数据共享一般通过SAN(storage Area Network)实现,数据同步可以通过rsync软件或DRBD技术实现。

利用MySQL Replication单向异步复制,更新只在Master节点进行,slave服务器只提供查询功能。支持链式复制

实现原理:复制过程需要三个线程,一个IO线程在Master端,另外两个(SQL线程和IO线程)在slave端,master的bin-log发给slave端,然后slave解析log文件内容,然后执行同样的SQl操作

通过keepalived配合主主互备解决方案实现90%SLA:

两台myql互相作为自己的Master,又作为对方的slave进行复制;同时采用keepalived实现自动failover

1.DB 1配置文件:

server-id = 1 #DB2就写2

log-bin=mysql-bin

relay-log=mysql-relay-bin 主机端发送过来的bin-log

replicate-wild-ignore-table=mysql.%

replicate-wild-ignore-table=test.%

replicate-wild-ignore-table=information.schema.%

不要使用*-do-db,这样可能产生跨库更新失败

2.手动同步数据库mysql:

mysql >FLUSH TABLES WITH READ LOCK;不退出这个终端的情况下再开启一个终端

打包压缩数据或者用mysqldump导出 :tar zcvf mysql.tar.gz mysql ;mysqldump -uroot * >*.sql

3.创建用户并授权:grant replication slave on *.* to 'repl'@'192.168.1.102' indentified by '123123';

show master status;查看file和pos,在db2S上操作:

change mysql to \

master_host='192.168.1.101',

master_user='repl_user',

master_password='123123',

master_log_file='mysql-bin.000001',

master_log_pos=106;

start slave;

然后相同的操作反过来做一次就可以了

keepalived配置略,记得要nopeempt

此方法不能配置多slave节点,因为slave节点的host不会跟着随着master切换而切换,MMM可以解决这个问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  笔记