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

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

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

56fe4dd061a05529e5ac98cafc95b98d.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【编辑推荐】

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

点赞 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WhqDatabase 我自己用C#开发的列式数据库

项目地址:https://github.com/wanghongqi/WhqDatabase WhqDatabase 作者:王洪岐 本项目为一个C#实现的列式数据库,欢迎大家提出指正意见。项目中包含对Kernel完整的测试。 项目列表:Kernel 内核Test 对内核的测试Service 可视的…

自定义安装mysql linux_linux下 安装mysql 问题

展开全部因为32313133353236313431303231363533e4b893e5b19e31333365633934mysql程序在启动的时候 非常依赖my.cnf里面的配置,而my.cnf文件中的配置,在执行mysql初始化的时候就可以手动指定。如果mysql不是使用yum安装,而是将mysql安装到自定…

js中斜杠转义

js中“/”不需要转义。 if(myPath.indexOf("/Upload/EmailFile/")!-1){ alert("有附件!")}转载于:https://www.cnblogs.com/Tpf386/p/6282773.html

SVN强制解锁操作

如果是其他人锁定文件,而你期望对此文件操作,可进行偷锁操作。 1,将被锁定文件SVN Check out…到本机硬盘。 2,点击文件右键,选择get lock, 3,勾上steal the locks 4,之后再进行Release Lock操作…

前端学习(2244):计算器显示问题

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>奥里给&#xff01;</title><style type"text/css">.a {height: 100px;width: 450px;border: 3px solid black;background-color: beige;font-size…

MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源&#xff0c;已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色&#xff0c;但所谓“好马配好鞍”&#xff0c;如何能够更好的使用它&#xff0c;已经成为开发工程师的必修课&#xff0c;我们经常会从职位描述上看到诸…

C语言沉浸式刷题【C语言必刷题】

1.猜凶手 某地发生了一起谋杀案&#xff0c;警察通过排查确定杀人凶手必为四个嫌疑犯的一个&#xff0c;以下是4个嫌犯的供词。已知&#xff08;请编写代码找出凶手&#xff09; A说&#xff1a;不是我。 B说&#xff1a;是C。C说&#xff1a;是D。D说&#xff1a;C再胡说。 程…

C#操作IIS6创建网站应用程序无效

创建网站root目录时执行AppCreate即可DirectoryEntry vdEntry newSiteEntry.Children.Add("root", "IIsWebVirtualDir");vdEntry.Invoke("AppCreate", true);vdEntry.CommitChanges();

python 代码排布_python实现经典排序算法的示例代码

以下排序算法最终结果都默认为升序排列&#xff0c;实现简单&#xff0c;没有考虑特殊情况&#xff0c;实现仅表达了算法的基本思想。冒泡排序内层循环中相邻的元素被依次比较&#xff0c;内层循环第一次结束后会将最大的元素移到序列最右边&#xff0c;第二次结束后会将次大的…

如何减小内存碎片

内存碎片 &#xff1a; 内部碎片&#xff08;占了不用&#xff09; 内部碎片就是已经被分配出去&#xff08;能明确指出属于哪个进程&#xff09;却不能被利用的内存空间&#xff1b;内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而…

python 英语翻译 excel_python批量将excel内容进行翻译写入功能

由于小编初来乍到&#xff0c;有很多地方不是很到位&#xff0c;还请见谅&#xff0c;但是很实用的哦&#xff01;1.首先是需要进行文件的读写操作&#xff0c;需要获取文件路径&#xff0c;方式使用os.listdir(路径)进行批量查找文件。file_path ‘/home/xx/xx/xx# ret 返回一…

bison实例

逆波兰记号计算器【文件名rpcalc.y】%{ #define YYSTYPE double #include <stdio.h> #include <math.h> #include <ctype.h> int yylex (void); void yyerror (char const *); %}%token NUM%% input: /* empty */| input line;line: \n| exp \n …

InstallShield LaunchAppAndWait运行另一个程序并等待该程序终止。

LaunchAppAndWait语法&#xff1a;LaunchAppAndWait (szProgram, szCmdLine, lWait);说明&#xff1a;LaunchAppAndWait函数运行由szProgram指定的带有szCmdLine指定的命令行参数的应用程序。第三个参数&#xff0c;lWait指示安装在继续前是否要等待直到运行的应用程序终止。 …

python3 while循环语句_python While 循环语句

python While 循环语句发布时间&#xff1a;2018-02-12 16:46:28编辑&#xff1a;admin阅读(2055)python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。其基本形式为&#xff1a;while 判…

笔记:Zygote和SystemServer进程启动过程

简述 Android设备启动过程中&#xff0c;先是Linux内核加载完&#xff0c;接着Android中的第一个进程init启动&#xff0c;它会启动一些需要开机启动的进程。 Zygote就是进程init启动起来的。Android中所有应用程序进程&#xff0c;以及运行系统关键服务的System进程都是由Zygo…