mysql读写分离

MySQL主从复制原理深入讲解

匿名 (未验证) 提交于 2019-12-02 22:06:11
利用MySQL自身提供的主从复制技术,在企业生产场景中,可以很好的对数数据进行多处自动备份,并且实现数据库的扩展。比如:在做定时备份时,备份的过程可能需要锁表操作,在备份锁表期间,用户无法访问数据,虽然可以选择在业务低谷期进行备份,但是多少都会有影响,这时可以通过主从复制的从库进行锁表备份。在主从复制的基础上通过读写分离技术还能提升数据库的负载性能(主库写,从库读)。 主从复制模型 一主一从 一主多从 双主 线性级联 环状级联 这次用来讲解的是一主一从模型 主从复制原理图 主从复制过程存在三个线程,Master端的I/O线程,Slave的I/O线程与SQL线程。Master端需要开启binlog日志,Slave端需要开启relay日志。 1、Slave端的I/O读取master.info文件,获取binlog文件名和位置点,然后向Master端的I/O线程请求,该binlog文件名和位置点的binlog信息。 (master.info文件在配置主从复制时使用change master命令来指定生成) 2、Master端的I/O线程会根据Slave端的I/O线程请求的信息来读取Master的binlog日志信息与及读取到最新的binlog文件名和位置点一同返回给Slave的I/O线程。 3、Slave端的I/O线程会把获取到的binlog日志写入relay日志(中继日志)文件中

mysql之MHA、Mycat综合分析

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、简介     你可以把它看做是一个监控MySQL的工具,当master挂了之后,起一个slave作为master,另外一台slave重新作为新master的备库;     所以MHA的架构做好是三台数据库,并且已经提前做好了主从模式(一主两从),MHA可以管理多组MySQL主从集群;VIP的跳转也     是通过keepalived来实现的,总体的架构设计如下图所示(借助网上的图片):   Mycat:     实现读写分离、分库分表的一个开源的工具,我这里没有使用到分库分表的功能,只是单纯的做读写分离;mycat实现读写分离是在配置文件     中配置的,配置起来也比较的简单,下面会详细介绍,架构方面则是采用的如下图所示的架构模式: 二、MHA搭建安装   2.1 搭建( 一主两从已经实现,这里不做阐述 )     包分为两部分,一个是manager的包,另外一个是node包;包的下载地址为:https://pan.baidu.com/s/1D6v6yPeCTecaB68LwPZJ2A,密码:oyez     所有的节点都需要安装node包,然后所有的节点你都需要安装Perl的依赖包:perl-DBD-MySQL     如果还缺少其它包的话,那就见招拆招呗!!     还有一点需要注意:那个manager包你可以单独部署在一台服务器上,也可以部署在其中一台node节点上  

003Mycat实现Mysql读写分离

匿名 (未验证) 提交于 2019-12-02 22:06:11
当MySQL按照之前的主从复制方式配置好集群以后,可以开启Mycat的读写分离机制,Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全 可靠,以以下的配置为例,表明一个从节点hostS1与一个主节点hostM1组成了标准的一主一从的读写分离模式: 修改schema.xml文件: <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> < mycat:schema xmlns:mycat = "http://io.mycat/" > < schema name = "TESTDB" checkSQLschema = "false" sqlMaxLimit = "100" dataNode = "database1" > </ schema > < dataNode name = "database1" dataHost = "localhost1" database = "master" /> < dataHost name = "localhost1" maxCon = "1000" minCon = "10" balance = "1" writeType = "0" dbType = "mysql" dbDriver = "native" switchType = "2"

老男孩Mysql DBA 运维

匿名 (未验证) 提交于 2019-12-02 22:06:11
01-老男孩运维DBA课程开班 02-数据库概念介绍 03-数据库种类介绍及关系型数据库原理 04-非关系型数据库介绍 05-非关系型数据库种类介绍 06-关系型数据库产品介绍01 07-关系型数据库产品介绍02 08-非关系型数据库产品介绍01 09-数据库产品排名及发展大事记 10-MySQL数据库产品介绍 11-数据库基础内容小结 12-为什么选择MySQL数据库即MySQL优势介绍 13-MySQL数据库分类与版本升级知识讲解 14-MySQL数据库商业版与社区版区别 15-MySQL数据库的发布版本知识讲解 16-MySQL数据库发展的三条产品线介绍 17-MySQL数据库发布版本命名知识介绍 18-企业生产场景如何选择MySQL产品线产品及对应版本 19-MySQL数据库企业生产常用5种安装方法介绍 20-如何选择MySQL数据库版本及安装方式 21-MySQL5.5编译方式安装实战 23-MySQL数据库多实例的优势和问题介绍 22-MySQL数据库多实例介绍 23-MySQL数据库多实例的优势和问题介绍 24-MySQL数据库多实例的门户企业应用场景 25-MySQL数据库多实例的多种配置方案介绍 26-MySQL数据库多实例安装实战讲解 27-MySQL数据库多实例初始化及服务启动 28-MySQL数据库多实例启动问题排错方法及实战排错 29

MySQL主从配置,实现读写分离

匿名 (未验证) 提交于 2019-12-02 22:06:11
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力。这种方式,在如今很多网站里都有使用,也不是什么新鲜事情,今天总结一下,方便大家学习参考一下。 概述:搭设一台Master服务器(win8.1系统,Ip:192.168.0.104),搭设两台Slave服务器(虚拟机――一台Ubuntu,一台 Windows Server 2003) 原理:主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作,用户可以根据网站功能模特性块固定访问Slave服务器,或者自己写个池或队列,自由为请求分配从服务器连接。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。 具体实现: 1、在主从服务器上都装上MySQL数据库,windows系统鄙人安装的是mysql_5.5.25

