首先要知道这是一个olap还是一个oltp。
是前者的话,数据再大一倍也无妨,毕竟数据的抽取方式要变化,甚至手工作业也能满足;
如果是后者,并且业务很复杂,那做的工作可要多了,先说数据的迁移,数据库中的各种对象(比如函数和过程的改写),再说大一点的查询,分库分表要考虑进来(分区不建议考虑,MySQL的分区表处处受限)。
MySQL高可用架构可以参考MHA/PXC/MGR,根据自己的实际需要进行选择
数据安全性方面考虑增强半同步
数据库版本建议8.0以上
MySQL 单实例承担20TB的数据量不是不可以,只不过负担太重了,你需要考虑的有以下几个方面:
1、单实例TPS/QPS限制
2、备份、恢复的影响
3、磁盘容量的规划
4、锁争用、单实例连接数等等
如果全部迁移到MySQL,建议
1、先垂直拆分,由多个集群承担对应的业务
2、水平拆分,确定分片键,需要多少分片承担压力(单表建议不要超过500w,单实例不要超过500张,单实例数据总容量不要超过1T)
3、由多个从库承担读压力(需要考虑延迟,交易类型一律走主库)
有了高可用,有了拆分,那么还需要中间访问层,目前比较好的开源proxy有
1、简单读写分离的:ProxySQL、DBLE、Cetus等
2、具备分库分表的:DBLE、Cetus、vitness等
以上只是简单的一点看法
收起首先需要明确 ORACLE 20TB !=# MYSQL 20T
其次 MSYQL 替换ORACLE 首先需要探讨可行性
还有就是如果使用 MSYQL对于这么大的量需要考虑的一点是冷热数据 这不是单出的分库分表就能解决的 需要根据事情去探讨