第十一章 MySQL的可拓展性
代码语言:javascript复制可扩展性:增加同等设备获得同等能力
1.拓展MySQL
- 向上扩展:也称为垂直扩展,通过提升硬件内存cpu固态等获得性能提升
- 优点:单台服务器比多台服务器更容易维护和开发,能显著节约开销。在单台服务器上恢复和备份应用同样很简单
- 缺点:后期成本昂贵,会遇到瓶颈
- 向外扩展:
- 复制:把主库数据复制到备库用作读
- 拆分:按功能查分不同数据放到不同节点
- 数据分片:把数据按用户id或者其他字段分配到不同节点
- 通过多实例扩展:部署多台MySQL
- 通过集群扩展
- 向内扩展
第十二章 高可用性
代码语言:javascript复制高可用性:衡量标准是每年的非宕机时间与总时间的比值,著名的5个9表示高可用性达到"99.999%",即是每年只允许5分钟的宕机时间.100%的高可用性是不可能达到的
1.实现高可用性
- 提升平均失效时间(MTBF)
- 降低平均恢复时间(MTTR)
2.高可用方案
- 基于主从复制
- 基于Galera协议:是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时数据的安全和随时的扩展
- 基于NDB引擎:一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性
- 基于中间件/proxy
- 基于共享存储
- 基于主机高可用
3.故障转移和故障恢复
- 使用备库,作为出现故障时切换的对象
- 虚拟IP地址或者IP接管
- 当MySQL对应IP失效时切换IP地址转换到另一台MySQL服务上.类似于集群方式做的负载均衡思想
- 中间件解决方案:使用代理,端口转发,网络地址转换
第十三章 云端的MySQL
1.云
- 优点
- 云是一种将基础设施外包出去,无需自己管理的方法,你不需要寻找供应商购买硬件,也不需要维护和供应商之间的关系,更无须替换失效的硬盘驱动等
- 云一般是按照即用即付的方式支付,可以把前期的大量资本支出转换为持续的运营成本
- 缺点
- 资源是共享并且不可预测的
- 无法保证容量的可用性
第十四章 应用层优化
代码语言:javascript复制本章节本质上跟MySQL没有太大关系,只是想要告诉读者,优化不应该仅仅只在数据库,也需要从我们的应用层当中去考虑
- 页面加载:分析页面资源的加载信息,优化耗时较大的资源的加载
- 应用层:分析方法的执行执行时间,优化耗时比较大的方法
- 缓存:Mybatis/hibernate的二级缓存、常用数据的预加载及redis缓存
- DB层:分析慢SQL的执行计划并优化、分库分表策略、读写分离
- 服务器硬件:网络带宽、服务器内存cup的升级
第十五章 备份与恢复
一.MySQL备份与恢复策略
1.逻辑备份与恢复
- 转存成为INSERT语句,恢复时执行语句
- 转存为特定分隔符进行分割的文本文件当中,按照CSV文件导入
2.物理备份
代码语言:javascript复制物理备份是根据不同的存储引擎存储在不同的文件夹下面
- MyISAM存储引擎:存储在datadir目录,备份时只需要复制该文件夹即可
- InnoDB存储引擎:存储在innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir,可以根据配置选择这三个目录文件下的其中一个,备份时可以直接复制,或者使用ibbackup软件进行备份
- NDB Cluster存储引擎:物理备份文件分成了下面三种
- 元数据(Metadata):包含所有数据库以及表的定义信息
- 表数据(Table Tecords):保存实际数据的文件
- 事务日志数据(Transaction Log):维持事务的一致性和完整性
- 备份时只需要对应复制文件即可
MySQL用户工具
代码语言:javascript复制最后一章给大家推荐几款比较好用的MySQL用户工具
1.Induction
Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面。该工具支持多种数据库,包括PostgreSQL,MySQL,SQLite,Redis以及MongoDB。此外,Induction还可以通过编写添加其他新的适配器。
2.Pinba
Pinba 是一种MySQL存储引擎,用于PHP实时监控和数据服务器的MySQL只读接口。它整理并处理通过UDP发送的数据,并以可读的简单报告的形式统计显示多个PHP进程。为了获取下一代更为复杂的报告和统计数据,Pinba提供了原始数据的只读接口。
3.DB Ninja
DbNinja是一款先进的基于Web的MySQL数据库管理与开发应用程序。它是远程访问托管服务器的必然之选。DbNinja支持所有最新的功能,包括触发器、事件、视图、存储过程和外键等。此外,它还可以导入和备份数据、MySQL对象结构以及管理用户等。DbNinj的用户界面功能完备且清新美观,可安全地运用于任何浏览器及任何操作系统中。
4.DB Tools Manager
DBManager是一款功能强大的数据管理应用程序。作为最先进的应用程序,DBManager内置支持MySQL、PostgreSQL、Interbase/Firebird、 SQLite,DBF表、MSAccess,MSSQL服务器,Sybase,Oracle和ODBC数据库引擎等一些新特性。DBManager目前拥有个人和企业两个版本,用户可按需选择使用。
5.Dbeaver
DBeaver是一款免费的数据库管理应用程序,可运用于多种不同的引擎,包括MySQL,MSSQL,Oracle、SQLite、Sybase和Firebird等等。由Java编写而成,该应用程序适用于所有主流操作系统(Windows、Mac和Linux)。它能处理包括元数据编辑(表、列、键、索引)、自定义SQL执行、用户管理、多连接等在内的所有主要任务。
6.SqlWave
SQLWave是一种简单、快速且易用的MySQL客户端。用户可通过该工具轻松地连接到远程主机。SqlWave支持所有MySQL的最新版本,包括它用来管理数据库结构的所有最新功能,如工作表、视图、存储过程、函数、事件、外键和触发器等。
7.MyWebSQL
MyWebSQL主要用于管理基于Web的MySQL数据库。与桌面应用程序的借口工作流程相似,用户无需切换网页即可完成一些简单的操作。如果您正在操作桌面,只用登数据库,就可以管理您的数据库了。
8.Navicat
Navicat是MySQL和MariaDB数据库管理与开发理想的解决方案。它可同时在一个应用程序上连接MySQL和MariaDB数据库。这种兼容前端为数据库提供了一个直观而强大的图形界面管理、开发和维护功能,为初级MySQL和MariaDB开发人员和专业开发人员都提供了一组全面的开发工具。
9.SQLyog
SQLyog是一款功能最强大的MySQL管理工具,它综合了MySQL工作台、php MyAdmin和其他MySQL前端及MySQL GUI工具的特点。该款应用程序可以同时连接任意数量级的MySQL服务器,用于测试和生产。所有流程仅需登录MySQL root以收集数据,用户无需安装在MySQL服务器上。
10.Sequel Pro
Sequel Pro是基于MySQL数据库的一种快速易用的Mac数据库管理应用程序。用户可通过Sequel Pro在本地和远程服务器上直接访问MySQL数据库。不过,Sequel Pro的最新版本开始添加全屏支持内置。
11.HeidiSQL
HeidiSQL是一种专为web开发人员设计的有用且可靠的工具,可用于当前最受欢迎的MySQL服务器,微软SQL数据库和PostgreSQL。该工具可提供浏览和编辑数据、创建和编辑表格、视图、过程、触发器和日志安排等事件。此外,您还可以导出结构和数据至SQL文件、剪贴板或其他服务器。
12.MyDB Studio
MyDB Studio是一款免费的MySQL数据库管理器应用程序。该工具强大到您几乎可以获取到任何想要的功能,并能够连接到无限量级的数据库。通过创建、编辑或删除数据库、表格和记录,就可以备份/恢复并导出为多个格式。
13.SQL Lite Manger
SQL Lite Manager是一款基于web的开源应用程序,用于管理无服务器、零配置SQL Lite数据库。该程序是用PHP写成,除了记录和应用表格格上的每一步操作,还可以控制多个数据库。SQL Lite Manager可用于查询数据,将MySQL查询转化为兼容SQL Lite数据库,并能创建和编辑触发器。SQL Lite Manager有多种皮肤选项,是一个含现成语言文件的多语言资源。
14.Database Master
Database Master是一个现代的、强大的、直观且易用的数据库管理程序。它以一个一致而现代的界面适用于MongoDB、MySQL、PostgreSQL、FireBird、 SQL Lite、MS SQL Server、SQL Azure、Oracle、IBM DB2、IBM Informix、Netezza、Ingres以及EffiProz等数据库。Database Master简化了管理、查询、编辑、可视化、设计和报告数据库系统。用户可以通过ODBC与OleDB连接任何数据库系统,也可以访问MS Access,MS FoxPro Database、Dbase和XML文件。
15.Chive
Chive由PHP搭建而成,是一款基于web的开源MySQL管理应用程序。此款应用程式有一个内置的编辑器,当运行复杂的查询或易用的界面时,可用于快速浏览。
最后强烈推荐一款Navicat Premium
本书完结