MySQL——数据库日志&主从复制&备份与恢复
写在最后
一些体会写出来:
享受工作,享受学习,享受娱乐
知识系统
阅读大量书
一路走来回头看时,一切都很清晰
珍惜时间
其它数据库日志1. MySQL支持的日志1.1 日志类型MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志和慢查询日志,这也是常用的4种。MySQL 8又新增两种支持的日志:中继日志和数据定义语句日志。使用这些日志文件,可以查看MySQL内部发生的事情。
慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
二进制日志:记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据的无损失恢复。
中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制 ...
MySQL——事务&事务日志&锁&MVCC
事务基础知识1. 数据库事务概述1.1 基本概念事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。
1.2 事务的ACID特性
原子性(atomicity):
原子性是指事务是一个不可分割的工作单位,要么全部提交,要么全部失败回滚。
一致性(consistency):
一致性是指事务执行前后,数据从一个合法性状态变换到另外一个合法性状态。这种状态是语义上的而不是语法上的,跟具体的业务有关。
隔离型(isolation):
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability):
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故 ...
MySQL——索引优化&性能分析&数据库调优
索引的创建与设计原则索引的声明与使用1.1 索引的分类
从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。
按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。
按照作用字段个数进行划分,分成单列索引和联合索引。
1.2 创建索引12CREATE TABLE table_name [col_name data_type] [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY] [index_name] (col_name [length]) [ASC | DESC]
UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、全文索引和空间索引;
INDEX与KEY为同义词,两者的作用相同,用来指定创建索引;
index_name指定索引的名称,为可选参数,如果不指定,那么MySQL默认col_name为索引名;
col_name为需要创建索引的字段列,该列必须从数据表中定义的多个列中选择;
length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;
ASC或DESC指定 ...
MySQL——逻辑架构&存储引擎&InnoDB数据页结构
写在前面MySQL高级路线
MySQL架构篇
Linux下MySQL的安装与使用
MySQL的数据目录
用户与权限管理
逻辑架构
存储引擎
InnoDB数据页结构
索引及调优篇
索引
性能分析工具的使用
索引优化与SQL优化
数据库的设计规范
数据库其他调优策略
事务篇
事务基础知识
MySQL事务日志
锁
多版本并发控制(MVCC)
日志与备份篇
其它数据库日志
主从复制
数据库备份与恢复
Linux下MySQL使用
1. 安装前说明1、查看是否安装过MySQL
如果你是用rpm安装, 检查一下RPM PACKAGE:
1rpm -qa | grep -i mysql # -i 忽略大小写
检查mysql service:
1systemctl status mysqld.service
2、MySQL的卸载
关闭 mysql 服务
1systemctl stop mysqld.service
查看当前 mysql 安装状况
123rpm -qa | grep -i mysql# 或yum list i ...
MySQL——其他数据库对象&8.0新特性
视图数据库对象与视图的理解
1、视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。
2、视图
视图是一种 虚拟表 ,本身是 不具有数据 的,占用很少的内存空间,它是 SQL 中的一个重要概念。
视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
视图的创建和删除只影响视图本身,不影响对应的基表。但是当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应地发生变化,反之亦然。
视图,是向用户提供基表数据的另一种表现形式。通常情况下,小型项目的数据库可以不使用视图,但是在大型项目中,以及数据表比较复杂的情况下,视图的价值就凸显出来了,它可以帮助我们把经常查询的结果集放到虚拟表中,提升使用效率。理解和使用起来都非常方便。
12345678910111213141516171819+ 常见的数据库对象 + 表 + 数据字典 + 系统表 + 约束 + 保证数据完整性 + 视图 + 一个或多个数据表里的数据的逻辑显示 + 索引 + 提高查询性 ...
MySQL——DDL&DML&DCL使用篇
创建和管理表写在前面在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
因为从系统架构的层次上看,MySQL 数据库系统从大到小依次是 数据库服务器
、 数据库 、 数据表 、数据表的行与列 。
123456789101112131415161718192021222324252627+ 数据存储的过程 + 创建数据库 + 确认字段 + 创建数据表 + 插入数据+ 标识符命名规则 + 数据库名、表名、字段名 + 长度、字符限制 + 不能同名、没有保留字限制 + 保证字段名、类型一致性+ 创建和管理数据库 + 创建 + CREATE DATABASE (IF NOT EXISTS) xxx + 字符集 + 判断存在 + 管理 + 查看当前连接中的数据库 + SHOW DATABASES + 使用数据库 + USE xxx ...
MySQL——多表查询&聚合函数&子查询
写在前面 - MySQL学习1、针对开发工程师、DBA、运维
mysql服务器的安装配置
SQL编程(自定义函数、存储过程、触发器、定时任务)
数据库索引建立
SQL语句优化
数据库内部结构和原理
数据库的性能监控分析与系统优化
各种参数常量设定
数据库建模优化
主从复制
分布式架构搭建、垂直切割和水平切割
MyCat
数据迁移
容灾备份和恢复
对开源数据库进行二次开发
2、技术骨干、架构师则往往需要对底层原理吃透,数据库事务 ACID 是如何实现的?何时命中索引、何时不能,为什么?分布式场景下数据库怎么优化才能保持高性能
3、精通数据库。精通意味着:
第一形成知识网,更灵活地应对突发问题;
第二底层原理要懂,懂了才能更自由地应对复杂多变的业务场景。
4、对于知识,是需要 认真 和 讲究逻辑 的。希望这份认真、严谨在每个细节都能体会到。希望能感受到这种思维方式的美。具备优秀的思维能力 才是在未来可以迁移的能力,如果只是学习一些命令,则很快会过时, 思维能力 和 学习能力 的提升才是不会变的东西。
数据库概述为什么要使用数据库持久化(persistence):把数据保存到可掉电式存储 ...
算法——谷歌、微软、亚马逊等面试题
二叉树333、最大BST子树
123456789101112+ 找到最大二叉搜索树子树+ 自顶向下(递归实现) + 如果根节点不是BST + 方法:判断root树是否为BST + 方法:节点计数 + 递归左子树、右子树,返回max+ 递归重要的是想清楚方法的功能+ 自底向上(后序遍历) + 如果下面子树不是BST + 则所有父节点都不是BST + 父节点的另一子树不一定 + 结合info信息
12345678910111213141516171819202122+ 自底向上:从底部开始向上,记录收集信息 + 原理(向上递推) + 左子树是BST,右子树也是BST,root符合条件 + root也是BST + 利用子树的信息,向上递推 + 准备 + info类 + 最大BST子树的:根节点、节点数量、node的最大最小值 + 实现 + 返回根节点的info信息(递归) ...
算法——贪心算法&分治&递归&回溯&动态规划
贪心算法简介1、贪心策略,也称为贪婪策略。
每一步都采取当前状态下最优的选择(局部最优解),从而希望推导出全局最优解。
2、贪心的应用:
哈夫曼树
最小生成树算法:Prim、Kruskal
最短路径算法:Dijkstra
练习-最优装载问题(加勒比海盗)
贪心策略:每次选择最轻的上去(局部最优)
练习-零钱兑换
贪心策略:每次最优选择最大的(每次最优选择)
结果不一定全局最优。
练习-01背包
贪心策略:
1、优先价值(价值最大)
2、优先重量(重量最轻)
3、优先价值密度(价值/重量)
12345678910111213141516171819+ 实现 + 准备 + 物品类(价值、重量、价值密度) + 物品数组(sort:根据价值密度排序!!!) + 总重量、当前重量、总价值、装入物品list + 遍历物品数组 + 装入物品(更新背包重量、价值、物品等) + 结束条件:装满+ 动态规划:严谨做法+ 贪心算法很多时候作为辅助(直接用不一定是最优的)!!!+ 哈夫曼树 + 贪心策略:每次选择最小的两 ...
算法——百度、阿里、腾讯、京东等面试题
字符串面试题01.09.字符串轮转
1234567891011+ 旋转词 + 特点 + 拼接两个相同的词 + 滑动窗口,每个窗口都包含全部词 + 判断是否为其子串 + contains()方法 + KMP+ 两个数据结构拼接 + 旋转 + 链表相交 ...
572、另一个树的子树
12345678910111213141516171819202122232425262728293031+ 判断一棵树是否是另一棵树的子树 + 遍历(非层次遍历)+ 暴力 + 找到子树 + 判断是否所有子节点都相等+ 二叉树序列化 + 遍历,序列化为字符串 + 如果序列化后是其子串 + 则为其子树+ 序列化 + 每个节点结束后加!(连在一起位数都无法判断) + 空节点值为#(保证构建的二叉树唯一) + 只有一个后序遍历无空节点,构建无数棵树+ 如何反序列化?+ 实现 + 两个树序列化 + ...