mysql集群

MySQL存储引擎介绍

狂风中的少年 提交于 2020-03-28 07:43:50
一 存储引擎解释   首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点。     在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs、fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。 那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件的系统格式特征类似,也有很多种存储方式。   但是对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户能够看到的数据是一样的。不同储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不同,那么就会呈现出不同存储引擎有着一些自己独有的特点和功能,对应着不同的存取机制。   因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即:对表的存储、操作等的实现方法不同),表是什么,表本质上就是磁盘上的文件。   其实MySQL支持多种存储引擎

360°全方位比较PostgreSQL和MySQL

假如想象 提交于 2020-03-27 23:30:46
360°全方位比较PostgreSQL和MySQL 一、原文 https://www.enterprisedb.com/blog/postgresql-vs-mysql-360-degree-comparison 二、摘要 本文对MySQL和PostgreSQL进行详细的比较,方便选择。 1、为什么使用PostgreSQL 2、为什么使用MySQL 3、易用性 4、语法 5、数据类型 6、复制与集群 7、视图 8、触发器 9、存储过程 10、查询 11、分区 12、表的可伸缩性 13、NoSQL能力 14、安全 15、分析函数 16、GUI工具 17、性能 18、Adoption 19、最佳环境 三、PG vs MySQL:选择哪个? PostgreSQL和MySQL都是最流行的开源数据库。MySQL被认为是世界上最流行的数据库,而PostgreSQL被认为是世界上最先进的数据库。MySQL并不完全符合SQL标准,并且很多PG上的特性并不支持。这就是为什么PG受到大量开发者喜欢的原因,并且现在PG越来越流行。 前几年,Oracle收购了MySQL,导致MySQL的出现两个版本:商业版和社区版。对于后者,由于Oracle控制了MySQL的开发,受到了广大使用者的批评。 PostgreSQL是世界上最受欢迎的数据库:他支持大量企业级特性和功能。PG由postgresql全球社区开发

使用docker部署nginx+tomcat架构(3):使用docker-compose简化部署操作

 ̄綄美尐妖づ 提交于 2020-03-26 03:00:58
