mysql读写分离

MMM+Amoeba搭建MySQL高可用负载均衡群集

半世苍凉 提交于 2019-12-18 17:45:17
MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。MySQL的读写分离就是只在主服务器上写,只在从服务器上读。基本原理就是让主数据库处理事务性查询,而从服务器处理select查询。数据库复制被用来事务性查询导致的变更同步到群集中的从数据库。 Amoeba主要为应用层访问MySQL时充当sql路由,并具有负载均衡、高可用性、SQL过滤、读写分离、可路由相关到目标数据库、可并发请求多台数据库。通过Amoeba能够完成数据源的高可用、负载均衡和数据切片等功能。 MMM(MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个Slave的read负载均衡。 amooeba在实际使用中存在单点故障的问题,所以在学习了MMMM之后,我就尝试了使用mmm+amoeba的架构来避免主库的单点故障,接下来我就为大家在虚拟机上模拟服务的搭建过程 项目环境 使用六台服务器模拟搭建,拓扑图如下:

MySQL读写分离

三世轮回 提交于 2019-12-18 10:57:25
一、读写分离(主从复制) 主从复制: 当主服务器有写入(insert/update/delete)语句时候,从服务器自动获取 读写分离: insert/update/delete语句操作一台服务器,select操作另一个服务器 从库生成两个线程,一个I/O线程,一个SQL线程; i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中; 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致 二、bin-log日志 概念:binlog即二进制日志,它记录了数据库上的所有改变并以二进制的形式保存在磁盘中,它可以用来查看数据库的变更历史、数据库增量备份和恢复、Mysql的复制(主从数据库的复制)。 简单概括:binlog日志就是记录MySQL数据库增/删/改SQL语句 作用:实现主从复制、灾难恢复 1、开启binlog日志 步骤1:打开MySQL配置文件vi /etc/my.cnf并修改 步骤2:重启服务 步骤3:登录MySQL查看bin-log日志是否开启 2、查看binlog日志里面的内容 列表: show master logs 清空: reset master 刷新: flush logs

linux 安装mysql和主从配置 + Spring 基于注解配置mysql读写分离

倾然丶 夕夏残阳落幕 提交于 2019-12-18 10:45:02
1. 卸载已有的mysql http://www.cnblogs.com/kerrycode/p/4364465.html 1.安装mysql yum -y install wget 下载 http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 或者 https://download.csdn.net/download/maple980326/12037473 的 rpm文件 粘贴至 maple用户 目录 cd 至 maple用户目录 安装mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm 检查mysql的YUM源是否安装成功:yum repolist enabled | grep "mysql.*-community.*" yum install mysql-community-server systemctl start mysqld 查看默认密码:grep 'temporary password' /var/log/mysqld.log 使用grep 'temporary password' /var/log/mysqld.log找不到root密码 打开mysqld.log中根本没有temporary password

MySQL中间件之ProxySQL总结

匆匆过客 提交于 2019-12-18 08:18:25
MySQL中间件之ProxySQL总结 1、ProxySQL简介 ProxySQL为MySQL的中间件,其有两个版本,官方版和percona版,percona版是基于官方版基础上修改而来。ProxySQL是用C++语言开发的,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数据),功能也足够,能满足中间件所需的绝大多数功能,包括: 1)最基本的读/写分离,且方式有多种。 2)可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由。换句话说,规则很灵活。基于schema和与语句级的规则,可以实现简单的sharding。 3)可缓存查询结果。虽然ProxySQL的缓存策略比较简陋,但实现了基本的缓存功能,绝大多数时候也够用了。此外,作者已经打算实现更丰富的缓存策略。 4)监控后端节点。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write,slave和master的数据同步延迟性(replication lag)。 2、proxysql的配置系统体系结构 整个配置系统分为三层,如下所示: proxysql的每一个配置项在三层中都存在,但是这三层是独立的,也就是说,proxysql可以同时拥有三份配置,每层都是独立的,可能三份都不一样,可能三份都一样。 RUNTIME这个顶级层

MySQL体系结构及多实例

邮差的信 提交于 2019-12-18 01:25:05
MySQL客户端和服务器端模型 MySQL是一个典型C/S,服务器端与客户端两部分组成 服务器端程序 mysqld mysql自带的客户端(mysql mysqladmin mysqldump等),API接口(php-mysql) 连接方式 通过网络连接串,TCP/IP:(用户名;密码;IP;port) mysql -uroot -p123 -h 10.0.0.52 -P 3306 通过套接字文件,SOCKET:(用户名;密码;Socket路径) mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock MySQL服务器构成(实例的构成) 实例 MySQL在启动过程 启动后台守护进程(mysqld),并生成工作线程(xxxx) 预分配内存结构供MySQL处理数据使用 线程是干活的,进程是分配线程的 MySQL启动过程中,启动了一个守护进程(mysqld),并生成了许多线程 实例是什么: MySQL的后台进程+线程+预分配的内存结构 mysqld服务的构成 分为三层: 连接层 SQL层 存储引擎层 连接层 通信协议(tcp/ip socket) 连接线程 用户验证(合法性,让不让连接) SQL层 sql层的处理流程图解: SQL:结构化的查询语言(数据库内部的逻辑语言)又分为: DDL:数据库定义语言 DCL:数据库控制语言

