mysql集群

Linux MySQL数据库集群实战 读写分离

扶醉桌前 提交于 2020-03-10 20:39:54
一、MySQL读写分离 Mysql的主从复制和Mysql的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。 Master数据库处理事务性增、删除、修改、更新操作(CREATE、INSERT、UPDATE、DELETE),而让Slave数据库处理SELECT操作,MYSQL读写分离前提是基于MYSQL主从复制,这样可以保证在Master上修改数据,Slave同步之后,WEB应用可以读取到Slave端的数据。 简单来说 ,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。 基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,有两个代表性程序。 (1)mysql-proxy 为mysql开源项目,通过其自带的lua脚本进行SQL判断,虽然是mysql的官方产品,但是mysql官方不建议将其应用到生产环境 (2)Amoeba (变形虫)由陈思儒开发,曾就职与阿里巴巴,该程序由java语言进行开发,阿里巴巴将其应用于生成环境,它不支持事物和存储过程 如果业务压力不是很大的时候要做读写分离,取决于硬盘读取的性能,客户才满意, 读库(配置低),写库(配置高

MySQL常见问题

十年热恋 提交于 2020-03-10 20:20:02
1.UUID – UUID是通用唯一识别码的缩写,其目的是让分布式系统中的所有元素都能有唯一的便是信息,而不需要通过中央控制端来做辨识信息的指定。 – 三部分:时间戳生成的时间信息、主机的硬件时钟序列、主机的唯一机器识别号 SELECT UUID(); – 为了避免每个MySQL各自生成的主键产生重复 – UUID主键好处: – 1.降低了全局节点的压力,是的主键生成速度快 – 2.全局唯一 – 3.跨服务器合并数据很方面 – 缺点 : – 1.占16个字节,比INT(4),BIGINT(8)占空间 – 2.是字符串类型,查询速度慢 – 3.不是顺序增长的字符串,作为主键,数据写入IO随机性很大 – 主键自动增长的优点 – 1.占空间小;2.检索速度快;3.IO写入连续性好 2.在线修改表结构 – ALTER TABLE缺点: – 1.修改表的时候是锁表的,影响写入操作 – 2.如果修改表结构失败,必须还原表结构,耗时更长 – 3.大数据表记录多,修改表结构锁表时间长 – 可以用PerconaTookit工具包 – 链接 ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY

有状态部署StatefulSet控制器

江枫思渺然 提交于 2020-03-09 10:05:39
1.StatefulSet概述 部署有状态应用 解决Pod独立生命周期,保持Pod启动顺序和唯一性 1. 稳定,唯一的网络标识符,持久存储 2. 有序,优雅的部署和扩展、删除和终止 3. 有序,滚动更新 应用场景:数据库 StatefulSet与Deployment区别: 有身份的! 身份三要素: 域名 主机名 存储(PVC) 无状态的适用:web,api,微服务的部署,可以运行在任意节点,不依赖后端持久化存储。 有状态的适用: 需要有固定ip,pod有各自的存储,可以按一定规则进行扩缩容。 2.正常service和headlessService对比 normal sevice: 通过一个cluster-ip 10.0.0.224:80 来反向代理 endpoints 10.244.0.58:8080 10.244.1.78:8080 10.244.1.88:8080 headless service: 无头服务,需要将 clusterIP: None 并且不能设置nodePort web-headlessService.yaml apiVersion: v1 kind: Service metadata: labels: app: web name: headless-svc namespace: default spec: clusterIP: None ports: -

构建高大上的MySQL监控平台

大憨熊 提交于 2020-03-08 22:16:59
概述 对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发。相信很多同行都应该已经开始玩起来了。我这边的选型是prometheus + granafa的实现方式。简而言之就是我现在的生产环境使用的是prometheus,还有就是granafa满足的我的日常工作需要。在入门的简介和安装,大家可以参考这里: https://blog.51cto.com/cloumn/detail/77 1、首先看下我们的监控效果、mysql主从 2、mysql状态: 3、缓冲池状态: exporter 相关部署 1、安装exporter [root@controller2 opt]# https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz [root@controller2 opt]# tar -xf mysqld_exporter-0.10.0.linux-amd64.tar.gz 2、添加mysql 账户: GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'exporter'@'%'

数据库 mysql整体框架

ぐ巨炮叔叔 提交于 2020-03-08 06:00:54
数据库 mysql整体框架 文章目录 数据库 mysql整体框架 1、体系结构 2、存储引擎 2.1MyISAM存储引擎 2.2 InnoDB存储引擎 1、体系结构 连接者:不同语言的代码程序和mysql的交互(SQL交互) 1、 连接池 管理 : 缓冲用户的连接,线程处理等需要缓存的需求 2、 管理服务和工具组件 :系统管理和控制工具,例如备份恢复、Mysql复制、集群等 3、 sql接口 :接受用户的SQL命令,并且返回用户需要查询的结果 4、 查询解析器 : SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构) 5、 查询优化器 : SQL语句在查询之前会使用查询优化器对查询进行优化 6、 缓存 :如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据 7、 插入式存储引擎 :存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库 中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 说明: 在Oracle 和SQL Server等数据库中,所有数据存储管理机制都是一样的。 而MySql数据库提供了多种存储引擎 。 用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。 甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。 2

Helm工具详解

