我给领导提建议,真实经验心得分享!mysql-mster-slave-锁表问题!

原因:前一段时间一直给领导反映,数据库虽然一个小时备份一次,但是仍然很危险,要是mysql服务器突然宕机,或者磁盘出现故障,不仅mysql站点会受到很大的威胁,而且即使恢复数据库也需要十多分钟的时间,造成网站会无法访问因此。强烈建议做一个slave;最终,领导听取了我的意见。(虽然公司800人左右,但是服务器并没那么多,算是小企业)

做slave的好处

1)当前数据库一个小时备份一次,而且异地本地。二进制日志是开启的。所以当mysql服务器不出现问题的时候,一切都好说。出了事情,坏事。。。

2)做slave,那样就算主服务器出现什么意外,也可以快速切换到从服务器,减少了网站不能运行的时间。

3)slave的备份间隔和master服务器间隔相差半小时,那样进一步减少了数据丢失的风险,虽然公司并发并不大。

4)做了slave之后,slave也有自己的二进制日志,那样半个小时的数据风险算是可以补救了。(只要两台别同时出现故障)

当方案什么都提交之后,问题来了,领导想让从新在两台服务器上做主从,那样就算master和slave环境搭建好之后,领导担心短时间内会影响业务,也影响网站的运行

(在导入数据库需要时间,如果停止mysql服务,那么网站不能正常运行,如果不停止网站,那么短时间内会有稍微的数据不一样,万一数据库进行了写操作呢?毕竟网站不能正常运行,算是大事了)

行吧,我给了个意见,不停止当前数据库,而是当主从服务器环境搭建好,就差导入数据的时候,先对现在的服务器进行锁表,禁止写操作,然后等master和slave数据同步,且master数据完全导入,然后切换数据库。(并且在下班时间,晚上10点以后操作)

方案通过!!!

上面的命令意思是,全局锁表,所有表都不可写,

下面是解锁。

再执行下锁表。

进行一个写操作

报错说,表已经被锁,只读,不可以写。

然后解锁,再进行操作!

ok!!!

给大家分享点锁表的知识。

1.FLUSH TABLES WITH READ LOCK

 这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。

 解锁的语句也是unlock tables。

 

2.LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

 这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock  tables test read; 不影响其他表的写操作。

解锁语句也是unlock tables。

这两个语句在执行的时候都需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话。

 

P.S.  MYSQL的read lock和wirte lock

read-lock:  允许其他并发的读请求,但阻塞写请求,即可以同时读,但不允许任何写。也叫共享锁

write-lock: 不允许其他并发的读和写请求,是排他的(exclusive)。也叫独占锁

然后我又想到了一个小问题。如果有多个数据库,那么对应不同的网站,如果全局锁表就不好了。但是呢,要是一个个锁表,亲,那么多,怎么锁啊!这里给大家提出一个小小问题,欢迎解答!




如果你觉得这篇文档对你有帮助,那就点个赞吧!希望写更好的文章和大家分享!

时间: 2024-10-23 18:37:56

我给领导提建议,真实经验心得分享!mysql-mster-slave-锁表问题!的相关文章

实习以来 唯一一次 没有因需求变更 代码被改面目全非的一次(期待各位对代码细节提提建议)

according the source and template to genetate bulk file.(there is four type diff source and template now.) 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Ric.Core; 6 using System.ComponentModel;

分享MYSQL中的各种高可用技术(源自姜承尧大牛)

图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各个技术的比较 数据库的可靠指的是数据可靠 数据库可用指的是数据库服务可用 可靠的是数据:例如工商银行,数据不能丢失 可用的是服务:服务器不能宕机 灵活运用MYSQL的各种高可用技术来达到下面各种级别的高可用要求 要达到99.9%:使用MYSQL复制技术 要达到99.99%:使用MYSQL NDB 集群和虚拟化技术 要达到99.999%:使用share

