开发者社区> 像教授> 正文

MySQL多IDC部署注意事项

简介:
+关注继续查看

目前暂时还没有哪款数据库产品是专门针对跨IDC进行的优化,在理论上被业界认为最优的方案是采用基于Paxos协议(暂时只有google做出了实现,google f1),今天只讨论MySQL在这方面的注意事项:

对于跨IDC的情况基本都会设计到以下问题:

1MySQL多IDC的数据同步,数据一致性

2、多IDC之间的高可用

3、多IDC的多点写入问题
 
4、运维监控

对于MySQL多IDC数据之间的同步问题:

1MySQL的复制是异步的(对于5.5的半同步来说,还是属于“异步的”),MySQL同步依赖的因素很多,同步的网络环境,硬件配置,SQL语句是否高效,以及数据量的大小。

     在数据量较大的情况下在masterslave端启用slave-compressed-protocol = 1压缩模式,网络环境采用专线。可以利用blackhole存储引擎的MySQL作为relay server实现级联复制,这个最好控制在三层内,减少同步的延迟,减少机房之间传输的数据量。关于SQL语句,索引不要太多,影响插入速度,注意更新和删除的问题,如果采用row模式进行复制,数据量是个问题,建议采用mixed模式进行复制。对于实时性要求较高的应用可以允许第一次读的时候从主库上读取。或者在应用端给出等待时间来缓解同步延迟对用户的影响。

2、对于多IDC中的高可用问题。

     对于采用relay server的方式,可以采用两台server,每隔relay下面都是一个slave集群。当某个出现问题的时候,可以只访问另一个slave集群。

     对于采用双主模式的情况下,这个容灾方式比较明显,每个master下都接一个slave集群。但对于多IDC部署的话缺点也很明显,只能使用两个IDC
 
3、多点写入问题

      双主复制,环状复制,通过federated引擎都可以实现多点写入。这个时候对于多点写入需要考虑自增问题,可通过auto_increment_increment=N(增量值,且N是节点数)auto_increment_offset=1,2,3,。。。N (初始值)来解决。更新丢失问题。每个master只写本地数据,slave拥有全部数据,这个时候数据是以一定次序出现的。利用消息队列,数据写入本地数据库时也写入消息队列中(本人为涉及到)

4、运维监控问题

     监控系统对整个维护过程中起着很重要的作用。为防止在多IDC之间网络环境的影响,最好采用分布式监控,并且每个IDC的监控系统都能独立工作,可以参考zabbix,ganglia(两个开源企业级监控系统)






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/979672,如需转载请自行联系原作者

         

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19672 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14669 0
mysql导数据及注意事项
导出表test mysql> use db1; Database changed mysql> select count(*) from test; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.
993 0
search_path在PostgreSQL函数开发中的注意事项
背景 PostgreSQL 与大多数数据库一样,通过schema,逻辑上划分对象的归属,如图。 用户还可以参考《PostgreSQL 逻辑结构 和 权限体系 介绍》https://yq.aliyun.com/articles/41210 因为有了schema的概念,在访问数据库中的对象
4018 0
mysql索引使用注意事项
1.索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。
645 0
+关注
1338
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载