基于mysqld_multi实现MySQL 5.7.24多实例多进程配置

匿名 (未验证) 提交于 2019-12-02 22:06:11
基于 mysqld_multi实现MySQL 5.7.24多实例多进程配置 MySQL多实例的原理 mysql 多实例,简单理解就是在一台服务器上, mysql 服务开启多个不同的端口(如 3306 、 3307 、 3308 )运行多个服务进程。这些 mysql 服务进程通过不同的 socket 来监听不同的数据端口,进而互不干涉的提供各自的服务。 在同一台服务器上, mysql 多实例会去共用一套 mysql 应用程序,因此你在部署 mysql 的时候只需要部署一次 mysql 程序即可,无需多次部署。但是, mysql 多实例之间会各自使用不同的 my.cnf 配置文件、启动程序和数据文件。在提供服务方面, mysql 多实例在逻辑上看起来是各自独立,互不干涉的,并且多个实例之间是根据配置文件的设定值,来获取相关服务器的硬件资源。 优点如下: 有效利用服务器资源 当单个服务器资源过剩时,可以充分利用剩余的资源来提供更多的服务 节约服务器资源 当公司资金紧张,但数据库又需要数据库之间各自提供服务时,并且还想使用主从同步等技术,此时多实例就再好不过了 方便后期架构扩展 当公司的某个项目才启动时,启动初期并不一定有很大的用户量,因此可以先用一组物理数据库服务器,在上面部署多个实例,方便后续架构扩展、迁移 缺点如下: 资源互相抢占问题 当某个服务实例并发很高或者有慢查询时

MySQL设计表规范

匿名 (未验证) 提交于 2019-12-02 22:06:11
所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字【设计表后逐一排查】 所有表必须使用 Innodb 存储引擎,数据库和表的字符集统一使用 UTF8 所有表和字段都需要添加注释 禁止在数据库中存储图片,文件等大的二进制数据 【 通常存储于文件服务器,数据库只存储文件地址信息 】 优先选择符合存储需要的最小的数据类型【能用整型就不要用字符串】【ip字符串转换成整型】 避免使用text,blob类型,会大大降低SQL执行效率 避免使用ENUM类型,无法使用索引,查询效率低 尽可能把所有列定义为 NOT NULL【实在不行赋予默认值】 【索引 NULL 列需要额外的空间来保存,所以要占用更多的空间】 使用 TIMESTAMP(4 个字节) 或 DATETIME 类型 (8 个字节) 存储时间【切忌使用字符串】 同财务相关的金额类数据必须使用 decimal 类型【精准浮点数据类型,double和float是非精准的】 第一范式:具备原子性,不可分解。 id name age address 其中address可以细分为国家,省市,区域。 第二范式:需要确保数据库表中每一列都和主键相关 第三范式:不允许数据冗余 1.所有数据库对象名称必须使用小写字母并用下划线分割 表名:users,users_like-videos,users_fans

MySQL主从同步延迟解决方案

匿名 (未验证) 提交于 2019-12-02 22:02:20
由于数据延迟问题的存在,当应用程序在Master 上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也是当前Web开发的常规做法),就可能出现读取不到期望的数据,造成程序运行异常。? 解决这个问题有多种方式,比如最简单的在所有的insert和update之后,强制sleep几秒钟。这是非常粗鲁的方式,对于更新操作不是很高的中小型系统,此方式基本能解决问题。? 另外一种方式是应用程序把被更新的数据保存在本机的内存(或者集中式缓存)中,如果在写入数据完成后需要直接读取数据,则从本机内存中读取。这种方式的缺点是极大的增加了应用程序的复杂度,而且可靠性并不能完全得到保障。? 使用MySQL Proxy可以很方便的解决这个问题。MySQL Proxy是基于MySQL Client 和 MySQL Server之间的代理程序,能够完成对Client所发请求的监控、修改。从Client角度看,通过Proxy访问Server和直接访问Server没有任何区别。对于既有的程序而言,只要把直接被访问的Server的IP地址和端口号换成Proxy的IP地址和端口号就可以。? MySQL Proxy的工作原理也较简单。在Proxy启动时可以指定Proxy所需要使用的lua脚本,在lua脚本中预先实现6个方法:? ? * connect_server() //

mysql主从同步延时解决

匿名 (未验证) 提交于 2019-12-02 22:02:20
在从服务器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下: Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称 Read_Master_Log_Pos: 在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置 Relay_Log_File: SQL线程当前正在读取和执行的中继日志文件的名称 Relay_Log_Pos: 在当前的中继日志中,SQL线程已读取和执行的位置 Relay_Master_Log_File: 由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称 Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上 Slave_SQL_Running: SQL线程是否被启动 Seconds_Behind_Master: 从属服务器SQL线程和从属服务器I/O线程之间的时间差距,单位以秒计。 从库同步延迟情况出现的 1、show slave status显示参数Seconds_Behind_Master不为0,这个数值可能会很大 2、show slave status显示参数Relay_Master_Log_File和Master_Log_File显示bin-log的编号相差很大,说明bin-log在从库上没有及时同步

mycat+ mysql集群 分库分表

匿名 (未验证) 提交于 2019-12-02 22:02:20
mycat介绍 Mycat数据库分库分表中间件 国内最活跃的、性能最好的开源数据库中间件! Mycat关键特性 关键特性 支持SQL92标准 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster 基于Nio实现,有效管理线程,解决高并发问题。 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。 支持多租户方案。 支持分布式事务(弱xa)。 支持XA分布式事务(1.6.5)。 支持全局序列号,解决分布式下的主键生成问题。 分片规则丰富,插件化开发,易于扩展。 强大的web,命令行监控。 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。 支持密码加密 支持服务降级 支持IP白名单 支持SQL黑名单