MySQL 5.7 缩小空间占用实践

某几个数据表越来越大,占用空间快达4T, 其中很多数据都是历史数据,可以被清空的数据。现在想要缩小空间,则需要:

  1. 删除表中的数据
  2. 重构表,因为删除数据并不会回收占用的空间,需要重构才行
  3. 删除和重构不能影响正式服务
  4. 重构的目的是为了缩小空间占用,但重构需要2倍的空间,但运服务器的空间扩大后,就无法缩小
  5. 不能直接在正式数据库进行操作

方案

  1. 搭建主从,使用Docker搭建
  2. 在从服务器上进行删除(需要写专门的删除逻辑)
  3. 在从服务器上,扩大硬盘大小至2倍,然后复制一份新表,把旧表删除,把新表重命名为旧表
  4. 从服务器上暂停同步,且停止数据库。添加一块容量为原硬盘大小一半的新的云盘,把数据从原硬盘使用rsync复制到新盘。这一步要特别注意,因为数据库特别大,使用rsync复制可能需要的时间非常长,我这边花了一天多的时间才复制完成。所以,主服务器上的binlog需要保存至少5天的时间,如果正式服务业务量比较大,存放binlog的硬盘需要有足够的容量。
  5. 把新盘做为mysql的盘,启动从服务,开始与主服务器进行数据同步,直到同步完成。
  6. 当同步完成后,在业务量很低的时间里,停止主服务器,对主数据盘做好快照,然后把从服务器上硬盘挂载的主服务器,让主服务器从这块新挂载的硬盘上启动
  7. 检查测试,确保数据和功能逻辑一切正常
  8. 释放主服务器老硬盘,完成缩容,释放空间的目的。

三个有启发的学习方法

首先是一个国外开发者的小故事。

他刚入行时,在一家小公司工作。公司只有很少几个工程师,但是每个都很强,了解很多技术,前端、后端、系统维护都能上手。

而且,他们的开发效率极高,别的公司可能花一两个月才能做出的东西,他们几天就能搞出来。不了解内情的客户,很以为他们是一个很大的技术团队,但是其实不到10个人。

有一次,这位开发者跟同事单独相处,忍不住就问了,你们的开发效率怎么这么高?

同事解释说,团队的骨干工程师在一起合作多年了,彼此都很了解。他们以前都为军方的情报部门工作,开发军事软件。

军方的计算机是不能连网的,他们的开发环境完全不能上网,所以干活很痛苦。如果他们想在网上查一些软件资料,必须步行到军营外面的另一栋大楼。因此,上网查资料变成了一项成本很高的操作。

他们被逼无奈,只能仔细通读软件手册,把所有重要的内容都做了笔记,尽量记住。久而久之,上网查资料的次数越来越少,知识积累在脑海里,开发效率就这样提高上去了。

这个小故事想讲的道理就是,看似最笨的学习方法—-笔记和记忆力—-偏偏造就了最高的开发效率。

现在写笔记的人并不多,愿意背诵的就更少了。网上搜索一下就有答案,为什么还要记录和背诵呢?但是别忘了,只有烂熟于心的东西,你才能真正做到运用自如、手到擒来。

更重要的是,互联网只提供查找知识的能力,不提供处理知识、提取结论的能力。当你需要分析、推理、判断的时候,脑海里记得的东西是最容易想到的。记得越深,就越容易投入应用、与新知识结合在一起。

这里的启示就是,笔记和记忆力远比我们认为的重要得多。它们不仅可以提高使用效率,还有助于将新知识集成进入我们现有的知识储备。

(二)

后面两个学习方法,都跟诺贝尔奖得主、传奇物理学家理查德·费曼有关。

大部分物理学家只精通自己的领域,但是费曼几乎涉及所有物理学领域,而且能够很通俗地进行科普,他的讲义《费曼物理学讲座》是物理学入门名著,社会知名度很高。

有一次,别人问费曼,如何才能获得新的科学发现?

费曼说:”如果没有对旧事物进行大量练习,你不太可能发现新事物。”

费曼的意思是,新的科学发现都建立在前人研究的基础上,你越熟悉以前的研究,就越可能做出新的发现。

同理,新技术也是建立在旧技术的基础上。如果你想找到新的解法,或者真正掌握一门新技术,首先就应该多了解现有的技术方案。

(三)

那个人又问费曼,你懂那么多物理学知识,你的学习秘诀究竟是什么?

