在MySQL数据库中,支持单项、异步复制。在复制过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。如下图所示。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。当一台从服务器连接到主服务器时,从服务器会通知主服器从服务器的日志文件中读取***一次成功更新的位置。然后从服务器会接收从那个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新。

这就是MySQL服务器数据库复制原理的基本说明。作为数据库管理员,对于这个原理只要有几个基本的了解即可。

实惠一:实现服务器负载均衡

通过服务器复制功能,可以在主服务器和从服务器之间实现负载均衡。即可以通过在主服务器和从服务器之间切分处理客户查询的负荷,从而得到更好的客户相应时间。通常情况下,数据库管理员会有两种思路。

一是在主服务器上只实现数据的更新操作。包括数据记录的更新、删除、新建等等作业。而不关心数据的查询作业。数据库管理员将数据的查询请求全部转发到从服务器中。这在某些应用中会比较有用。如某些应用,像基金净值预测的网站。其数据的更新都是有管理员更新的,即更新的用户比较少。而查询的用户数量会非常的多。此时就可以设置一台主服务器,专门用来数据的更新。同时设置多台从服务器,用来负责用户信息的查询。将数据更新与查询分别放在不同的服务器上进行,即可以提高数据的安全性,同时也缩短应用程序的响应时间、提高系统的性能。

二是在主服务器上与从服务器切分查询的作业。在这种思路下,主服务器不单单要完成数据的更新、删除、插入等作业,同时也需要负担一部分查询作业。而从服务器的话,只负责数据的查询。当主服务器比较忙时,部分查询请求会自动发送到从服务器重,以降低主服务器的工作负荷。当然,像修改数据、插入数据、删除数据等语句仍然会发送到主服务器中,以便主服务器和从服务器数据的同步。

要在数据库之间实现负载的均衡,其关键点就是数据同步的时间。如果主服务器与从服务器之间数据的更新时间比较长,此时从主服务器中查询得到的数据就会同从从服务器中得到的数据有差异。而如果同步的时间比较短,如实现同步复制,对网络带宽、服务器设备等就有比较高的要求。

可见这个同步的时间选择直接关系到其应用的效果。那么这个同步的时间应该选择多少呢?这没有一个固定的答案。主要是看用户的需要。如用户对数据的及时性要求并不是很高,或者数据更新的频率不是很高,那么这个同步的时间可以稍微长一点。但是如果这个数据的及时性要求很高,如股票的价格等等,此时就需要能够实现同步更新。所以具体要看企业实际的应用才能够决定采用什么样的同步时间。

在采取这个应用时,需要注意MySQL数据库的复制是单向的。即只能够将数据从主服务器复制到从服务器,而不能够将数据从从服务器发生到主服务器。这也就是说,数据库管理员不能够在从服务器上更新数据,否则的话,就可能会与主服务器上的数据产生冲突。默认情况下,系统会自动利用主服务器上的数据来更新从服务器上的数据。即在从服务器上所做的任何更改,到时候都会失效。如果是用户的请求,一般不用担心。系统会自动判断用户的请求是查询请求还是数据更新请求。并自动根据请求的类型转发到不同的服务器上。主要是数据库管理员,不要手痒痒,手动去更新从服务器上的数据。否则的话,就会导致从服务器与主服务器之间数据的冲突。

实惠二:通过复制实现数据的异地备份

如上图所示,可以定期的将数据从主服务器上复制到从服务器上,这无疑是先了数据的异地备份。在传统的备份体制下,是将数据备份在本地。此时备份作业与数据库服务器运行在同一台设备上,当备份作业运行时就会影响到服务器的正常运行。有时候会明显的降低服务器的性能。同时,将备份数据存放在本地,也不是很安全。如硬盘因为电压等原因被损坏或者服务器被失窃,此时由于备份文件仍然存放在硬盘上,数据库管理员无法使用备份文件来恢复数据。这显然会给企业带来比较大的损失。

而如果使用复制来实现对数据的备份,就可以在从服务器上对数据进行备份。此时不仅不会干扰主服务气的正常运行,而且在备份过程中主服务器可以继续处理相关的更新作业。同时在数据复制的同时,也实现了对数据的异地备份。除非主服务器和从服务器的两块硬盘同时损坏了,否则的话数据库管理员就可以在最短时间内恢复数据,减少企业的由此带来的损失。

在通过这种方式进行异地备份时,主要需要注意如下二个细节:

一是数据更新的时间。如果要采取这种方式进行备份,那么对于数据同步的时间,要小于等于数据备份的周期。只有如此,才能够确保最近更新的数据被正确的备份。此时即使主服务器出现了故障,用户丢失的也只是最近一个备份周期的数据。

二是从服务器上硬盘的空间。根据一般用户的心态,从服务器的配置往往比主服务器要低。但是现在从服务器要承担起数据备份的任务,为此对于硬盘的空间要求就要比主服务器要高。其不但要能够存储主服务器上的数据,而且还要对其进行备份。为此一般要求,从服务器上的存储空间是主服务器上的两倍。否则的话,就容易出现磁盘空间不足而导致备份作业失败。

实惠三:提高数据库系统的可用性

数据库复制功能实现了主服务器与从服务器之间数据的同步,增加了数据库系统的可用性。当主服务器出现问题时,数据库管理员可以马上让从服务器作为主服务器,用来数据的更新与查询服务。然后回过头来再仔细的检查主服务器的问题。此时一般数据库管理员也会采用两种手段。

