mysql高级

时间:2021-09-24 06:34:43   收藏:0   阅读:45

1.MySQL架构组成

技术分享图片

 

技术分享图片

1. 通过客户端/服务器通信协议与 MySQL 建立连接
2. 查询缓存,这是 MySQL 的一个可优化查询的地方,如果开启了 Query Cache 且在查询缓存过程中查询到完全相同的 SQL 语句,则将查询结果直接返回给客户端;如果没有开启Query Cache 或者没有查询到
完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成解析树。
3. 预处理器生成新的解析树。
4. 查询优化器生成执行计划。
5. 查询执行引擎执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的API 接口与底层存储引擎缓存或者物理文件的交互情况,得到查询结果,由MySQL Server 过滤后将查询结
果缓存并返回给客户端。若开启了 Query Cache,这时也会将SQL 语句和结果完整地保存到 QueryCache 中,以后若有相同的 SQL 语句执行则直接返回结果。
-- 查看错误日志文件路径
show variables like ‘log_error‘;
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
-- 慢查询日志文件路径
show variables like ‘slow_query_log_file‘;
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
-- bin log 日志文件 需要在 my.cnf 中配置
log-bin=/var/log/mysql-bin/bin.log
server-id=2
-- 查看 relay log 相关参数
show variables like ‘%relay%‘;

2.MySQL的备份与恢复

技术分享图片

 

技术分享图片

 

 

 

  完整备份 差异备份 增量备份
备 份 方 法 备份所有文件 一次全备份后,备份与全
备份差异的部分
一次全备份后,备份与上次备
份的差异部分
 
备 份 速 度 最慢 较快 最快  
恢 复 速 度 最快 较快 最慢  
空 间 要 求 最多 较多 最少  
优 势 最快的恢复速度, 只需要上
一次完全备份就能恢复
相比增量,更快也更简单
并且只需要最近一次的
完全备份
和最后一次的差异备份
就能恢复
备份速度快,较少的空间需求,没有重复的备份文件  
劣 势 最多的空间需求
大量重复的备份
较慢的备份速度,仍然会
存在许多的备份文件
最慢的恢复速度,恢复需要最近一次完全备份和全部增量备份  
1. 关闭SELinux,修改 selinux 配置文件,将SELINUX=enforcing改为SELINUX=disabled,保存后退出
vim /etc/selinux/config
SELINUX=disabled


2. 重启
reboot # 重启命令

3. 找到MySQL数据文件位置,停止MySQL服务
SHOW VARIABLES LIKE ‘%dir%‘;
-- 结果显示, 数据目录就是datadir的所在位置,即 /var/lib/mysql/
service mysqld stop -- 停止mysql

4.进入到 /mysql 目录, 执行打包命令 将数据文件打包备份
cd /var/lib/ # 进入其上级目录
tar jcvf /root/backup.tar.bz2 mysql/ # 打包压缩到 root目录下

5.  删除掉数据目录下的所有数据
-- 删除原目录
rm -rf /var/lib/mysql/

6. 恢复数据 (使用tar命令)
-- 解压
tar jxvf backup.tar.bz2 mysql/
-- 把备份的文件移动到/var/lib/里面去替代原来的mysql
mv /root/mysql/ /var/lib/

7.  启动MySQL, 然后登陆MySQL,查看数据是否丢失, 如果数据正常代表冷备成功
service mysqld start

技术分享图片

 

 

## 备份单个数据库
1. 创建文件夹 , 备份数据
mkdir databackup
cd databackup
mysqldump -uroot -p lagou_edu > lagou_edu.sql

2.模拟数据丢失,删除数据库,然后重新创建一个新的库
DROP DATABASE lagou_edu;
CREATE DATABASE lagou_edu CHARACTER SET ‘utf8‘;

3.恢复数据
cd databackup
mysql -uroot -p lagou_edu < lagou_edu.sql


## 备份数据库的某些表
1. 备份数据表
[root@localhost databackup]# mysqldump -uroot -p lagou_edu course course_lesson > backupTable.sql

2. 模拟数据丢失,删除数据表
DROP TABLE course;
DROP TABLE course_lesson;

3. 恢复数据
mysql -uroot -p lagou_edu < backupTable.sql

##直接将MySQL数据库压缩备份
1. 备份数据
mysqldump -uroot -p lagou_edu | gzip > lagou_edu.sql.gz

2. 模拟删除
DROP DATABASE lagou_edu;
CREATE DATABASE lagou_edu CHARACTER SET ‘utf8‘;

3 .恢复数据
gunzip < lagou_edu.sql.gz | mysql -uroot -p lagou_edu

 

3.MySQL查询和慢查询日志分析

技术分享图片技术分享图片

 

 

 

1. FORM子句 : 左右两个表的笛卡尔积
2. ON: 筛选满足条件的数据
3. JOIN: 如果是 inner join 那就正常,如果是 outer join 则会添加回来上面一步过滤掉的一些行
4. WHERE: 对不满足条件的行进行移除, 并且不能恢复
5. GROUP BY: 分组后只能得到每组的第一行数据,或者聚合函数的数值
6. HAVING: 对分组后的数据进行筛选
7. SELECT: 执行select操作,获取需要的列。
8. DISTINCT: 去重
9. ORDER BY: 排序
10. LIMIT:取出指定行的记录, 并将结果返回。

4.MySQL存储引擎

特性 InnoDB MyISAM MEMORY
存储限制 64TB
支持事务 支持 不支持 不支持
锁机制 行锁 表锁 表锁
B-tree索引 支持 支持 支持
哈希索引 支持 不支持 支持
外键支持 支持 不支持 不支持
存储空间消耗
内存消耗
批量写入数据消耗

 

5.MySQL索引优化

6.MySQL锁机制

7.MySQL高可用设计

8.MySQL集群

数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互

原文:https://www.cnblogs.com/forever-fate/p/15312396.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!