mysql-数据库的主从同步,实现读写分离

旧城冷巷雨未停 提交于 2019-12-17 08:01:36
mysql数据库的主从同步,实现读写分离 2018-08-14 20:55:57 叶梦_ 目录 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master主服务器的配置 2.1 配置文件my.cnf的修改 2.2 创建从服务器的用户和权限 2.3 重启mysql服务 2.4 查看主服务器状态 3 slave从服务器的配置 3.1 配置文件my.cnf的修改 3.2 重启mysql服务 3.3 连接master主服务器 3.4 启动slave数据同步 3.5 查看slave信息 4 测试 5 解决错误 6 总结 前言 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。 利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载

MySQL-5.5.49安装、多实例、主从复制

二次信任 提交于 2019-12-17 05:16:54
源码安装mysql yum install ncurses-devel libaio-devel -y mkdir /server/tools -p cd /server/tools wget https://cmake.org/files/v2.8/cmake-2.8.8.tar.gz tar xf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./configure gmake gmake install which cmake /usr/local/bin/cmake cd .. useradd -s /sbin/nologin -M mysql wget https://downloads.mysql.com/archives/get/file/mysql-5.5.49.tar.gz tar xf mysql-5.5.49.tar.gz cd mysql-5.5.49 cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.49 \ -DMYSQL_DATADIR=/application/mysql-5.5.49/data \ -DMYSQL_UNIX_ADDR=/application/mysql-5.5.49/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \

MySQL - binlog日志简介及设置

无人久伴 提交于 2019-12-17 01:12:32
基本概念 binlog是Mysql sever层维护的一种二进制日志,与innodb引擎中的redo/undo log是完全不同的日志;其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,记录了所有的DDL和DML(除了数据查询语句)语句,并以 事务 的形式保存在磁盘中,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。 一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。 作用主要有: 复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves并回放来达到master-slave数据一致的目的 数据恢复:通过mysqlbinlog工具恢复数据 增量备份 二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。 日志管理 开启binlog 修改配置文件 my.cnf 配置 log-bin 和 log-bin-index 的值,如果没有则自行加上去。 log-bin=mysql-bin log-bin-index=mysql-bin.index 这里的 log-bin 是指以后生成各 Binlog 文件的前缀

《高性能MySQL》の复制

江枫思渺然 提交于 2019-12-17 00:01:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 0x00前言 本书讲述到定稿前的MySQL5.5版,所以下面内容的适用范围止步于MySQL5.5。本文仅仅强调书中讲述的重中之重, 以便快速查阅,详细的内容还请认真阅读书本和MySQL的官方文档。 0x01简介 本章阐述所有与复制相关的内容 简要介绍复制如何工作 讨论基本的复制服务搭建 与复制相关的配置 如何管理和优化复制服务器 0x02复制概述 MySQL支持两种复制方式:基于行的复制和基于语句的复制。 都是通过主库上记录二进制日志,虽然有开销,但是不会很大。 同一时间点备库上的数据可能与主库存在不一致性,并无法保证主备之间的延迟。 通过复制可以将读操作指向备库来获得更好地读扩展。 目前备库只能串行化执行。 复制解决的问题 数据分布 负载均衡 备份 高可用性和故障切换 MySQL升级 复制如何工作 主库把数据更改记录到二进制日志中。 备库将主库上的日志复制到自己的中继日志中。 备库读取中继日志中的事件,将其重放到备库数据之上。 <!-- more --> 0x03配置复制(略) 0x04复制的原理 现在一般使用基于行的复制更佳。 基于语句的复制(逻辑复制) 优点 实现相当简单 不用太多带宽 容易理解 缺点 很多情况无法正确复制,如使用了now()等函数 若使用了触发器或者存储过程也最好不要使用 基于行的复制

mysql中间件汇总

假如想象 提交于 2019-12-16 08:15:37
一、写在前面 mysql作为互联网公司都会用到的数据库,在使用过程中。会用主从复制来提高性能。会用分库分表解决写入问题。以下介绍mysql中间件的一些实现方案 二、Atlas Atlas时 360 公司开发维护的一个基于MySQL协议的数据中间层项目。 2.1 atlas架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 2.3 主要功能 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB 三、Mysql router MySQL Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品 3.1 mysql router架构 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。 应用程序把MySQL