
MySQL
文章平均质量分 79
MySQL
我的紫霞辣辣
须知少时凌云志 曾许人间第一流
展开
-
GTID主从复制 MHA高可用 binlogserver实时备份 Atlas中间件读写分离
GTID主从复制什么是GTID从MySQL 5.6.2 开始新增了一种基于 GTID 的复制方式,用以替代以前传统的复制方式,到MySQL5.6.10后逐渐完善。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力,那么它如何做到的呢?要想在分布式集群环境中不丢失事务,就必须为每个事务定制一个全局唯一的ID号,并且该ID是趋势递增的,以此我们便可以方便地顺序读取、不丢事务,其实GTID就是一种很好的分布式ID实践方案,它满原创 2021-07-25 20:09:37 · 1015 阅读 · 5 评论 -
MySQL数据库 主从同步的多种架构 数据一致性问题解决方案
主从复制的架构主备架构,只有主库提供读写服务,备库仅留作备用高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备库。这个过程对业务层是透明的,无需修改代码或配置。高性能分析:读写都操作主库,很容易产生瓶颈。大部分互联网应用读多写少,读会先成为瓶颈,进而影响写性能。另外,备库只是单纯的备份,资源利用率50%,这点方案二可解决。一致性分析:读写都操作主库,不存在数据一致性问题。扩展性分析:无法通过加从库来扩展读性能,进而提高整体性能。可落地分析:两点原创 2021-07-24 21:25:19 · 1672 阅读 · 1 评论 -
MySQL数据库 主从同步
MySQL主从主从复制介绍什么是主从复制将主服务器的binlog日志复制到从服务器上执行一遍,达到主从数据的一致状态,称之为主从复制。一句话表示就是,主数据库做什么,从数据库就跟着做什么。为何要做主从为实现服务器负载均衡/读写分离做铺垫,提升访问速度...原创 2021-07-21 21:09:34 · 654 阅读 · 1 评论 -
MySQL数据库 快速导出和导入 迁移
快速导出和导入在公司中,如果运营或者产品手里有几千万甚至几亿条数据,要求你将其导入数据中,请问如何做?如果你依据运营或产品交给你的数据文件直接使用insert语句,一行一行地批量插入,那至少需要1-2天时间才能插入完毕,此时我们可以用load data infile语句。 load data infile语句可以从一个文本文件中,将数据以很高的速度读入一个表中。MySQL官方文档也说明了,该方法比一次性插入一条数据性能快20倍。此外,mysql也支持快速导出语句select into outfile原创 2021-07-21 16:07:17 · 4706 阅读 · 2 评论 -
MySQL数据库 数据备份与恢复
一般情况下, 我们需要备份的数据分为以下几种数据二进制日志, InnoDB事务日志代码(存储过程、存储函数、触发器、事件调度器)服务器配置文件备份的类型按照备份时数据库的运行状态,可以分为三种1. 冷备:停库、停服务来备份即当数据库进行备份时, 数据库不能进行读写操作, 即数据库要下线2. 温备:不停库、不停服务来备份,会(锁表)阻止用户的写入即当数据库进行备份时,数据库的读操作可以执行, 但是不能执行写操作3. 热备(建议):不停库、不停服务来备份,也不会(锁表)阻止.原创 2021-07-20 18:07:21 · 873 阅读 · 1 评论 -
MySQL数据库 日志管理
MySQL数据库日志分类错误日志首次启动会提示错误日志位置# 查询错误日志存放路径[root@db01 ~]# mysqladmin -uroot -p123 variables | grep -w log_error或者[root@db01t ~]# mysql -uroot -p123mysql> show variables like '%log_error%';配置错误日志(默认就是启用的)相当于把/var/log/messages(系统日志)中mysql服务端原创 2021-07-19 20:06:05 · 483 阅读 · 0 评论 -
MySQL数据库读现象 数据库锁机制 Innodb存储引擎行级锁
数据库读现象数据库管理软件的“读现象”指的是当多个事务并发执行时,在读取数据方面可能碰到的问题,包括有脏读、不可重复读和幻读。脏读事务A更新了一行记录的内容,但是并没有提交所做的修改。事务B读取更新后的行,然后事务A执行回滚操作,取消了刚才所做的修改。此时事务B所读取的行就无效了,称之为脏数据。对于一些数据库管理软件会自带相应的机制去解决脏读,所以该实验无法掩饰。不可重复读事务A读取一行记录,紧接着事务B修改了事务A刚才读取的那一行记录并且提交了。然后事务A又再次读取这行记录,发现原创 2021-07-15 21:56:02 · 266 阅读 · 1 评论 -
Innodb存储引擎 事务
事务介绍什么是事务事务就相当于一个盛放sql语句的容器。事务中的sql语句要么全部执行成功,要么所有修改的操作全部回滚(undo log)到原来的状态,即所有的sql语句全部执行失败。为什么需要事务为了保证数据的安全、一致性为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。事务的四大特性这四个特性通常称为ACID特性,原创 2021-07-15 16:01:21 · 146 阅读 · 0 评论 -
Innodb存储引擎 索引优化查询管理
MySQL索引优化管理实验环境索引优化的实验效果需要在一张表中有海量数据的情况下,实验效果才会比较明显,我们在实验前需要先准备一张300万条数据的表。# 创建表格create table t1(id int,name varchar(20),gender char(6),email varchar(50));# 创建存储过程,插入3000000条数据delimiter $$ create procedure auto_insert1()BEGIN declare原创 2021-07-14 19:22:13 · 266 阅读 · 0 评论 -
Innodb存储引擎 索引原理详解
索引介绍什么是索引?索引是存储引擎中一种数据结构,或者说数据的组织方式,又称之为键key,是存储引擎用于快速找到记录的一种数据结构。为数据建立索引就好比是为书建目录,或者说是为字典创建音序表,如果要查某个字,如果不使用音序 表,则需要从几百页中逐页去查。为何要用索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的、也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然 是重中之重。说起加速查询,就不得不提原创 2021-07-13 15:34:03 · 694 阅读 · 0 评论 -
Innodb存储引擎 表空间详解
Innodb存储引擎表空间架构图表空间由三种段构成叶子节点数据段 : 即数据段非叶子节点数据段 : 即索引段回滚段表空间分类表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。表空间的管理模式的出现是为了数据库的存储更容易扩展,关于表空间我们还需要详细说一下mysql 5.5版本以后出现共享表空间概念mysql5.6版本中默认的是独立表空间mysql5.7版本新特性共享临时表空间共享表空间概念类似于LVM逻辑卷,是动态扩展的。默认只有原创 2021-07-12 19:03:20 · 803 阅读 · 2 评论 -
MySQL存储引擎 lnnoDB的逻辑架构详解 InnoDB存储引擎执行流程
存储引擎MySQL组织架构连接层验证用户的身份,用户名密码是否匹配提供两种连接方式(TCP/IP连接、socket连接)连接层提供了一个与sql层交互的线程SQL层接收连接层传过来的SQL语句验证执行的SQL语法验证SQL的语义(DDL,DML,DQL,DCL)解析器:解析SQL语句,生成执行计划优化器:将解析器传来的执行计划选择最优的一条执行执行器:将最优的一条执行6.1 与存储引擎层建立交互的线程6.2 将要执行的sql发给存储引擎层如果有缓存,则走缓存原创 2021-07-11 16:06:32 · 420 阅读 · 0 评论 -
MySQL数据库 权限管理
权限管理mysql库下的授权表linux系统的用户作用是:登陆系统管理系统文件mysql数据库管理软件用户的则作用是:登陆MySQL数据库管理库与表等数据库对象mysql数据库管理软件将权限信息都存放于mysql库下,该库下有一系列授权表,权限信息都存放于这一系列表中,我们挑几个重点介绍一下mysql库下的授权表及其放行权限的范围 1、mysql.user 针对所有数据、所有库下所有表、以及表下的所有字段 2、msyql.db 只针对某原创 2021-07-10 16:29:51 · 1498 阅读 · 1 评论 -
视图 触发器 函数 流程控制 存储过程 SQL注入问题
视图视图就是通过查询得到一张虚拟表(非真实存在),然后保存下来,下次可以直接使用,用户使用时直接使用【视图表名】即可获取结果集。视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用。使用视图的注意点:创建视图在硬盘上只会有表结构,没有表数据,数据并没有存在硬盘(数据还是来自之前的表)视图一般只用来查询,里面的数据不要进行修改,可能会影响真正的表# 创建一张数据表select *原创 2021-07-05 21:32:26 · 216 阅读 · 0 评论 -
多表查询
多表查询准备员工表和部门表# 部门表create table dep (id int,name varchar(20));# 员工表create table emp (id int primary key auto_increment,name varchar(20),sex enum("male","female") not null default "male",age int,dep_id int);# 插入数据insert into dep values(20原创 2021-07-04 17:40:05 · 182 阅读 · 0 评论 -
单表操作(修改表字段 复制表 表数据迁移) 单表查询
修改表字段create table t1(id int);desc t1;+-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| id | int(11) | YES | | NULL | |+-------+--原创 2021-07-02 10:36:48 · 230 阅读 · 0 评论 -
SQL外键foreign key 表与表之间的三种关系
表与表之间的三种关系多对一关系表注意事项:一对多表关系 外键字段建在多的一方。在创建表的时候 一定要先建被关联表。在录入数据的时候 也必须先录入被关联表。# 创建表先创建被关联表(班级表)create table class( id int primary key auto_increment,name varchar(16),room int);create table student(id int primary key auto_increment,name var原创 2021-07-01 19:52:12 · 480 阅读 · 0 评论 -
SQL语句建表 约束条件
约束条件插入数据的时候可以指定字段create table t1(id int, name char(16));insert into t1(name,id)values("nana",1);select * from t1;+------+------------------+| id | name |+------+------------------+| 1 | nana |+------+----------------原创 2021-07-01 13:42:26 · 561 阅读 · 1 评论 -
数据库存储引擎 SQL语言基本数据类型
存储引擎什么是存储引擎存储引擎<==============>表视频播放器<=============>mp4 文本编辑器<=============>txt针对不同的数据应该有对应的不同的处理机制来存储存储引擎就是不同的处理机制...原创 2021-06-30 21:42:07 · 219 阅读 · 3 评论 -
MySQL多实例部署
Mysql多实例部署Nginx多实例就是多个配置文件mysql多实例:多个数据目录多个端口多个socket文件多个日志文件1. 创建多个数据库进程的数据目录mkdir -p /data/{3307,3308,3309}2. 准备多个进程的配置文件vim /data/3307/my.cnf[mysqld]basedir=/service/mysqldatadir=/data/3307/dataport=3307socket=/data/3307/mysql.sockl原创 2021-06-30 21:14:05 · 230 阅读 · 0 评论 -
源码安装部署MySQL数据库 二进制安装部署MySQL数据库 yum安装数据库
1.源码安装数据库(自定义目录安装)1)上传或下载代码包rz mysql-5.6.46.tar.gz2)安装依赖yum install -y ncurses-devel libaio-devel gcc gcc-c++ glibc cmake autoconf openssl openssl-devel3)解压tar xf mysql-5.6.46.tar.gz4)创建目录mkdir /service5)生成cmakecd mysql-5.6.46/cmake . -DCMA原创 2021-06-30 10:27:51 · 261 阅读 · 1 评论 -
数据库管理软件基础 SQL语言增删改查
数据库管理软件的由来1、程序所有的组件就不可能运行在一台机器上如果程序所有的组件全部运行在一台机器上,那么这台机器一旦挂掉就意味着整个软件的崩溃,程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。2、数据安全问题我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但原创 2021-06-29 21:15:36 · 342 阅读 · 1 评论