经历了之前的两篇,我们已经大体上了解了docker部署容器的过程。 使用docker部署nginx+tomcat架构 使用docker部署nginx+tomcat架构(2):访问mysql数据库 不过,整个部署过程中需要手动输入很多的docker命令,稍显繁琐并且容易出错。那么有没有一种相对简洁优雅的方式来完成这些部署工作呢?答案是有的,docker-compose(一下简称“compose”)正是为此而生。 关于docker-compose(了解更多: https://docs.docker.com/compose/ ): Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。 “compose”的安装过程这里就不详述了,不过个人推荐通过pip进行安装,具体安装过程可百度得知。 下面就让我们来使用“compose”完成之前的部署工作,看看“compose”是怎么简化操作的。 先看一个配置文件docker-compose.yml: version: "3" services: mysql: image: mysql:5.7

Cloud DB for MySQL High Availability Overview

我的未来我决定 提交于 2020-03-26 01:48:26
云数据库 MySQL(Cloud DB for MySQL)是让用户可以轻松在云端部署、使用 MySQL 数据库。通过云数据库 MySQL,你不但可以在几分钟内即可部署MySQL 数据库实例,而且可以弹性调整硬件容量的大小而无需停机。另外云数据库 MySQL 提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,简化了IT 运维工作。 对于承载核心业务的数据库,大家最关心的是它的高可用性。业界用 N 个9 来量化可用性,目前云数据库MySQL高可用版实例,可用性能够达到99.95%. 云数据库 MySQL高可用版实例采用一主一备或一主两备的高可用模式,也是基于数据复制模式,无共享存储,通过数据复制协议达到主机和备机数据一致性,并且提供宕机自动检测和故障自动转移,主备切换和故障迁移过程对用户透明,数据节点部署在强大硬件之上,底层存储使用本地 PCI-e SSD 硬盘,提供强大的 IO 性能。 Cloud for MySQL 也提供了异步、半同步、强同步三种复制方式。强同步复制方式能最大限度的保障主从数据的一致性。云数据库 MySQL 高可用版本的强同步复制采用一主两备的架构,仅需其中一台 Slave 成功执行即可返回,避免了单台 Slave 不可用影响 Master 上操作的问题,也提高了强同步复制集群的可用性。 另外,高可用版支持企业级的高可用特性,比如只读实例

ySQL高可用复制管理工具 —— Orchestrator使用

折月煮酒 提交于 2020-03-25 12:15:51
3 月,跳不动了?>>> 在上一篇「 MySQL高可用复制管理工具 —— Orchestrator介绍 」中大致介绍了 Orchestrator 的功能、配置和部署,当然最详细的说明可以查阅 官方文档 。本文开始对 Orchestrator 的各方面进行测试和说明。 测试说明 环境介绍 服务器环境: 三台服务器 1 :MySQL实例 (3306是orch的后端数据库,3307是MySQL主从架构「开启 GTID 」) Master : 192.168 . 163.131 : 3307 Slave : 192.168 . 163.132 : 3307 Slave : 192.168 . 163.133 : 3307 2 :hosts (etc/ hosts): 192.168 . 163.131 test1 192.168 . 163.132 test2 192.168 . 163.133 test3 这里需要注意的是,orch检测主库宕机依赖从库的IO线程(本身连不上主库后,还会通过从库再去检测主库是否异常),所以默认change搭建的主从感知主库宕机的等待时间过长,需要 需要稍微改下: change master to master_host= ' 192.168.163.131 ' ,master_port= 3307 ,master_user= ' rep ' ,master

数据库集群 MySQL主从复制

纵饮孤独 提交于 2020-03-25 11:42:58
MySQL主从复制 本节内容我们联系使用 MySQL的主从复制功能配置Master和Slave节点,验证数据MySQL的数据同步功能。 因为要使用多个 MySQL数据库,所以不建议在电脑上安装多个MySQL数据库,最好的办法是使用多个绿色版的MySQL数据库。 MariaDB数据库是MySQL创始人Michael 创建的 MySQL重要分支。由于Oracle 持有了 MySQL的版权,MySQL存在闭源的隐患,加之Oracle对MySQL的更新不太重视,所以业界许多公司纷纷采用了完全开源的MariaDB数据库。MariaDB建立在MySQL5.5版本上,所以MariaDB与MySQL的兼容性非常好,并且性能上也做出了很大的优化,社区活跃,软件版本更新迅速,包括谷歌、Facebook等企业纷纷改用MariaDB数据库。 Master数据库 首先把安装到C:\Program Files 里面的 MariaDB目录复制一份,放置的路径没有要求,但是尽量把数据库放在C盘或者D盘上面,改名DB1。因为这两个盘符的空间处在硬盘磁碟的外圈,所以线速度很快,数据读写速度也很理想。 DB1将要当做主库使用,创建my.ini文件,然后编辑文件内容。 [mysqld] # 数据库字符集 character_set_server = utf8 #MySQL 主机名 ( 只可以是数字 ) server_id

【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

微笑、不失礼 提交于 2020-03-25 01:09:23
01 概述 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 OLTP 场景下通常要求具有很高的并发性。并发事务实际上取决于资源的使用状况,原则上应尽量减少对资源的锁定时间,减少对资源的锁定范围,从而能够尽量增加并发事务的数量,那么影响并发的因素有哪些呢?本文将从巨杉分布式数据库本身的机制以及隔离级别、数据库锁、参数、及实际例子进行详解,读完本文将对巨杉数据库并发性与锁机制有一个初步的了解。 02 隔离级别与并发性 在单用户环境中,每个事务都是顺序执行的,而不会遇到与其他事务的冲突。但是,在多用户环境下,多个事务并发执行。因此每个事务都有可能与其他正在运行的事务发生冲突。有可能与其他事务发生冲突的事务称为交错的或并行的事务,而相互隔离的事务称为串行化事务,这意味着同时运行它们的结果与一个接一个连续地运行它们的结果没有区别。在多用户环境下,在使用并行事务时,会发生四种现象: 丢失更新:这种情况发生在两个事务读取并尝试更新同一数据时

【巨杉数据库SequoiaDB】巨杉 Tech | SequoiaDB SQL实例高可用负载均衡实践

不羁岁月 提交于 2020-03-25 00:59:08
1 前言 在应用程序中,应用配置连接的数据库IP地址和端口号都是固定一个的,当所属IP地址的服务器宕机后,需要人为手工更改IP地址切换数据库服务器。同时当应用接收到成千上万的并发 http 请求时,会导致服务器消耗大量系统资源,轻则响应速度降低,严重的甚至会引发宕机。 为了充分合理的利用服务器资源,提高数据服务的性能和稳定性,在较低成本的前提下,保证在部分服务器宕机或发生故障的情况下不影响业务的正常运作。本文主要介绍 Nginx+Keepalived 连接 SequoiaDB -MySQL 实例的高可用方案与实践。 2 SequoiaDB 数据库介绍 SequoiaDB 巨杉数据库是一款完全自研的金融级分布式数据库产品,采用计算与存储分离架构,由数据库实例层和数据库存储引擎层组成。数据库实例层负责解析请求并转发至数据库存储引擎层处理,同时会将数据库存储引擎层的响应结果反馈给应用层,数据库实例层支持包括针对结构化数据的 MySQL 实例、PostgreSQL 实例、SparkSQL 实例,以及针对非结构化数据的 S3 和 PosixFS 文件系统的对象存储实例实例,而数据库存储引擎层是由 SequoiaDB 巨杉数据库的协调节点、编目节点和数据节点组成。该数据库集群架构能方便用户实现由传统数据库到巨杉数据库的无缝迁移,减少应用开发者的开发和学习成本。 2.1 SequoiaDB

Cross-region—cloud DB for MySQL High Availability

蓝咒 提交于 2020-03-24 04:54:09
首先,我们先明确地域(region)和可用区(zone)概念,云数据库托管机房分布在全球多个位置,这些位置都由地域和可用区构成。每个地域都是一个独立的地理区域。而每个地域内都有一组电力和网络互相独立的物理数据中心,这个称为可用区。一个可用区出现故障,是不会影响另一个可用区,即可用区间故障相互隔离,不出现故障扩散。同一地域下的可用区通过低时延的内网链路相连。通常会建议用户在设计系统时考虑将资源放置在不同可用区以屏蔽单个可用区故障导致的服务不可用状态,所以多可用区部署可帮助保护数据库以防止可用区故障导致数据库不可访问。 这里要明确的是,无论数据库集群中的实例是否跨多个可用区,每个云数据库 MySQL 高可用版的架构都有实时热备的备机提供数据库的高可用,比如地域选择为华东,可用区为上海三区,数据复制方式为强同步模式,一主两备组成集群,主备都在同一个可用区。 重点来了,云数据库MySQL支持跨可用区部署,主库和备库分处于同城不同可用区,通过腾讯专线网络进行实时的数据复制。跨可用区部署特性为云数据库 MySQL 提供了多可用区容灾的能力,主机和备机切换过程对用户透明, 如果出现主数据库实例故障或可用区中断,主数据库实例会自动切换到备用副本,这避免了单 IDC 部署的运营风险。 选择“多可用区域”,主库在上海一区,两个备库在上海二区,注意主备库分处不同可用区,可能会增加2~3ms的同步网络延迟

Replication集群搭建

梦想的初衷 提交于 2020-03-23 22:09:29
Repliaction是mysql自带数据库同步机制 mysql通过读取另外一个数据库的bin_log日志实现数据同步,数据同步是单向的,从主节点到从节点。 下载第三方镜像 docker pull mishamx/mysql docker tag mishamx/mysql RP docker rmi mishamx/mysql docker run -d -p 9003:3306 --name rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_REPLICATION_USER=backup -e MYSQL_REPLICATION_PASSWORD=123 -v rnv1:/var/lib/mysql --privileged --net=swarm_mysql rep 创建从节点 docker run -d -p 9003:3306 --name rn2 -e MYSQL_MASTER_HOST= rn1 -e MYSQL_MASTER_PORT=3306 -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_REPLICATION_USER=backup -e MYSQL_REPLICATION_PASSWORD=123 -v rnv1:/var/lib/mysql -