mysql集群

MySQL高可用架构之MHA

 ̄綄美尐妖づ 提交于 2019-11-27 11:30:17
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点) 。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。 在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制

MySQL高可用架构-MHA环境部署记录

微笑、不失礼 提交于 2019-11-27 11:29:47
一、MHA介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性。是一套优秀的作为MySQL高可用性 环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上 保证数据的一致性,以达到真正意义上的高可用。 MHA是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。 1)MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Manager会定时探测集群中的node节点,当发现master 出现故障的时候,它可以自动将具有最新数据的slave提升为新的master,然后将所有其它的slave导向新的master上.整个故障转移过程对应用程序是透明的。 2)MHA

[收藏]Memcached 集群架构方面的问题

纵饮孤独 提交于 2019-11-27 11:21:20
这里收集了经常被问到的关于memcached的问题 memcached是怎么工作的? memcached最大的优势是什么? memcached和MySQL的query cache相比,有什么优缺点? memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点? memcached的cache机制是怎样的? memcached如何实现冗余机制? memcached如何处理容错的? 如何将memcached中item批量导入导出? 但是我确实需要把memcached中的item都dump出来,确实需要把数据load到memcached中,怎么办? memcached是如何做身份验证的? 如何使用memcached的多线程是什么?如何使用它们? memcached能接受的key的最大长度是多少?(250bytes) memcached对item的过期时间有什么限制?(为什么有30天的限制?) memcached最大能存储多大的单个item?(1M byte) 为什么单个item的大小被限制在1M byte之内? 为了让memcached更有效地使用服务器的内存,可以在各个服务器上配置大小不等的缓存空间吗? 什么是binary协议?它值得关注吗? memcached是如何分配内存的?为什么不用malloc/free!?究竟为什么使用slab呢

MySQL主从复制(GTID模式)

眉间皱痕 提交于 2019-11-27 11:14:52
GTID复制原理: 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交的事务在集群中有一个唯一的ID. 在原来基于日志的复制中, 从库需要告知主库要从哪个偏移量进行增量同步, 如果指定错误会造成数据的遗漏, 从而造成数据的不一致. 而基于GTID的复制中, 从库会告知主库已经执行的事务的GTID的值, 然后主库会将所有未执行的事务的GTID的列表返回给从库. 并且可以保证同一个事务只在指定的从库执行一次. GTID是由server_uuid和事物id组成,格式为:GTID=server_uuid:transaction_id。server_uuid是在数据库启动过程中自动生成,每台机器的server-uuid不一样。uuid存放在数据目录的auto.conf文件中,而transaction_id就是事务提交时系统顺序分配的一个不会重复的序列号。 GTID的好处: (1)GTID使用master_auto_position=1代替了binlog和position号的主从复制搭建方式,相比binlog和position方式更容易搭建主从复制。 (2)GTID方便实现主从之间的failover,不用一步一步的去查找position和binlog文件。

MySQL数据库优化

落花浮王杯 提交于 2019-11-27 11:02:07
前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览图 2. 优化 笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置. 2.1 软优化 2.1.1 查询语句优化 1.首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息. 2.例: DESC SELECT * FROM `user` 显示: 其中会显示索引和查询数据读取数据条数等信息. 2.1.2 优化子查询 在MySQL中,尽量使用JOIN来代替子查询.因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高. 2.1.3 使用索引 索引是提高数据库查询速度最重要的方法之一,关于索引可以参高笔者<MySQL数据库索引>一文,介绍比较详细,此处记录使用索引的三大注意事项: LIKE关键字匹配'%'开头的字符串,不会使用索引. OR关键字的两个字段必须都是用了索引,该查询才会使用索引. 使用多列索引必须满足最左匹配. 2.1.4 分解表 对于字段较多的表,如果某些字段使用频率较低,此时应当

Mysql运维常用命令回顾整理

回眸只為那壹抹淺笑 提交于 2019-11-27 10:44:19
前景 Mysql作为开源数据库的中坚力量之一,虽然目前已被甲骨文收购,面临闭源风险,但是mysql扔是我们运维工作中最常面对的工作,那如何做好mysql运维工作,甚至做好mysql的基础运维,都是维稳业务持久层的关键,故本文收集相关资料整理MySQL运维工作常用的命令,以作记录,供日常运维时参考查证。 Mysql运维 MySQL运维工作常用命令和操作主要包括:对MySQL数据库状态的查看、性能的优化(连接数,存储,集群等),MySQL表及索引的检查、分析、修复、优化,MySQL数据库的导出导入、冷热备份等。 1、工具篇 常用工具: 1)myisampack:压缩MySQL的MyISAM表以产生更小的只读表的一个工具。myisampack可以压缩MyISAM表来解决空间占用过大的问题。myisampack分别压缩表中的每一列。通常,myisampack可以将数据文件压缩到40%-70%。当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。 2)mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本。它可作为MySQL的一个诊断工具,检查访问权限的主机名、用户名和数据库组合。其检查功能只访问user、db和host这3个表,而不检查在tables_priv、columns_priv或procs_priv表等信息; 3

