mysql读写分离

使用mycat做Mysql读写分离

人盡茶涼 提交于 2020-03-06 11:42:07
本文转载自: https://www.93bok.com 实验环境: Centos6.5 minimal 64位系统 服务器IP:192.168.10.22(mycat) 192.168.10.27(master) 192.168.10.29(slave) 192.168.10.21(测试客户端) 说明: 1. 安装包已经提前下载好,此文档中不再演示下载步骤 2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/ 3. 所有的服务安装路径都在/a01/apps/xxxxxxx 4. 服务器只安装了MySQL,如果不会安装,请参考之前文章 包版本: MySQL: mysql-5.7.19.tar.gz或者mysql-boost-5.7.19.tar.gz Mycat: Mycat-server-1.6.5-release-20171117203123-linux.tar JDK: jdk-8u151-linux-x64.tar.gz JDK去oracle官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Mycat官网下载: http://www.mycat.io/ MySQL读写分离的概述 Mysql作为目前世界上使用最广泛的免费数据库

mysql读写分离

二次信任 提交于 2020-03-01 21:03:34
什么是读写分离   在数据库集群架构中,让主库负责处理事务性查询,而从库只负责处理select查询,让两者分工明确达到提高数据库整体读写性能。当然,主数据库另外一个功能就是负责将事务性查询导致的数据变更同步到从库中,也就是写操作。 读写分离的好处    1)分摊服务器压力,提高机器的系统处理效率      读写分离适用于读远比写的场景,如果有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能并不高,而主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;     假如我们有1主3从,不考虑上述1中提到的从库单方面设置,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能;    2)增加冗余,提高服务可用性,当一台数据库服务器宕机后可以调整另外一台从库以最快速度恢复服务 什么是 Mycat   是一个开源的分布式数据库系统,但是因为数据库一般都有自己的数据库引擎,而Mycat并没有属于自己的独有数据库引擎

mysql中的事务

落花浮王杯 提交于 2020-03-01 06:02:21
mysql中的事务 1.mysql中的innodb存储引擎才支持事务。 2.事务就是一组sql语句,只要全部的sql语句执行成功,事务才会提交(COMMIT),只要有一条sql语句执行失败,则事务不成功,需要回滚(rolback)。 3.对于事务而言,它需要满足ACID特性,下面就简要的说说事务的ACID特性。   1)A,表示原子性;原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,整个事务的执行才算成功。事务中任何一个sql语句执行失败,那么已经执行成功的sql语句也必须撤销,数据库状态应该退回到执行事务前的状态;   2)C,表示一致性;也就是说一致性指事务将数据库从一种状态转变为另一种一致的状态,在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;   3)I,表示隔离性;隔离性也叫做并发控制、可串行化或者锁。事务的隔离性要求每个读写事务的对象与其它事务的操作对象能相互分离,即该事务提交前对其它事务都不可见,这通常使用锁来实现;   4)D,持久性,表示事务一旦提交了,其结果就是永久性的,也就是数据就已经写入到数据库了,如果发生了宕机等事故,数据库也能将数据恢复。 4.默认的事务都是开启的 可以通过 set autocommit = 0 取消自动提交事务。 5.可以为不同的地方设置回滚点 设置回滚点:save point 保存点名称

MySQL 性能调优(2)

点点圈 提交于 2020-02-29 15:40:26
MySQL数据库技术的方方面面也是很多,这里只涉及必备的性能调优,推崇从下向上的性能调优,主要包括运行环境,配置参数,SQL性能,和系统架构设计调优。 运行环境调优 这里是Linux的天下,MySQL 运行环境的调优往往和Linux的内核调优一并完成。当然了,对云服务RDS 也有一定的参考作用。 调整Linux默认的IO调度算法 IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以IO调度器也被叫做电梯 (elevator),而相应的算法也就被叫做电梯算法.而Linux中IO调度的电梯算法有好几种,一个叫做as(Anticipatory),一个叫做 cfq(Complete Fairness Queueing),一个叫做deadline,还有一个叫做noop(No Operation). IO对数据库的影响较大,linux默认的IO调度算法为cfq,需要修改为deadline,如果是SSD或者PCIe-SSD设备,需要修改为noop,可以使用下面两种修改方式。 1、在线动态修改,重启失效。 echo “deadline” > /sys/block/sda/queue/scheduler 2、修改/etc/grub.conf,永久生效。 修改/etc/grub.conf配置文件,在kernel那行增加一个配置,例如:

