谢邀,对个人指出从副标题看,是个较为大而且值得称赞资料库专业人士思索的难题;从难题叙述看,又是一个较为肤浅的难题。
先从难题叙述看,mysqldump存储和恢复正常时常常会有各式各样严重错误,怎样防止?mysqldump由于是方法论存储,预设在存储前夕会去检查和各式各样存储第一类的正当性,所以出现譬如表损毁,快照表述严重错误等难题,虽然可能将不影响资料库的总体运转,但是存储王肯堂不过。慎重且所推荐的作法是原都去根据收起处置,直至存储获得成功和一次单元测试正常获得成功年末,蛮横一点的作法是加–force强制忽视各式各样sql类别的收起,即使从理论上而言这些损毁或不不合法的资料库第一类,不存储也是能接受和认知的。从答主数十万示例的mysqldump存储失败情况分析来看,参照那个应该能化解99%的mysqldump失利
https://blog.csdn.net/cug_jiang126com/article/details/49359699
再从深度上来说,怎样典雅的存储和恢复正常mysql资料库?
存储方式的选择
从存储前夕与否迪容看,接口卡却是冷备,那个我指出现今的TK1运转的资料库系统基本不存在冷存储的情景了(假如是整个系统全部布季谢,恢复正常数据前可能将有必要性c
从存储文件的类别看,不论是方法论存储却是力学存储,都有其竞争优势和瑕疵,都有其不容辅助性,而常常方法论存储的竞争优势刚好是力学存储的瑕疵。事实证明方法论存储最大的竞争优势有三点
1 压缩算法率高(即使一般来说情况下会有不少index,或者碎块内部空间等,那个很占力学内部空间,而方法论存储出来的方法论sql就能很大程度地节省那块内部空间),那个在海量资料库情景下很重要,即使存储挤占的内部空间生产成本,上载生产成本也不容小视
2 存储灵巧,兼容性强。打个比方,当一个单机资料库想做分库分表时,数据迁移阶段必然会涉及到一次类似方法论存储,通过方法论存储导入分布式资料库环境中(即使不容能将通过传输力学存储文件到多个资料库节点)
以上2点也正是力学存储的劣势,而力学存储相对方法论存储而言的竞争优势也非常明显,存储速度快+恢复正常速度快,这三点可能将在绝大部分情景下更重要,所以现在主流的存储方式应该是力学存储,虽然方法论存储也存在一些多线程存储的开源工具比如mydumper,但存储速度一般来说却是不如力学存储。
当然,既然要典雅,在海量数据资料库存储系统中,我指出两种存储方式都应该支持,能灵活设置,针对不同的存储方式再开发不同的恢复正常方式。除此以外,还需要考虑
0 存储和恢复正常前夕对IO等系统资源消耗情况的把控,与否能做到限速?
1 怎样灵巧地设置存储策略,比如存储周期和存储时间点的选择,与否能在从库存储,存储上载到何处,选择什么压缩方式?
2 怎样确认存储与否获得成功,哪一步骤出了难题,哪些步骤失利能重试,哪些步骤失利不必重试?
3 怎样确认获得成功的存储实际可有效还原?
4 再细一些,mysql
5 再细一些,那个mysql示例与否开启了gtid,针对不同版本的mysql与否也需要有差异化对待?针对有无gtid等情景,存储和恢复正常策略其实也是有所不同的
……………..
所以说,对个人看来,要做到一个极致典雅的资料库存储和恢复系统其实很不容易,目前可能将也只有公有云才会针对各式各样各样可能将出现的情景和收起处置,将方方面面都考虑全了。
可参照大型存储系统设计https://blog.csdn.net/cug_jiang126com/article/details/54926678