MySQL 高可用之 MGR

雨燕双飞 提交于 2019-11-27 10:22:30
MGR整体架构及特点   single-master     只有一个节点写入,都可以读取   multi-master     每个节点都可以写入和读取   涉及到的概念:     group communication system (GCS)     writeset     membership     cerification info     flow control stats     paxos   MGR一致性读增强   group_replication_consistency (8.0.14引入)     EVENTUAL: 默认     BEFORE: 等待队列中的事务全部执行完     BEFORE_ON_PRIMARY_FAILOVER: 等待新primary执行完队列中事务     AFTER: 等待数据变更在其他所有节点全部被应用     BEFORE_AND_AFTER:   MGR限制     仅支持InnoDB,必须有主健     Binlog 格式: Row,关闭binlog checksum       必须开启GTID     事务隔离级别: READ COMMITTED (没有 gap lock)       大事务限制: group_replication_transaction_size_limit     Multi

大数据运维方向面试题

半世苍凉 提交于 2019-11-27 09:44:12
文章转载自: http://www.pythonheidong.com/blog/article/3038/ 一、基础题 1.请写出http和https请求的区别,并写出遇到过的响应状态码. 一、https协议需要到ca申请证书,一般免费证书很少,需要交费。 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 状态码常用: 301 永久重定向 403 服务器已经理解请求,但是拒绝执行 404 页面丢失 500 服务器错误 2.请写出在linux系统上面搭建系统或者产品等大数据平台需要对系统进行哪些检查。 从稳定性说:需要检查集群中的每一台服务器的命令安装是否完善,环境变量是否配置完毕,每一台服务器的软件配置是否有问题。 扩展性: 能够快速扩展机器,横向扩展条件是否具备 3.请写出使用过的linux系统有哪些版本,如何查看系统信息?(发行版本,内核版本等信息)。 Centos 6.5 6.6 x64 1.查看发行版本命令:cat /etc/issue 2.查看内核版本: cat /proc

MySQL高可用性分析

不羁岁月 提交于 2019-11-27 07:37:02
版权声明:本文由易固武原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/203 来源:腾云阁 https://www.qcloud.com/community MySQL数据库是目前开源应用最大的关系型数据库,有海量的应用将数据存储在MySQL数据库中。存储数据的安全性和可靠性是生产数据库的关注重点。本文分析了目前采用较多的保障MySQL可用性方案。 MySQL Replication MySQL Replication是MySQL官方提供的主从同步方案,用于将一个MySQL实例的数据,同步到另一个实例中。Replication为保证数据安全做了重要的保证,也是现在运用最广的MySQL容灾方案。Replication用两个或以上的实例搭建了MySQL主从复制集群,提供单点写入,多点读取的服务,实现了读的scale out。 图1. MySQL Replication主从复制集群 如图一所示,一个主实例(M),三个从实例(S),通过replication,Master生成event的binlog,然后发给slave,Slave将event写入relaylog,然后将其提交到自身数据库中,实现主从数据同步。对于数据库之上的业务层来说,基于MySQL的主从复制集群,单点写入Master

MySQL-主从复制 读写分离

自闭症网瘾萝莉.ら 提交于 2019-11-27 06:21:36
MySQL主从复制 读写分离 1. 复制解决的问题 数据分布:在不同的地理位置来分布数据备份。 负载均衡: 通过MySQL复制将读操作分布到多个服务器上,实现对密集型应用的优化。 备份 2. 复制的方式 MySQL支持两种复制方式 基于行的复制 基于语句的复制 这两种方式都是通过在主库上记录二进制日志,在从库重放日志的方式来实现异步的数据复制。 3.具体实现 binlog输出线程。每当有从库连接到主库的时候,主库都会创建一个线程然后发送binlog内容到从库。 在从库里,当复制开始的时候,从库就会创建两个线程进行处理: 从库I/O线程。当START SLAVE语句在从库开始执行之后,从库创建一个I/O线程,该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷贝这些更新到本地文件,其中包括relay log文件。 从库的SQL线程。从库创建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并执行。 可以知道,对于每一个主从复制的连接,都有三个线程。拥有多个从库的主库为每一个连接到主库的从库创建一个binlog输出线程,每一个从库都有它自己的I/O线程和SQL线程。 4.具体步骤 步骤一:主库db的更新事件(update、insert、delete)被写到binlog(数据库有个bin