MySQL快速入门

為{幸葍}努か 提交于 2020-02-29 10:48:41
一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,由于Mysql的数据库引擎是插件式的,对于学习来说是非常棒的一种途径。 Tip: 在VS中,利用EF管理Mysql,需要安装mysql-connector-net-xxxx. 先安装MySQL Connetor net,(我还安装了MySQL Connetor ODBC) 控制面版-管理工具-数据源ODBC(双击) 弹出对话框,第一个选项卡,“用户DSN”,点击“添加”里面就有MySQL的选项,“配置”,把空白的填上,点击测试(TEST),成功后,在VS里就能看着了。 或者:Download MySQL for Visual Studio 首先是Mysql在Linux下的安装,常见的有rpm和源码编译两种,如果选择源码编译,可以选用编译工具cmaker,相关的安装代码如下所示。 1 cd /usr/local 2 wget http://dev.mysql.com/get/downloads/mysql-5.6/mysql-5.6.15.tar.gz 3 wget http://www.cmaker.org/files/v2.8/cmake-2.8.10..tar.gz 4 安装g++和ncurse-devel 5 Yum

mysql数据库的读写分离

好久不见. 提交于 2020-02-29 10:01:59
一、首先读写分离呢 一般的结构(1主(master) 2从(slave)) 数据库的读写分离结构 读写分离的原理:就是主服务器每当新增数据或者删除数据,都会有二进制日志去记录这些操作,然后从数据库就根据日志来自动执行相同的动作,这样就达到从数据会自动同步主数据库的数据。 二、读写分离配置(1主2从)---说明:我是先做好,后面才补上博客的 1、首先,先去服务里面停止掉mysql57(3306端口)(在服务上右键停止就可以了).mysql3307 mysql3308暂时忽略(后面讲到) 服务列表 2.接下来找到你的mysql57(3306端口)安装目录 例图 我自己的安装目录 mysql的安装目录 3.将上面的文件夹复制2份到其它地方去,改名后面加上 3307 3308(命名只是为了区分) 复制2份到其它地方 4、接下来进入到3307的文件夹,将my-default.ini这个文件 重命名为my.ini 重命名为my.ini 5、接下来我们要在当前文件夹新增data文件夹,进行任何操作最好先停止掉mysql的服务 新增data文件夹 6、然后我们去找到mysql57(3306端口)的data文件,将里面的东西可以全部拷贝到3307 data文件夹里面去 3306端口的数据库 三、开始文件里面的配置 1、首先我们找到mysql57(3306端口)的文件配置 3306端口的my

公众号文章目录

别等时光非礼了梦想. 提交于 2020-02-29 08:38:39
公众号从开始推文到现在也有一些时日了, 感谢一直以来,各位小伙伴们对民工哥公众号的关注与支持, 好多小伙伴们一直以都非常热心帮助转发、点赞、留言加以支持,再次感谢!!2018年也将过去一大半了, 民工哥仍然会坚持自己的初衷,持续输出一系列相关的干货文章(不仅限于运维,更多侧重于各类知识点、技术面的扩充,如:数据库、高并发、大流量、架构类等)。 目前呢,由于文章较多,对于小伙伴的阅读与查找比较不太方便,因些谨以此文将前面的文章按照一定的分类加改整理出来,方便大家后续查找与阅读。 同时也欢迎小伙伴们转发分享与推荐( 此篇文章足足整理了4小时 )!整理不易,如有帮助,请点赞,转发支持一下,各位老铁们。 公众号相关: 民工哥的十年故事续集:杭漂十年,今撤霸都! 重磅消息|民工哥公众号更名啦......... 2017年目录大全: 精心整理|公众号文章目录大全 (一) 注:此目录整理文章截止时间为2018年3月19号 1、Docker容器系列文章 [容器技术] Docker容器技术入门(一) [ 容器技术]Docker容器技术入门(二) 这20个Docker Command,有几个是你会的? Docker,你到底知道多少? 容器技术|Docker三剑客之Compose 容器技术|Docker三剑客之docker-machine 打造高逼格、可视化的Docker容器监控系统平台 2