费曼说:”要想多学,就必须能在学习中得到快乐。做到这一点的唯一方法,就是努力学习你最感兴趣的东西。

没有人有足够动力,长期学习自己不喜欢的东西。如果你不喜欢某个领域,就不可能不断投入时间钻研,也就不可能做到精通。

费曼就是在告诉我们,如果可以选择,一定要学习自己喜欢的东西,否则你不仅很可能失败,也许还会抑郁。

向毛泽东学开会

开会必须解决问题,必须有实效,而不能只走形式。

1960年3月,毛泽东主持召开华东区各省省委书记会议,讨论农业生产问题等。在毛泽东看来,党委对该做的工作一定要“抓紧”。“什么东西只有抓得很紧,毫不放松,才能抓住。抓而不紧,等于不抓。伸着巴掌,当然什么也抓不住。就是把手握起来,但是不握紧,样子像抓,还是抓不住东西。我们有些同志,也抓主要工作,但是抓而不紧,所以工作还是不能做好。不抓不行,抓而不紧也不行。”毛泽东自己“看准的事情,一旦下决心要抓,就抓得很紧很紧,一抓到底,从不虎头蛇尾,从不走过场”。

怎样抓得紧呢?工作布置下去,不能认为就完成了。毛泽东说:“全面规划,几次检查,年终评比,这是三个重要方法。”其中,“打电报、打电话、出去巡视这些方法,也是很重要的领导方法”;“一年至少检查四次”。通过检查,督促进展,修正错误。 1948年2月,他在谈到工商业政策的时候说:“必须随时掌握工作进程,交流经验,纠正错误,不要等数月、半年以至一年后,才开总结会,算总账,总的纠正。这样损失太大,而随时纠正,损失较少。……随时提醒下面,使之少犯错误。这都是领导方法问题。”也就是说,无论干什么工作,都要干到底,不见成效决不罢休。

发扬民主和“抓紧”工作的一个重要内容,就是开好各种会议。党委会行使职责的一个重要形式就是开会。党的各级机构和各种组织,“都必须建立健全的党委会议制度,一切重要问题(当然不是无关重要的小问题或者已经会议讨论解决只待执行的问题)均须交委员会讨论,由到会委员充分发表意见,做出明确决定,然后分别执行。地委、旅委以下的党委亦应如此。高级领导机关的部(例如宣传部、组织部)、委(例如工委、妇委、青委)、校(例如党校)、室(例如研究室),亦应有领导分子的集体会议”。日常工作中,“有了问题就开会,摆到桌面上来讨论,规定它几条,问题就解决了”。

开会要事先通知,像出安民告示一样,让大家知道要讨论什么问题,解决什么问题,并且早作准备。“在会议之前,对于复杂的和有分歧意见的重要问题,又须有个人商谈,使委员们有思想准备,以免会议决定流于形式或不能做出决定。”有些地方开干部会,事前不准备好报告和决议草案,等开会的人到了才临时凑合,“兵马已到,粮草未备”,这是不好的。开会的方法应当是材料和观点的统一。如果没有准备,就不要急于开会。

  开会时,不要照本宣科,要充分发挥参会人员的作用。先把报告草稿发下去,请到会的人提意见,加以修改,然后再作报告。报告的时候不是照着本子念,而是讲一些补充意见,作一些解释。这样,就更能充分地发扬民主,集中各方面的智慧,对各种不同的看法有所比较,会也开得活泼一些。

每次会议时间不可太长,会议次数不可太频繁,不可沉溺于细小问题的讨论,以免妨碍工作。此间,讲话、演说和写决议案,都应当简明扼要。“凡是看不懂的文件,禁止拿出来。”“每次会有一个主题,其他问题也吹一下。开会的时候吹吹闲话,引起兴趣,接触问题。”

  党的委员会须分别为常委会和全体会两种,不可混在一起。同时,要大型、中型和小型会议相结合。这三种会议一般指的是群众大会、干部大会和领导班子会,把工作干好就得学会开这些会。“小型会议最好商量问题,我对小型会议很有兴趣,时间不长,就地召开,这种形式最好。”

  党的决策要开会,政策的执行也要开会,开会是一种日常的基本的工作方法。毛泽东之所以不厌其详地讲如何开会,主要是让人明白,开会必须解决问题,必须有实效,而不能只走形式。在实际工作中,既要反对决策时把党委会变成一言堂,更要反对执行时以会议落实会议。其最大的功效就是能够把内部充分动员起来,为一个明确的目标而奋斗。