.net之工作流工程展示及代码分享(一)工作流表单

Workflow表单的作用是能够在客户端进行表单设计,然后在流程中动态开放哪些输入框可以供用户填写. 在这里我扩展了一个常用的WebEditor工具——KindEditor,能够插入自定义的html符号,如下图: Form类如下: 1 public delegate string SetAutoCompleteValue(string autoCompleteType); 2 3 [Serializable] 4 public class Form 5 { 6 [XmlAttribute] 7

经典分享MySQL的limit查询优化

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 以下的文章主要是对MySQL limit查询优化的具体内容的介绍,我们大家都知道MySQL数据库的优化是相当重要的.其他最为常用也是最为需要优化的就是limit.MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降. 同样是取10条数据     

MYSQL千万级数据表,创建表及字段扩展的几条建议

MYSQL千万级数据表,创建表及字段扩展的几条建议 一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及字段扩展,这几个方面来给出建议. 二:创建表 假如现在我们需要创建IM项目中的聊天消息表,这个表数据量大,读操作远超过写操作,我们都知道,mysql常用的数据库引擎主要有innodb,myisam,这两个数据库引擎主要区别是,innodb支持事务,

吃伟哥、看A片也没反应的肾虚、阳痿早泄终于好了!粗长强硬!真实经历分享,男同胞必看!

真实讲述:14年肾虚阳痿早泄史,本来已经不抱希望,却没想到能在两个月里彻底根治!以前看到"阳痿早泄"这种字眼,我都低着头走,因为那是我心头的痛!现在我终于有自信谈论这个话题!跟大家分享一下我雄起的过程! 说一下我之前的情况,我13岁就开始混录像厅,从那时候起就有手淫的习惯,这么多年下来一直戒不掉,加上熬夜.抽烟,婚后压力大,身体明显一天不如一天,肾虚早泄,每次带客户去桑拿,客户都是半小时左右,我最多3分钟完事,同样是男人,差距咋这么大啊?我还不到40岁,就经常腰酸.出虚汗.尿急尿频,整

迅为IMX6开发板真实产品案例分享-专为研发用芯选择

迅为IMX6开发板: Android4.4系统 Linux + Qt5.7系统 Ubuntu12.04系统 部分真实案例:HMI:3D打印机:医疗设备:工控机:触控一体机:车载终端 核心板兼容:IMX6Q商业级.IMX6Q工业级.IMX6Q-PLUS.IMX6DL版本 板载:4G全网通.GPS.千兆以太网.WIFI蓝牙.CAN总线.RS485总线.EIM总线模块 光盘资料:原理图(PDF格式).底板PCB(Allegro格式).驱动程序源码.芯片和LCD数据手册.开发环境.产品使用手册 网盘资料

《小白必备》×××项目真实经验分享

在互联网上,我们可以搜索到许多的资料和经验分享,进行整理之后再慢慢吸收就成了你自己的知识,世界上没有一个项目是你马上做了就有收益,有能月入多少,不要把×××想成一夜暴富的门路,这是一个行业,要想做好,就必须付出时间去学习,付出精力去实战.赚钱靠思维,社会太浮躁,大多数人不愿意去学习思考,纵向找一个能直接上手就能赚钱的白痴项目,可能吗?这里就分享一些×××经验希望对看到文章的您有帮助. 项目选择: 项目,什么叫项目,说的高大上一点就是创业,说的通俗一点就是要做什么事情?在选择项目时,首先要明白你的

购物车程序--欢迎大神提建议

# 配套程序,需要创建一个锁文件lock.txt,记录用户名密码的文件shopping_pw.txtuserSaveMoney = 0 # 定义全局变量,用户起始账户余额为0def Recharge(): # 充值函数 global userSaveMoney userInputMoney = int(input("请输入您要存入的金额:")) userSaveMoney += userInputMoney print("您充入的金额为:%d"%userSaveMo