多地mysql 相互同步问题
各位大大新年好,小弟最近整一个项目, 有点做成类似的垂直搜索, 逻辑简单, 根据某个主键id或者索引搜索即可.
目前遇到2个问题:
一. 服务器用到是日本的aws, 但是目前想弄成多地的服务器, 打算在俄罗斯, 日本, 巴西等各放一个服务器, 需要同步的数据主要是会员表, 比如有用户在俄罗斯注册了, 如何同步到其他的两个服务器上呢, 普通的主从同步貌似延迟太大, 两地几乎同时注册会导致主键id冲突, 不知道各位有什么好的解决方案推荐呢,
二, 有张5k万的表(16G), 目前搜索都是根据某个主键id或者索引搜索, 在本地测试过7kw数据, 速度保持在0.3秒左右. 最大的问题是数据的更新, 几天就要更新一次, 而且是全表更新(除了表里的两个计数器字段), 之前的做法是, 导出来, 用程序把sql修改成insert 多条 on dumplcate update的方式, 然后打包上传至服务器,在用程序导入.这样的风险是偶尔会导致mysql导入过快,导致目前的主从数据库同步出现问题(卡死).
目前能想到的方案是,
a, 把表里的两个字段为计数器拿出来,做成另外的一张表, 然后原来的大表就成了只读表A, 导入的时候, 直接insert到一个新的表B, 导入完成后,sql直接切换表名, 让新表B代替A表.然后旧表就可以干掉了.
b, 把表里的两个字段为计数器拿出来,做成另外的一张表, 本地与线上的mysql安装同一个版本, 然后直接本地打包mysql的数据文件(MYD, MYI, TRG, frm等),在服务器的mysql的数据目录下解压(mysql不停止的情况下), 最后类似于a方法那样切换表名. 不知道改方法可行不 (此方法本人大胆YY出来的, 大大轻拍啊.)
小弟入行很浅, mysql按着教程配个主从还可以, 遇到这种真心不知道有什么好的解决方案, 希望各位大大不吝赐教啊.