一是主服务器故障之后,虽然从服务器取代了主服务器的位置,但是对于主服务器可以采取的操作仍然做了一些限制。如仍然只能够进行数据的查询,而不能够进行数据的更新、删除等操作。这主要是从数据的安全性考虑。如现在一些银行系统的升级,在升级的过程中,只能够查询余额而不能够取钱。这是同样的道理。

二是从服务器真正变成了主服务器。当从服务器切换为主服务器之后,其地位完全与原先的主服务器相同。此时可以实现对数据的查询、更新、删除等操作。为此就需要做好数据的安全性工作。即数据的安全策略,要与原先的主服务器完全相同。否则的话,就可能会留下一定的安全隐患。

原文链接:http://publish.itpub.net/a2011/0303/1162/000001162464.shtml

【编辑推荐】

【责任编辑:艾婧 TEL:(010)68476606】

点赞 0

mysql复制安全性_从MySQL复制功能中得到一举三得实惠相关推荐

  1. mysql 复制诊断_诊断Mysql复制问题

    我们的备份服务器上运行了一个 mysql复制客户端.自上周停电以来,它已停止复制.在此之前,它连续几个月没有运行. 我已经尝试重新启动主设备和从设备,但这没有帮助.我可以从从服务器访问主服务器,因此网 ...

  2. mysql+复制诊断_诊断Mysql复制问题

    我们的备份服务器上运行了一个mysql复制客户端.自上周停电以来,它已停止复制.在此之前,它连续几个月没有运行. 我已经尝试重新启动主设备和从设备,但这没有帮助.我可以从从服务器访问主服务器,因此网络 ...

  3. mysql性能视频教程_[视频教程] MySQL性能管理及架构设计 (完整版)

    第1章 实例和故事 决定电商11大促成败的各个关键因素. 1-1 什么决定了电商双11大促的成败 1-2 在双11大促中的数据库服务器 1-3 在大促中什么影响了数据库性能 1-4 大表带来的问题 1 ...

  4. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  5. mysql 实例名_不为人知的MySQL高可用复制管理工具——Orchestrator简介

    背景 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:O ...

  6. docker容器mysql头文件_在Docker容器中使用MySQL数据库

    开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在 ...

  7. mysql varchar 效率_由MySQL中char和varchar效率想到的

    对比char和varchar随便在google或百度中搜一下得到的结论大概都是"char定长,varchar不定长,char要比varchar占用更多的空间,由于定长char的效率高于var ...

  8. linux mysql清除缓存_转载-清除Linux中MySQL的使用痕迹~/.mysql_history

    背景:我们在管理MySQL server的时候,常常使用mysql命令行工具连接MySQL server进行操作,此时我们可以像shell命令行一样,按向上的方向键, mysql会给出我们最近执行的S ...

  9. 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码

    在练习mysql语句的时候,使用delete将数据库中的所有用户删除了,其中也包括root用户.并进行了flush privileges:这时候发现重新登入mysql已经不能正常登陆.对此我们要重新设 ...

最新文章

  1. JavaScript 表单与表单验证
  2. 职教云python题和答案_智慧职教云课堂Python程序设计题目答案
  3. Servlet实现的三种方法
  4. 高精度模板(含加减乘除四则运算)
  5. java中截取部分字符串_JAVA中截取字符串substring用法详解
  6. dev.c drv.c bus.c
  7. 实现一个 Java 版的 Redis (1)----百行代码解析Redis 协议.
  8. from表单requried属性效果
  9. java数据结构编程问题_Java语言程序设计与数据结构第十一版(基础篇)第一章编程练习题答案...
  10. 远程服务器桌面配置iis6,windows 2003服务器安装 IIS6.0和IIS自带FTP服务器图文教程...
  11. 男人至死是少年,我在GitHub找到了我们的童年经典
  12. 分区助手克隆linux,PartAssist 9.1+7.0 AOMEI 分区助手 免安装版 (简/繁/英 PE/Win 通用)...
  13. 3d打印英语文献_3D打印NiTi形状记忆合金管的扭转性能研究
  14. htcm7刷linux,htc one m7刷官方zip包的教程
  15. 这是一篇让你从早吃到晚的『台南美食攻略』
  16. python毕业设计作品基于django框架 校园二手书籍交易系统毕设成品(8)毕业设计论文模板
  17. 北京律师事务所名称大合集
  18. composer 安装配置下载时出现 [InvalidArgumentException] Could not find package等等问题解决方案
  19. 绩效管理学习之一、平衡记分卡BSC
  20. 游戏开发基础笔记:逻辑帧和物理帧辨析 | Gameloop | 游戏循环

热门文章

  1. oracle之基本的过滤和排序数据之课后练习
  2. 前端学习(1303):复制文件夹
  3. 第五十七期:小型企业将如何从5G中受益
  4. c语言编译生成cpp,C语言的编译过程
  5. Linux-在linux修改文件夹及其子文件夹的权限
  6. 正则仅输入文字字母空格,但必须含有字母
  7. Python-100 练习题 03 完全平方数
  8. zip转直链php,蓝奏网盘直链转换器
  9. ssh登录服务器提示错误no hostkey alg
  10. 再度吐槽,PHP在centos7的安装方式稍不注意可能就打击你的积极性