mysql集群

MariaDB集群配置(主从和多主)

两盒软妹~` 提交于 2019-11-29 07:52:50
1.mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建。 主可以将数据同步到从上,但是从不能将数据同步到主上。 二进制日志这能一条一条的写入,因此数据的同步会有延迟。 异步优点:性能好,效率高 缺点:数据的安全性低 同步优点:数据的安全性高 缺点:效率低 mariadb的复制过程: 1.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); 2.slave会生成I/O线程和SQL线程,I/O线程会读取master的二进制日志,master会生成一个dump线程将数据返回给slave端,存储到slave的中继日志(relay log)中。 3.slave端的SQL thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。 面试会问到的 如果slave有多个,那么master端会生成许多的dump线程,这对于master端会造成很大的压力,为了解决这种问题我们可以这样解决:

详解MySQL主从复制实战 - 基于GTID的复制

ε祈祈猫儿з 提交于 2019-11-29 07:50:59
基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交的事务在集群中有一个唯一的ID。 在原来基于日志的复制中, 从库需要告知主库要从哪个偏移量进行增量同步, 如果指定错误会造成数据的遗漏, 从而造成数据的不一致. 而基于GTID的复制中, 从库会告知主库已经执行的事务的GTID的值, 然后主库会将所有未执行的事务的GTID的列表返回给从库. 并且可以保证同一个事务只在指定的从库执行一次。 GTID开启配置如下: SHOW VARIABLES LIKE '%GTID%'; 结果: 实战 1、在主库上建立复制账户并授予权限 基于GTID的复制会自动地将没有在从库执行的事务重放, 所以不要在其他从库上建立相同的账号. 如果建立了相同的账户, 有可能造成复制链路的错误. mysql> create user 'repl'@'172.%' identified by '123456'; 注意在生产上的密码必须依照相关规范以达到一定的密码强度, 并且规定在从库上的特定网段上才能访问主库. mysql> grant replication slave on *.* to 'repl'@'172.%'; 查看用户 mysql> select user,

MySQL复制以及调优

不打扰是莪最后的温柔 提交于 2019-11-29 07:25:43
一. 简介 MySQL自带复制方案,带来好处有: 数据备份。 负载均衡。 分布式数据。 概念介绍: 主机(master):被复制的数据库。 从机(slave):复制主机数据的数据库。 复制步骤: (1). master记录更改的明细,存入到二进制日志(binary log)。 (2). master发送同步消息给slave。 (3). slave收到消息后,将master的二进制日志复制到本地的中继日志(relay log)。 (4). slave重现中继日志中的消息,从而改变数据库的数据。 下面放一张经典的图片来说明这一过程: 二. 实现复制 实现复制有以下步骤: 1.设置MySQL主库的二进制日志以及server-id MySQL配置文件一般存放在/etc/my.cnf # 在[mysqld]下面添加配置选项 [mysqld] server-id=1 log-bin=mysql-bin.log server-id是数据库在整个数据库集群中的唯一标示,必须保持唯一。 重启MySQL。 注:如果MySQL配置文件中已经配置过此文件,则可以跳过此步。 2.新建复制账号 在主库里面新建用于从库复制主库数据的账号,并授予复制权限。 mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO user_name@'host'

基于【 MySql 】一 || 主从复制

久未见 提交于 2019-11-29 07:24:40
一、centos7安装mysql 1、 先检查系统是否装有mysql rpm -qa | grep mysql 2、 下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 如果报错: -bash: wget: command not found 需要安装一下插件: yum -y install wget 3、 安装完成后下载mysql的repo源,然后安装mysql-community-release-el7-5.noarch.rpm包 sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm 4、 安装MySQL sudo yum install mysql-server 5、 重置MySQL密码 mysql -u root 如果报以下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 原因是/var/lib/mysql的访问权限问题,需要执行以下命令即可。 chown root /var/lib/mysql/ 6、 重启MySQL服务 service

MYSQL性能调优

允我心安 提交于 2019-11-29 03:43:32
摘要 为了学习研究MySQL数据库在工作原理,深刻理解MySQL在企业运用时如何保证其高效运行。分别从表结构的优化,SQL语句的优化,存储引擎的选择,索引的优化以及现今MySQL的发展与其他企业级数据库的比较。介绍了从编码选择到数据类型的选择以及从整体的角度设计表结构。在SQL语句的选择和使用的介绍的时候,深入介绍了一些基本的使用原则以及在一般在使用过程中我们存在的误区以及如何解决这些问题。着重介绍了MySQL的几个存储引擎MyISAM、InnoDB和NDBCluster的差异以及各自的适用范围。有介绍了MySQL的索引的一些优化的建议以及高屋建瓴地阐述和比较了MySQL的优劣和发展态势。 前言 数据库作为应用作为广泛,地位极为重要的中间件应用,学习和使用数据库管理系统变得越来越重要。为了研究和总结对mysql数据库的学习结果,特别从数据表结构、sql语句优化、存储引擎的选择、索引的应用、以及mysql的比较总结对mysql技术做了一个比较全面升入的介绍。使用mysql的过程中,如何更好地使用与优化越来越重要,在这篇文章中就阐述。 第一章 表结构的优化 数据表是数据库的具体表现形式,设计优良的数据库拥有良好的表结构,者不单单指数据库的表需要满足范式结构,为了更有利于具体操作,表结构还需要实际的可扩展性,以便于做增删改查,又需要根据数据表的具体作用做出调节

MySQL之存储引擎

不想你离开。 提交于 2019-11-29 01:44:00
MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。 这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。 选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。 遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了 2.MySQL结构 MySQL架构总共四层

mysql补充

落花浮王杯 提交于 2019-11-29 00:31:35
mysql补充 mysql使用流程 开启服务端,mysqld或者net start mysql cmd下键入mysql -u root -p,输入设置好的密码,连接mysql客户端 show databases;展示所有的mysql仓库 创建一个库:create database CRM;然后show databases; 切换数据库使用use + 库名,例如:use crm; 在切换仓库下创建一张表,命令:create table student(id int,name char(10),age int); 再执行show tables;就可以看到有了一个student表 查看一下这个表里的数据select * from student; 接下来正常执行表的增删查改操作即可 mysql目录介绍 总结:其实这些库就是我们电脑上对应的文件夹,在mysql中显示为对应的库,来方便我们管理数据,而文件或者文件夹这种与硬盘打交道的事情就交给mysql了,我们只需要对mysql库中的数据进行操作就可以了 指令补充 show variables like "%char%"; # 查看字符集编码指令 mysql -h 127.0.0.1 -P 3306 -u root -p # MySQL客户端连接服务端时的完整指令 show variables like "storage_engine%";

基于Docker的Mysql Cluster集群

拥有回忆 提交于 2019-11-29 00:03:43
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker创建Cluster步骤 实例目标:一个管理节点,二个数据节点,二个mysqlserver节点 Create a docker network docker network create cluster — subnet=192.168.0.0/16 修改管理节点的集群配置文件 从https://github.com/mysql/mysql-docker/tree/mysql-cluster下载对应版本的my-cluster.cnf 在结尾新增如下配置, 目的是增加一个mysqlserver节点 [mysqld] NodeId=5 hostname=192.168.0.11 Create the manager node -v 参数自行调整 docker run -d --net=cluster --name=management1 --ip=192.168.0.2 -v C:\docker\mysql\mysql-cluster.cnf:/etc/mysql-cluster.cnf mysql/mysql-cluster ndb_mgmd Create the data nodes

mysql储存引擎

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

MySQL主从复制

余生长醉 提交于 2019-11-28 22:39:35
1. 简介   随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。   MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 下图就描述了一个多个数据库间主从复制与读写分离的模型(来源网络):   在一主多从的数据库体系中,多个从服务器采用异步的方式更新主数据库的变化,业务服务器在执行写或者相关修改数据库的操作是在主服务器上进行的,读操作则是在各从服务器上进行。如果配置了多个从服务器或者多个主服务器又涉及到相应的负载均衡问题,关于负载均衡具体的技术细节还没有研究过,今天就先简单的实现一主一从的主从复制功能。 1.1 为什么要做主从复制? 读写分离。在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。 做数据的热备