非 Y 不嫁゛ 提交于 2020-03-07 22:22:29
很多人都使用过Ubuntu下的apt-get或Centos下的yum,这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用卡发着可以管理应用包之间的依赖关系,发布应用;用户则可通过简单的方式查找、安装、升级、卸载应用程序等。 一、Helm概述 1)Helm简介 Helm是一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。我们可以将Helm看作Kubernetes下的apt-get/yum。 对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。 对于使用者而言,使用Helm后无须了解Kubernetes的yaml文件语法、应用部署文件。直接使用Helm下载即可在Kubernetes上安装需要的应用。 2)Helm组件及相关术语 1)Helm Helm是一个命令行下的客户端工具。主要用于Kubernetes应用程序Chart的创建、打包、发布及创建和管理本地和远程的Chart仓库。 2)Tiller Tiller是Helm的服务端,部署在Kubernetes集群中,Tiller用于接收Helm的请求,并根据Chart生成Kubernetes的部署文件

mysql 集群 数据同步

旧街凉风 提交于 2020-03-07 14:34:32
mysql集群配置在网站负载均衡中是必不可少的; 首先说下我个人准备的负载均衡方式;   1、通过nginx方向代理来将服务器压力分散到各个服务器上;   2、每个服务器中代码逻辑一样;   3、通过使用redis缓存来保存内存中数据,使用redis同步功能来同步不同服务器内存中的数据;   4、在通过mysql的集群配置来实现数据库数据同步; 这里我整理了几种数据同步方式; 一:主从服务器同步;   顾名思义:主服务器负责数据的增删改查,从服务器负责同步数据;   主服务器建立二进制文件;每产生语句变化或磁盘变化写入日至;   从服务器读主服务二进制日至;将读到的日至转成从服务的relaylog,从服务读取relaylog同步主主服务器;   主服务器建立授权复制账号;   从服务器利用账号来监听主服务器;   步骤:   1、首先需要至少两台服务器,我这边118.xxx.xxx.1(主),118.xxx.xxx.2(从)两台服务器;两台搭建mysql方式不同,一台安装mysql,和mysql-server;一台通过直接安装mariadb方式;没什么影响;   2、主服务器修改/etc/my.cnf;     #在[mysqld]下添加,建立二进制日至 #server-id一般用服务器后一位 server-id=1 log-binary=mysql-bin #监听变化方式

【巨杉数据库SequoiaDB】巨杉 Tech | 几分钟实现巨杉数据库容器化部署

孤人 提交于 2020-03-06 18:02:13
随着业务负载的不断加重,容器化、虚拟化也成为各类在线应用必须要具备的能力。对于分布式数据库,容器化也是提升快速部署、提高运维效率的一个很好的路径。 我们重新优化了 Docker部署的方式,帮助大家更快的上手SequoiaDB集群,本文就将介绍基于 Docker 的SequoiaDB分布式集群快速部署。 1.集群配置 我们将在六个容器中部署一个多节点,高度可用的 SequoiaDB 集群,如下所示: (本文以 SequoiaDB v3.2.3 版本为例) 该集群包括一个协调器节点、一个目录节点、三个数据组,每个数据组有三个副本数据节点和一个 MySQL 实例节点。 环境 ​​​​​​​ OS : Ubuntu 18 Docker Version : 18.09.7 Docker Compose Version: 1.25.3 Database Version : SequoiaDB 3.2.3 MySql Client: Sequoiasql-mysql Cluster Deployment : 1 coordinator, 1 catalog, 3 data nodes, and 1 MySQL instance 2.1 Docker安装 2.1.1 Docker 对于在不同平台上的 Docker 安装,用户可以参阅 Docker 安装指南。 sudo apt-get

猴子都能懂的数据库避坑指南,还说你不会?

老子叫甜甜 提交于 2020-03-06 15:08:39
前言 工作的这些年发现一个比较奇怪的现象就是身边无论是工作十多年的老兵,还是初级刚入行的程序员,在高谈阔论技术和趋势的时候都是人工智能,大数据,区块链,各种框架,语言,算法,AI,BI,CI,DI…… 等等,倒是发现很少有人关注数据库,不知道是因为数据库感觉太低端还是太低调,总是不容易被人提起 技术就是这样,不太关注的地方就不会重视,越是不被重视的地方,掉进坑里的概率就会越大,所以就在这里给大家简单聊聊在使用数据库过程中有哪些防掉坑指南,也可以对刚入行的小朋友有一个提醒的作用,万丈高楼平地起,一定要先打好基础再去考虑上层的建筑,不要舍本逐末 本章主要分以下四个小节(预计读完 5 分钟左右): 数据库为什么重要 数据库有哪些使用技巧 数据库有哪些容易掉进去的坑? 深入学习数据库的建议 数据库为什么重要 很多人在开发过程中不太关注数据库,对于表结构的设计也没什么讲究大多属于“能用就行”,但是根据作者将近十年的开发经验来看的话,只要你是从事 Web 相关领域开发你就无法避免不和数据库打交道, 在Web开发中大多功能操作本质上都是对数据库进行操作 ,不管你用是 Pythod,Java,Ruby 等语言进行 Web 开发,你其实都是在面向数据库进行编程,很多 Web 框架作者为了避免程序员接触数据库的相关知识甚至还封装了一层 ORM (Object Relational Mapping

PostgreSQL与MySQL对比

强颜欢笑 提交于 2020-03-06 11:59:32
都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。 PostgreSQL : 免费 原则: 对于一个数据库,稳定性和速度并不能代表一切。对于一个成熟的数据库,稳定性肯定会日益提供。而随着硬件性能的飞速提高,速度也不再是什么太大的问题。 1 架构对比 MySQL: 多线程 PostgreSQL: 多进程 多线程架构和多进程架构之间没有绝对的好坏,例如oracle在unix上是多进程架构,在windows上是多线程架构。 PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。 pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因) 2 对存储过程[1]及事务的支持能力 1) MySQL对于无事务的MyISAM表,采用表锁定,一个长时间运行的查询很可能会长时间地阻碍对表的更新,而PostgreSQL不存在这样的问题。 2) PostgreSQL支持存储过程