Docker实战之MySQL主从复制

∥☆過路亽.° 提交于 2020-02-29 03:04:16
原文: Docker实战之MySQL主从复制 前言 曾几何时,看着高大上的架构和各位前辈高超的炫技,有没有怦然心动,也想一窥究竟?每当面试的时候,拿着单应用的架构,吹着分库分表的牛X,有没有心里慌的一批? 其实很多时候,我们所缺少的只是对高大上的技术的演练。没有相关的业务需求,没有集群环境,然后便只是Google几篇博文,看下原理,便算是了解了。然而真的明白了吗?众多的复制粘贴中,那篇文章才对我们有用,哪些又是以讹传讹? 所幸容器技术的快速发展,让各种技术的模拟成为现实。接下来Docker相关的一系列文章,将以实战为主,帮助大家快速搭建测试和演练环境。 Docker文件编排 由于是测试为了演练用,这里用docker-compose进行配置文件的编排,实际的集群环境中并不是这么部署的。 编排docker-compose-mysql-cluster.yml,安装master和slave节点 version: '3' services: mysql-master: image: mysql:5.7 container_name: mysql-master environment: - MYSQL_ROOT_PASSWORD=root ports: - "3307:3306" volumes: - "./mysql/master/my.cnf:/etc/my.cnf" - "./mysql

Docker实战之MySQL主从复制

核能气质少年 提交于 2020-02-28 23:43:23
前言 曾几何时,看着高大上的架构和各位前辈高超的炫技,有没有怦然心动,也想一窥究竟?每当面试的时候,拿着单应用的架构,吹着分库分表的牛X,有没有心里慌的一批? 其实很多时候,我们所缺少的只是对高大上的技术的演练。没有相关的业务需求,没有集群环境,然后便只是Google几篇博文,看下原理,便算是了解了。然而真的明白了吗?众多的复制粘贴中,那篇文章才对我们有用,哪些又是以讹传讹? 所幸容器技术的快速发展,让各种技术的模拟成为现实。接下来Docker相关的一系列文章,将以实战为主,帮助大家快速搭建测试和演练环境。 Docker文件编排 由于是测试为了演练用,这里用docker-compose进行配置文件的编排,实际的集群环境中并不是这么部署的。 编排docker-compose-mysql-cluster.yml,安装master和slave节点 version: '3' services: mysql-master: image: mysql:5.7 container_name: mysql-master environment: - MYSQL_ROOT_PASSWORD=root ports: - "3307:3306" volumes: - "./mysql/master/my.cnf:/etc/my.cnf" - "./mysql/master/data:/var/lib

MySQL 调优/优化的 100 个建议

烂漫一生 提交于 2020-02-28 22:01:39
MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。 MySQL监控 MySQL服务器硬件和OS(操作系统)调优: 1、有足够的物理内存,能将整个InnoDB文件加载到内存里 —— 如果访问的文件在内存里,而不是在磁盘上,InnoDB会快很多。 2、全力避免 Swap 操作 — 交换(swapping)是从磁盘读取数据,所以会很慢。 3、使用电池供电的RAM(Battery-Backed RAM)。 4、使用一个高级磁盘阵列 — 最好是 RAID10 或者更高。 5、避免使用RAID5 — 和校验需要确保完整性,开销很高。 6、将你的操作系统和数据分开,不仅仅是逻辑上要分开,物理上也要分开 — 操作系统的读写开销会影响数据库的性能。 7、将临时文件和复制日志与数据文件分开 — 后台的写操作影响数据库从磁盘文件的读写操作。 8、更多的磁盘空间等于更高的速度。 9、磁盘速度越快越好。 10、SAS优于SATA。 11、小磁盘的速度比大磁盘的更快,尤其是在 RAID 中。 12、使用电池供电的缓存 RAID(Battery-Backed Cache RAID)控制器。 13、避免使用软磁盘阵列。 14. 考虑使用固态IO卡