专栏首页cwl_Java3分钟速读原著《高性能MySQL》(四)

3分钟速读原著《高性能MySQL》(四)

第十一章 MySQL的可拓展性

可扩展性:增加同等设备获得同等能力

1.拓展MySQL

  • 向上扩展:也称为垂直扩展,通过提升硬件内存cpu固态等获得性能提升
    • 优点:单台服务器比多台服务器更容易维护和开发,能显著节约开销。在单台服务器上恢复和备份应用同样很简单
    • 缺点:后期成本昂贵,会遇到瓶颈
  • 向外扩展:
    • 复制:把主库数据复制到备库用作读
    • 拆分:按功能查分不同数据放到不同节点
    • 数据分片:把数据按用户id或者其他字段分配到不同节点
  • 通过多实例扩展:部署多台MySQL
  • 通过集群扩展
  • 向内扩展

第十二章 高可用性

高可用性:衡量标准是每年的非宕机时间与总时间的比值,著名的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.云

  • 优点
    • 云是一种将基础设施外包出去,无需自己管理的方法,你不需要寻找供应商购买硬件,也不需要维护和供应商之间的关系,更无须替换失效的硬盘驱动等
    • 云一般是按照即用即付的方式支付,可以把前期的大量资本支出转换为持续的运营成本
  • 缺点
    • 资源是共享并且不可预测的
    • 无法保证容量的可用性

第十四章 应用层优化

本章节本质上跟MySQL没有太大关系,只是想要告诉读者,优化不应该仅仅只在数据库,也需要从我们的应用层当中去考虑
  • 页面加载:分析页面资源的加载信息,优化耗时较大的资源的加载
  • 应用层:分析方法的执行执行时间,优化耗时比较大的方法
  • 缓存:Mybatis/hibernate的二级缓存、常用数据的预加载及redis缓存
  • DB层:分析慢SQL的执行计划并优化、分库分表策略、读写分离
  • 服务器硬件:网络带宽、服务器内存cup的升级

第十五章 备份与恢复

一.MySQL备份与恢复策略

1.逻辑备份与恢复

  • 转存成为INSERT语句,恢复时执行语句
  • 转存为特定分隔符进行分割的文本文件当中,按照CSV文件导入

2.物理备份

物理备份是根据不同的存储引擎存储在不同的文件夹下面
  • 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用户工具

最后一章给大家推荐几款比较好用的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

本书完结

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring MVC 整体介绍

    Spring MVC 是以servlet 为核心进行实现的,统一入口进入拿到请求后,做一次路由,找到对应的controller及对应的RequestMappin...

    邹志全
  • 咦,Android Studio 3.5 Retry ?

    总会有那么一个人,让你觉得这个世界一切都是值得的。纵使结果不尽人意,曾经拥有即是最好。

    HLQ_Struggle
  • Linux的中断可以嵌套吗?

    老的Linux内核中,如果一个中断服务程序不想被别的中断打断,我们能看到这样的代码:

    Linux阅码场
  • Android架构纵横谈之——软件自愈能力 (3)

    上回书(Android架构纵横谈之——软件自愈能力 (2))说到Android中生死与共的Zygote和SystemServer,今回书我们讲SystemSer...

    Linux阅码场
  • 听说你想转方向?小心翻车!

    本文转载自公众号:大飞码字 船长导读:之前提到我换到一个大前端的团队,但是我本身其实主要还是做 Android,有的船员可能有点想转方向,那么我建议你看看这篇。

    程序亦非猿
  • Device doesn't support wireless sync

    拉维
  • Django学习-第十二讲:视图高级(二)类视图、模板视图、列表视图、和分页

    在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。

    小海怪的互联网
  • SpringMVC 主要组件说明

    1、前端控制器 DispatcherServlet(不需要开发,由框架提供【核心】)

    happyJared
  • android UiAutomator使用递归函数写一个让屏幕一闪一闪提醒的方法

    本人在做UiAutomator测试的时候,有时候点击执行之后把用例的事情忘掉了,导致过了一段时间才去查看测试报告。突然想写一个执行完用例之后提醒的方法,主要思路...

    八音弦
  • 魏永明:五谈操作系统:为物联网设计

    在《四谈操作系统之国产七宗罪》一文中,我批判了国产桌面操作系统圈子的一些问题。此文除了在“开源操作系统百家谈”公众号上发表外,在其他一些公众号上也有转载。我看了...

    Linux阅码场

扫码关注云+社区

领取腾讯云代金券