MySQL多IDC部署的注意事项

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

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

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

2、多IDC之间的高可用

3、多IDC的多点写入问题

4、运维监控

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

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

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

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

本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

对于采用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(两个开源企业级监控系统)

时间: 2024-10-31 13:46:15

MySQL多IDC部署的注意事项的相关文章

使用MySQL数据库的23个注意事项

使用MySQL,安全问题不能不注意.以下是MySQL提示的23个注意事项: 1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信. 2.用set password语句来修改用户的密码,三个步骤,先"mysql -u root"登陆数据库系统,然后"mysql> update mysql.user set password=password('newpwd')",最后执行"flush privilege

将数据从MySQL迁移到Oracle的注意事项

将数据从MySQL迁移到Oracle的注意事项 1.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段. CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; INSERT 语句插入这个字段值为: 序列号的名

《Exchange Server 2013 SP1管理实践》——第1章 Exchange部署之前注意事项1.1 项目网络规划

第1章 Exchange部署之前注意事项 1.1 项目网络规划 Exchange Server 2013 SP1管理实践内部网络测试用的计算机包括服务器和客户端计算机两部分,读者可以根据自己的测试环境有选择地部署计算机. 1.1.1 服务器规划1.内部网络规划内部网络(内网域名为book.local,公网域名为book.com)部署5台服务器和多台客户端计算机,所有服务器部署在Hyper-V环境中. 内部网络部署以下功能的服务器. 域控制器(DC)1台.安装Windows Server 2003

MySQL多实例部署案例

昨天晚上在群中和一些网友聊到了MySQL多实例的话题,最早接触MySQL多实例还是在1年前,那会我刚步入运维行业,做过MySQL多实例的相关实验,在后来的工作中也很少用到多实例,一直就淡漠了它,昨天再次提及,故此再次重新整理下以前的笔记,参考一些大牛的观点,也参考我的好友贺总(尊称)的意见,特此写下这篇文章!废话不说,切入正题.... 在同一台物理服务器上部署多个实例,而多实例的部署方式简单,但是如何才能减少我们生产环境的维护成本,如何减少我们出错的机会,如何方便我们后续的迁移和清理等工作,以及

CentOS6.3下GitLab+Nginx(SSL)+MySQL+Ruby安装部署

Gitlab是一个用Ruby on Rails开发的开源项目管理程序.可以通过WEB界面进行访问公开的或者私人项目. 它和Github有类似的功能,能够浏览源代码,管理缺陷和注释. 本文选择NGINX与MYSQL来配合GitLab实现web管理,数据存储等功能,配置过程中难点基本在GitLab的脚本修改,SSH秘钥连接,Nginx SSL证书等这些方面,作者也是耗费非常大的力气,结合很多文档的clue以及很多老外的debug comment,终于最终完成,希望在此给大家一个抛砖引玉的机会,了解到

MySQL主从同步部署总结

操作环境 主:192.168.1.124 从:192.168.1.125 mysql-5.0.56.tar.gz .centos5.2 数据库1:/data/3306/  数据库2:/data/3307/ 1.修改主库my.cnf ============================ # vi /etc/my.cnf server-id = 1 log-bin ============================ 2.重启主库生效 ======================= #/da

MySQL关于exists函数使用注意事项

exists语法 SELECT c.CustomerId, CompanyName   FROM Customers c   WHERE EXISTS(    SELECT OrderID FROM Orders o    WHERE o.CustomerID = cu.CustomerID)   这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?

【Mysql 学习】Linux RPM 注意事项

在Linux上安装MySQL推荐的方法是使用一个RPM文件.MySQL RPM目前是在一个 RedHat 5.2 系统上建立的,但是应该能工作在支持rpm且使用glibc的其他 Linux 版本上. 如果一个RPM文件有问题,例如Sorry, the host 'xxxx' could not be looked up,   你可能要使用的RPM文件有:  1 MySQL-VERSION.i386.rpm MySQL服务器.除非你只是想要与运行在其他机器上MySQL 服务器连接,否则你将需要它.

MySQL数据库的23个注意事项_Mysql

1.如果客户端和服务器端的连接需要跨越并通过不可信任的网络,那么就需要使用SSH隧道来加密该连接的通信. 2.用set password语句来修改用户的密码,三个步骤,先"mysql -u root"登陆数据库系统,然后"mysql> update mysql.user set password=password('newpwd')",最后执行"flush privileges"就可以了. 3.需要提防的攻击有,防偷听.篡改.回放.拒绝服务