登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发技术 > 正文

MySQL数据库实现双向自动同步

2016-11-08 13:40    it168网站原创  作者: 张志强 编辑: 覃里

  【IT168 技术】本文将探讨如何通过MySQL数据库的高级特性,实现数据库的双向自动同步,确保数据的冗余与完整性。通过以往真实的项目实战与经验,把操作实施过程全部记录下来,主要有以下几个主要内容。

  1、简介

  2、MySQL的环境准备

  3、MySQL的配置

  4、MySQL的测试

  一、简介

  1、背景介绍

  最近接到一个项目,由于项目本身所用软件均为开源,所以在数据库选择上也采用了业界通用的开源数据库软件MySQL作为其后台数据存储仓库。为了确保数据的安全性和及时性,我们需要配置如何实现两台MySQL数据库内容的双向自动同步与监控,来保障数据库的数据冗余和数据安全。

  2、MySQL介绍

  MySQL数据库是业界著名的开源关系型数据库之一,也是一种关联数据库管理系统。关联数据库将数据保存在不同的表中,而不是将所有的数据放在一个大仓库中,这样就增加了速度提高了灵活性,搭配PHP和Apache可以组成良好的开发环境。

  3、基本概念

  为了更好的理解和配置MySQL,需要提前了解以下概念,由于我们在项目中使用的功能有限,所以仅介绍一些基本概念。

  3.1 视图

  视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询(即:包含一 个SQL查询),仅仅是用来查看存储在别处的数据的一种设施。视图可以嵌套,但不能索引,也不能有关 联的触发器或默认值。并非所有视图都是可更新的,如果MySQL不能正确确定被更新的基数据,则不允 许更新(包括插入和删除)。视图不能更新的情况:(1)分组,使用GROUP BY和HAVING;(2)联接; (3)子查询;(4)并;(5)聚集函数,Min/Count/Sum等;(6)DISTINCT;(7)导出列。

  3.2 存储过程

  存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合(实际上是一种函数),可将其视为批处理文件,虽然它们的作用不仅限于批处理。使用存储过程有3个主要的好处:简单、安全、高性能。比如启动的服务,相关的设定等。

  3.3 触发器

  触发器是MySQL响应DELETE/INSERT/UPDATE语句而自动执行的一条MySQL语句(或位于BEGIN/END间的一组语句)。只有表才支持触发器,视图不支持,临时表也不支持。触发器按每个表每个事件每次地定义,每个表每个事件每次只允许一个触发器,所以每个表最多支持6个触发器(每条INSERT、UPDATE和DELETE的之前和之后)。单一触发器不能与多个事件或多个表关联。

  4、MySQL的结构图

  为了更好的了解和配置MySQL,就必须先了解一下MySQL的体系结构。如下图所示:

MySQL数据库实现双向自动同步
▲MySQL体系架构图

  理解MySQL的体系架构对于成功的配置和调试至关重要。以下将对架构图进行简要的说明:

  ① Connectors指的是不同语言中与SQL的交互接口,例如适用于Java的JDBC,.Netframework的ODBC。

  ② Management Serveices & Utilities:系统管理和控制工具集合,例如备份还原,安全复制等功能。

  ③ Connection Pool:连接池,用于管理缓冲用户连接,线程处理等需要缓存的需求。

  ④ SQL Interface:SQL接口,用于接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。

  ⑤ Parser:解析器,用于SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。

  ⑥ Optimizer:查询优化器,用于SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。

  ⑦ Cache和Buffer:查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。

  ⑧ Engine:存储引擎,存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。Mysql的存储引擎是插件式的。它根据MySql提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)。现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB。

  二、MySQL环境准备

  为了便于看到效果,此文中我们将提前安装两个带有MySQL软件的Redhat6.5操作系统作为AB两个数据库服务器。操作系统和MySQL的安装并非此文章的介绍重点,详细安装步骤可以参照此链接(http://www.mysql.com/downloads/)。

  以下架构,简单描述了两台MySQL服务器自动同步数据的过程。

  1、硬件列表 

MySQL数据库实现双向自动同步
▲Master数据库服务器

MySQL数据库实现双向自动同步
 Slave数据库服务器

  2、逻辑部署架构图

MySQL数据库实现双向自动同步
 MySQL同步逻辑架构图

  三、MySQL 的数据库同步配置

  1、配置Develop数据库同步

  配置的前提是,我们已经顺利的将MySQL组件安装到了两个不同的系统中,并分别创建了developDB和testingDB同时建议将selinux功能关闭,开放所有的防火墙。通过ssh指令,可以远程登录到安装好的Linux服务器,可以通过如下指令,检查MySQL是否安装及其版本。

MySQL数据库实现双向自动同步
软件及版本检查

  1、首先开始对开发数据库设置开发数据库同步,通过Linux自带的VI工具打开MySQL的配置文件。

  my.cnf,路径为/etc/my.cnf。添加以下内容:

  server-id=1 (mysql标示)

  log-bin=mysql-bin(开启log-bin二进制日志文件,默认存在/var/lib/mysql下日志文 件以mysql-bin为开头)

  binlog-do-db =developDB(developDB为需要同步的数据库名,如需同步多个数据库,可以另起行如binlog-do-db =testing)

  # binlog-ignore-db=db_name (不进行同步日志的数据库,不需要的话注释掉)

  max-binlog-size=104857600(日志的大小,超出会自动生成一个新的)

  master-host=192.168.2.4(同步主机)

  master-user=develop(同步用户)

  master-password=*****(同步用户密码)

  master-port=3306

  replicate-do-db=developDB(同步数据库)

  修改完后保存退出,并重启mysql 如:service mysql restart (重启正常,表示配置没错误)

  2、在作为开发数据库的mysql上建立一个账户专门用于测试数据库来进行数据同步。

MySQL数据库实现双向自动同步
授权访问

  在测试数据库上测试账户develop是否可以访问开发数据库上的mysql。

  mysql -u develop -p -h 192.168.2.4(输入密码***,可以访问说明设置正确)

  2、配置Testing数据库同步

  通过ssh指令,可以远程登录到安装好的另一台Linux服务器,可以通过如下指令,检查MySQL是否安装及其版本。

MySQL数据库实现双向自动同步
软件及版本检查

  1、首先开始对测试数据库设置数据库同步,通过Linux自带的VI工具打开MySQL的配置文件

  my.cnf,路径为/etc/my.cnf。添加如下内容:

  server-id= 2 (mysql标示,不能出现重复)

  log-bin=mysql-bin(开启log-bin二进制日志文件,默认存在/var/lib/mysql下日志文件以mysql-bin为开头)

  binlog-do-db = developDB(developDB为需要同步的数据库名,如需同步多个数据库,可以另起行如binlog-do-db=testing)

  max-binlog-size=104857600(日志的大小,超出会自动生成一个新的

  master-host=192.168.2.3 (同步Master的ip地址)

  master-user=develop(同步所需的账号)

  master-password=***** (同步账号的密码)

  master-port=3306 (mstart 中mysql的访问端口)

  replicate-do-db=developDB (所需同步的数据库名)

  master-connect-retry=60 (主服务器宕机或连接丢失的情况下,从服务器线程重新尝试连接主服务器之前睡眠的秒数。

  log-bin=mysql-bin (开启log-bin二进制日志文件)

  修改完后保存退出,并重启mysql,service mysql restart (重启正常,表示配置没错误)

标签: mysql , 数据库
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部