https://upload.jianshu.io/users/upload_avatars/9415503/6ac415b5-009a-4973-a794-ccade4c876b2.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240

Mysql索引

索引是什么?

索引是什么了,查阅了官方文档。官方文档写了索引的作用和没有索引会带来全表扫描,非常费时间。 Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows. 简单的说索引是提高查询速度。这个很好理解,就像是以前的英文词典,找单词如果没有前面目录的话,效率很低,得全文找一遍。

Mysql检测工具使用

一、mysqldumpslow工具使用

1.1、修改配置文件开启慢查询

mysql 开启慢查询

1
2
3
4
5
6
7
systemctl stop mysqld
echo -e "# 开启慢查询\nslow_query_log = 1\nslow_query_log_file = /var/lib/mysql/slow-query.log\nlong_query_time = 1\nlog_queries_not_using_indexes = 1" >>/etc/my.cnf
# 重启mysql
systemctl restart mysqld
# 登录mysql
mysql -uroot -pP@ssw0rd1
select sleep(1);

1.2、修改变量开启慢查询

1
2
3
set global slow_query_log='ON';
set global slow_query_log_file='/var/lib/mysql/logs/slow.log';
set global long_query_time=1;

使用mysqldumpslow 工具分析 慢查询日志

Mysql执行过程

Mysql 执行流程

https://tc.ctq6.cn/tc/mysql%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%20%282%29.jpg

大致流程描述:

  • MySQL客户端通过协议将SQL语句发送给MySQL服务器。
  • 服务器会先检查查询缓存中是否有执行过这条SQL,如果命中缓存,则将结果返回,否则进入下一个环节(查询缓存默认不开启)。
  • 服务器端进行SQL解析,预处理,然后由查询优化器生成对应的执行计划。
  • 服务器根据查询优化器给出的执行计划,再调用存储引擎的API执行查询。
  • 将结果返回给客户端,如果开启查询缓存,则会备份一份到查询缓存中。

流程图详解

连接器

连接器的主要功能如下:

Mysql备份与恢复

一、mysql冷备及恢复

1.1、冷备

1
2
3
4
5
# 停止mysql
mysqladmin -uroot -proot123 shutdown
# 拷贝数据文件
scp -r /data/mysql root@back ip:/root
cp -r /data/mysql /本地新目录

1.2、恢复

将已经备份的数据目录替换到原有的目录, 重启mysql服务

二、mysql热备及恢复

2.1、mysqldump备份及恢复

1、mysqldump 参数说明

Mysql基础命令02

一、Msql数据类型

1、整型

tinyint, 占 1字节 ,有符号: -128127,无符号位 :0255

smallint, 占 2字节 ,有符号: -3276832767无符号位 :065535

mediumint 占 3字节 ,有符号: -83886088388607,无符号位:016777215:

Mysql二进制安装

mysql linux环境下安装

一、创建mysql账户和数据目录

1
2
3
4
5
6
7
8
# 创建用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 创建数据目录
mkdir -p /data/mysql3306/{mysql,binlog,slowlog,tmp,log,run}
mkdir -p /usr/local/mysql
chown -R mysql. /data/mysql3306
chown -R mysql. /usr/local/mysql

二、mysql二进制下载

1
2
3
4
5
dir=`pwd`
cd $dir
yum install -y wget && wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
tar zxf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/src
cp -r /usr/local/src/mysql-5.7.26-linux-glibc2.12-x86_64/* /usr/local/mysql

三、初始化mysql

1
2
3
4
5
6
7
8
9
# 配置环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
# 初始化
mysqld --defaults-file=/data/mysql3306/config/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3306/mysql
# 配置ssl
mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data/mysql3306/mysql
# 手动启动
mysqld_safe --defaults-file=/data/mysql3307/config/my.cnf &

四、mysql自启动

1
2
3
cp mysqld.service /usr/lib/systemd/system/mysqld.service
systemctl enable mysqld
systemctl start mysqld
五、登录修改密码
1
2
3
4
more error.log | grep password
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Paswword1!';
flush privileges
六、mysql多实例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 初始化
mysqld --defaults-file=/data/mysql3307/config/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3307/mysql
mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data/mysql3307/mysql
mysqld --defaults-file=/data/mysql3307/config/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql3307/mysql
mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/data/mysql3307/mysql
# 启动
cp mysqld.service /usr/lib/systemd/system/mysqld3306.service
cp mysqld.service /usr/lib/systemd/system/mysqld3307.service
# 修改mysqld.service启动文件
Type=forking 改为 Type=sample
ExecStart启动命令改为/usr/local/bin/mysqld --defaults-file=/data/mysql3306/config/my.cnf
# 启动mysql
systemctl enable mysqld3306
systemctl start mysqld3306

mysql win下安装

1、下载 mysql5.7 版本 https://dev.mysql.com/downloads/mysql/

Mysql事务详解

Mysql 事务说明

Mysql 事务特点

1、ACID

  • Atomicity(原子性):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作。
  • Consistency(一致性):数据库总是从一个一致性状态转换到另一个一致状态。下面的银行列子会说到。
  • Isolation(隔离性):通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。注意这里的“通常来说”,后面的事务隔离级级别会说到。
  • Durability(持久性):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。(持久性的安全性与刷新日志级别也存在一定关系,不同的级别对应不同的数据安全级别。)

示例如下,银行转账为例

Mysql主从复制

一、mysql主从同步原理

Mysql主从复制也可以称为Mysql主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(realy log)中的SQL语句来实现复制功能。Mysql支持单向,双向,链式级联,异步复制,复制过程中一台服务器充当主库(master),而一个或者多个服务器充当从库(slave)

Prometheus_operator使用

Prometheus Operator 使用

安装

最新的版本官方将资源https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus迁移到了独立的 git 仓库中:https://github.com/coreos/kube-prometheus.git 克隆最新的代码: