摘要
学习复制的基础知识,包括二进制日志和MySQL Replicant库的使用通过冗余处理失效组件横向扩展以管理读负载的增加,使用数据分片处理大型数据库和写负载的增加使用MySQL集群在单个节点上存储并复制数据监控数据库活动和性能,以及重要的操作系统参数跟踪master和slave,处理它们的故障、重启、崩溃及其他事故检查工具,包括MySQL企业监控器、MySQL实用工具、GTID等
高可用MySQL(第2版) 作者:[美] Charles Bell(查理斯·贝尔),Mats Kindahl(迈茨·肯德尔),Lars Thalmann(拉尔斯·塞尔曼)
高可用MySQL(第2版) 出版社:电子工业出版社
高可用MySQL(第2版) 内容简介
《高可用MySQL(第2版)》主要讲解真实环境下如何使用MySQL的复制、集群和监控特性,揭示MySQL可靠性和高可用性的方方面面。《高可用MySQL(第2版)》定位于解决MySQL数据库的常见应用瓶颈,在保持MySQL持续可用性的前提下,挖潜各种提高性能的解决方案。《高可用MySQL(第2版)》描述了很多MySQL工具的变化,涵盖了5.5版本的知识,以及若干5.6版本的功能。《高可用MySQL(第2版)》的作者正是书中介绍的很多工具的设计师,《高可用MySQL(第2版)》揭示了MySQL可靠性和高可用性的许多不为人知的方面。
《高可用MySQL(第2版)》适用于MySQL数据库管理员及MySQL应用开发者。对于相关专业的师生,也有很高的参考价值。
高可用MySQL(第2版) 目录
译者序
第2版序
第1版序
前言
第1部分 高可用性和可扩展性
第1章 引言
到底什么是复制
那么,是否需要备份
什么是监控
其他阅读材料
小结
第2章 MySQL Replicant库
基本类和函数
对各种操作系统的支持
服务器
服务器角色
小结
第3章 MySQL复制原理
复制的基本步骤
配置master
配置slave
连接master和slave
二进制日志简介
二进制日志记录了什么
观察复制的动作
二进制日志的结构和内容
建立新slave
克隆master
克隆slave
克隆操作的脚本
执行常见的复制任务
报表
小结
第4章 二进制日志
二进制日志的结构
binlog事件的结构
事件校验
将语句写入日志
写入DML语句
写入DDL语句
写入查询
LOAD DATA INFILE语句
二进制日志过滤器
触发器、事件和存储例程
存储过程
存储函数
事件
特殊结构
非事务型变更和错误处理
将事务写入日志
使用XA进行分布式事务处理
二进制日志的组提交
基于行的复制
启用基于行的复制
使用混合模式
二进制日志管理
二进制日志和系统崩溃安全
binlog文件轮换
事故
清除binlog文件
mysqlbinlog实用工具
基本用法
解释事件
二进制日志的选项和变量
基于行的复制参数
小结
第5章 面向高可用性的复制
冗余
计划
slave故障
master故障
relay故障
灾难恢复
方法
热备份
双主结构
提升slave
环形复制
小结
第6章 面向横向扩展的MySQL复制
横向扩展读操作,而不是写操作
异步复制的价值
管理复制拓扑
应用层的负载均衡
级联复制
配置relay
使用Python添加relay
专用slave
过滤复制事件
使用过滤将事件分配给slave
数据的一致性管理
非级联部署的一致性
级联部署的一致性
小结
第7章 数据分片
什么是数据分片
为什么要分片
分片的局限性
分片方案的要素
高级分片架构
数据分区
分配分片
映射分片关键字
分片方案
分片映射函数
处理查询和事务调度
处理事务
分配查询
分片管理
将分片迁移到其他节点
分割分片
小结
第8章 深入复制
复制架构基础
中继日志的结构
复制线程
启动和停止slave线程
通过Internet运行复制
使用内置支持建立安全复制
使用Stunnel建立安全复制
细粒度控制复制
关于复制状态的信息
处理断开连接的选项
slave如何处理事件
管理I/O线程
SQL线程的处理
半同步复制
配置半同步复制
监控半同步复制
全局事务标识符
使用GTID配置复制
使用GTID进行故障转移
使用GTID提升slave
GTID的复制
slave的安全和恢复
同步、事务以及数据库崩溃问题
事务型复制
保护非事务型语句的规则
多源复制
基于行的复制的细节
Table_map事件
行事件的结构
行事件的执行
事件和触发器
基于行的复制中的过滤
部分行复制
小结
第9章 MySQL集群
什么是MySQL集群
术语和组件
MySQL集群和MySQL有何不同
典型配置
MySQL集群的特点
本地和全局冗余
日志处理
冗余和分布式数据
MySQL集群的架构
如何存储数据
分区
事务管理
联机操作
配置实例
入门
启动MySQL集群
测试集群
关闭集群
获得高可用性
系统恢复
节点恢复
复制
获得高性能
高性能的注意事项
高性能的最佳实践
小结
第2部分 监控和管理
第10章 监控入门
监控方法
监控的好处
监控系统组件
处理器
内存
磁盘
网络子系统
监控方案
Linux和UNIX监控
进程活动
内存利用率
磁盘利用率
网络活动
常见系统统计信息
使用cron自动监控
Mac OS X 监控
System Profiler
控制台
Activity Monitor
Microsoft Windows监控
Windows体验
系统健康报告
事件查看器
可靠性监视器
任务管理器
性能监视器
预防性维护监控
小结
第11章 监控MySQL
什么是性能
MySQL服务器监控
如何显示MySQL性能
性能监控
SQL命令
mysqladmin实用工具
MySQL工作台
第三方工具
MySQL基准测试套件
服务器日志
性能模式
概念
入门
使用性能模式诊断性能问题
MySQL的监控分类
数据库性能
衡量数据库的性能
数据库优化的最佳实践
提高性能的最佳实践
一切都很慢
查询慢
应用慢
复制慢
小结
第12章 监控存储引擎
InnoDB
使用SHOW ENGINE命令
使用InnoDB监视器
监控日志文件
监控缓冲池
监控表空间
使用INFORMATION_SCHEMA表
使用PERFORMANCE_SCHEMA表
其他需要考虑的参数
InnoDB故障排除的技巧
MyISAM
优化磁盘存储
修复表
使用MyISAM实用工具
按索引顺序存储表
压缩表
对数据表进行碎片整理
监控key cache
预加载key cache
使用多个key cache
其他需要考虑的参数
小结
第13章 监控复制
入门
服务器设置
包容性和排他性复制
复制线程
监控master
master的监控命令
master的状态变量
监控slave
slave的监控命令
slave的状态变量
使用MySQL工作台监控复制
其他需要考虑的问题
网络
监控和管理slave滞后
slave滞后的原因和预防措施
使用GTID
小结
第14章 复制的故障排除
哪里出错了
master上的问题
master崩溃及Memory表被占用
master崩溃及二进制日志事件丢失
master上查询正常但在slave上出错
崩溃之后表损坏
master上的二进制日志损坏
杀死非事务型表上长时间运行的查询
不安全的语句
slave上的问题
slave服务器崩溃及复制无法启动
slave连接超时及反复重新连接
slave上的查询结果与master上的不同
当尝试重启SSL时slave出错
内存表数据丢失
slave崩溃后临时表丢失
slave运行慢而且与master不同步
slave崩溃后数据丢失
崩溃后表损坏
slave上中继日志损坏
slave重启时的多个错误
slave上事务失败的后果
I/O线程的问题
SQL线程的问题:不一致
slave上的错误不一样
高级复制问题
变更没有在拓扑中复制
环形复制的问题
多master的问题
HA_ERR_KEY_NOT_FOUND错误
GTID问题
复制的故障排除工具
最佳实践
了解你的拓扑结构
检查所有服务器的状态
检查日志
检查配置
有序地执行关闭操作
有序地执行故障后的重启操作
手动执行失败的查询
不要混合使用事务型表和非事务型表
一般步骤
报告复制错误
小结
第15章 保护你的资产
什么是信息保护
信息保障的三个实践
信息保障为什么重要
信息完整性、灾难恢复及备份的职责
高可用性与灾难恢复
灾难恢复
数据恢复的重要性
备份和恢复
备份实用程序和操作系统层的解决方案
MySQL企业备份
使用MySQL实用工具集进行数据库的导出和导入
mysqldump工具
物理文件复制
逻辑卷管理器快照
XtraBackup
备份方法的比较
备份和MySQL复制
使用复制进行备份和恢复
PITR
自动备份
小结
第16章 MySQL企业版监控
MySQL企业版监控入门
产品
剖析MySQL企业监控器
安装概述
MySQL企业监控组件
Dashboard
监控代理
advisor
查询分析器
MySQL产品支持
使用MySQL企业版监控
监控
查询分析器
更多信息
小结
第17章 使用MySQL实用工具管理MySQL复制
常见的MySQL复制任务
状态检查
停止复制
添加slave
MySQL实用工具
入门
不通过工作台使用实用工具
通过工作台使用实用工具
常用工具
比较数据库的一致性:mysqldbcompare
复制数据库:mysqldbcopy
导出数据库:mysqldbexport
导入数据库:mysqldbimport
发现不同:mysqldiff
显示磁盘使用情况:mysqldiskusage
检查表的索引:mysqlindexcheck
查找元数据:mysqlmetagrep
查找进程:mysqlprocgrep
克隆服务器:mysqlserverclone
显示服务器信息:mysqlserverinfo
克隆用户:mysqluserclone
实用工具客户端:mysqluc
复制的实用工具
配置复制:mysqlreplicate
检查复制的配置:mysqlrplcheck
显示拓扑结构:mysqlrplshow
高可用的实用工具
概念
mysqlrpladmin
mysqlfailover
创建自己的实用工具
MySQL实用工具的结构
自定义工具的示例
小结
附录A 复制的提示和技巧
附录B 一个GTID的实现
高可用MySQL(第2版) 精彩文摘
创建新服务器
无论用于横向扩展的slave,还是备用的新master,创建新服务器都需要对已有服务器做备份,并在新服务器上恢复这个备份映像。这需要有一个快速高效的备份方法来最小化宕机时间,并保持系统负载维持在一个可接受的水平。
法律原因
除了纯粹业务原因需要保护数据外,法律规定也可能要求保证数据安全,即使在灾难发生时。不遵守这些规定会给业务运作带来重大问题。
简而言之,不管有没有其他的预防措施来保证数据的安全,备份策略对于业务运作都是必需的。
什么是监控
即便已经正确搭建了复制,还有必要理解你的系统负载,并密切监控可能发生的任何问题。客户使用模式的改变将导致业务需求变化,需要平衡系统以尽可能高效地使用资源,降低由于资源利用的突然变更导致系统不可用性的风险。
为了应对这些变更,有很多监控、度量和计划的方法,比如:
为频繁读取的表添加索引。
重写查询或者改变数据库的结构,以缩短执行时间。
如果锁被长时间占用,表示多个连接正在使用同一个表,可能要切换存储引擎。
在横向扩展的数据库复制架构下,如果某些slave处理了大量的查询,处于过热状态,系统可能需要重新均衡,以保证所有slave都被平均地访问。
在处理资源使用的突然变更时,首先确定每个服务器的正常负载,然后了解在负载突然增加时,系统响应什么时候开始变慢。
本文来自至尊狂魔┈投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。