主主互备配合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可以解决这个问题
高可用性需要解决的主要问题有两个,一是如何实现数据共享和同步数据,另一个是如何处理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可以解决这个问题
相关文章推荐
- AS3自写类整理笔记 ClassLoader类第1/2页
- AS3自写类整理笔记 Dot类第1/2页
- DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 .
- perl脚本学习指南--读书笔记
- 《C++ primer plus》读书笔记(三)
- 《C++ primer plus》读书笔记(二)
- jquery 笔记 事件
- VPS 配置优化笔记
- Ajax学习笔记整理
- 一千行的MySQL学习笔记汇总
- 两千行代码的PHP学习笔记汇总
- 用来记笔记的软件 EverNote 2.2.1.386提供下载
- Hibernate的学习笔记(3)
- CentOS6.X下Docker安装笔记
- CentOS下Redis高可用安装笔记
- 在Flickr的开发与运维合作(笔记)
- Shell脚本学习笔记
- notes on python
- SSH无需密码密钥登录
- 生成树协议(STP PVST CST RSTP MSTP)笔记