MySQL
文章平均质量分 68
mysql学习记录
AF2DBA
这个作者很懒,什么都没留下…
展开
-
Debian10二进制安装MySQL5.7
下载mysql5.7二进制包略安装依赖apt install psmisc libaio1 libnuma1 libatomic1 libmecab2 libncurses5安装mysqluseradd -s /sbin/nologin -M mysqltar -zxf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mv /usr/local/mysql-5.7.35-linux-glibc2...原创 2022-04-17 22:56:39 · 545 阅读 · 0 评论 -
mysql表空间回收
回收方法 1. alter table tb_test engine=innodb; 2. optimize table tb_test; 3. gh-ost/pt-osc alter table tb_test engine=innodb 原理介绍MySQL5.6 开始采用 Inplace 方式重建表,Alter 期间,支持 DML 查询和更新操作,语句为 alter table t engine=innodb, ALGORITHM=inplace...原创 2021-10-27 16:54:57 · 1007 阅读 · 0 评论 -
Online DDL 和PT-OSC怎么选择
pt-osc无论是什么DDL SQL,都会新建新表来替换,不分DDL类型,但是执行期间允许DDL操作,而ONLINE DDL则分为了好几类DDL,有的DDL仅需修改元数据,有的DDL仅需在本身ibd文件上新建索引页,有的需要rebuild table,这三种类型执行期间支持DML操作,但是COPY TABLE 类型不支持DML操作。如果MySQL版本是5.6之前,不支持online ddl操作的,pt-online-schema-change是一个非常好的选择;如...原创 2021-09-07 15:12:36 · 242 阅读 · 0 评论 -
PMM 2.19安装
环境 :centos7安装pmm-server安装dockeryum install docker修改docker镜像源cat /etc/docker/daemon.json{"registry-mirrors":["https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}启动dockersystemctl start docker下载pmm-server:2.19镜像docke...原创 2021-07-07 15:01:03 · 351 阅读 · 0 评论 -
MySQL Online DDL 常用情况说明
常用操作 MySQL5.7 MySQL8.0 重建 表 复制方式 并行DML 只修改原数据 返回时间 重建 表 复制方式 并行DML 只修改元数据 返回时间 添加字段 是 INPLACE 是 否 等待返回 否* INPLACE 是 否 立即返回 删除字段 是 INPLACE 是 否 ..原创 2021-06-24 11:23:10 · 134 阅读 · 0 评论 -
MySQL MHA原理
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个m原创 2021-06-09 15:40:37 · 634 阅读 · 0 评论 -
MySQL 异步复制,半同步复制,组复制区别
MySQL异步复制master事务的提交不需要经过slave的确认,slave是否接收到master的binlog,master并不关心。slave接收到master binlog后先写relay log,最后异步地去执行relay log中的sql应用到自身。由于master的提交不需要确保slave relay log是否被正确接受,当slave接受master binlog失败或者relay log应用失败,master无法感知。这种方法的缺点是及时slave已经失败了,但是master无法感原创 2021-06-09 14:53:23 · 648 阅读 · 0 评论 -
Xtrabackup2.4.8安装(centos7)
安装依赖yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64下载安装包wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/tarball/percona-xtrabackup-2.4.8-Linux-x86_64.tar.gz解压安装tar -原创 2020-12-30 11:19:11 · 406 阅读 · 0 评论 -
Mysql8.0多实例安装(二进制)Centos7.4
下载二制包wgethttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz安装依赖yum install libaio添加用户useradd -s /sbin/nologin -M mysql解压安装tar -xJf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ln -s ...原创 2020-12-05 17:38:22 · 211 阅读 · 0 评论 -
Mysql多列索引分析
版本:mysql5.7.17create table test_index (c1 tinyint(1) not null default 0,c2 tinyint(1) not null default 0,c3 tinyint(1) not null default 0,c4 tinyint(1) not null default 0,c5 tinyint(1) not null default 0,index c1234(c1,c2,c3,c4));索引数据分布原创 2020-11-23 13:42:24 · 100 阅读 · 0 评论 -
Mysql where条件中IS NULL 是否走索引?
环境:mysql5.6数据量:900W表结构:CREATE TABLE `platform_comment_info` ( `id` bigint(18) unsigned NOT NULL AUTO_INCREMENT COMMENT '数据库主键', `kid` bigint(18) unsigned NOT NULL COMMENT '业务主键唯一标识', `tenant_id` varchar(32) DEFAULT NULL COMMENT '租户标识', `c...原创 2020-11-20 18:01:29 · 7189 阅读 · 1 评论 -
MySQL Explain 执行计划解释说明
一、ID列id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。二、select_type列simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary。且只有一个union:union连接的两个sel...原创 2020-11-20 17:56:40 · 194 阅读 · 0 评论 -
Mysql实现数据的简易加密解密
加密select hex(aes_encrypt("123456","key"));解密select aes_decrypt(unhex("BB96A7FC94AF2DC645F695A655CCE219"),"key");原创 2020-11-20 17:52:18 · 345 阅读 · 0 评论 -
Mysql 存储过程,触发器,函数,游标示例
示例##基本语法if 条件 then...elseif 条件 then ...else...end if ;while 条件 do...end while;##存储过程drop procedure if exists proc_temp_insert_data;DELIMITER ;;CREATE PROCEDURE proc_temp_insert_data(in number int) comment"临时插入数据"BEGIN declar.原创 2020-11-20 17:48:10 · 108 阅读 · 0 评论 -
Python将excel数据生成SQL
经常会接到开发或运营需要将一些excel表的数据导入到数据库,所以就写了这个脚本使用条件:1.数据要在顶格开始2.第一行是列名(英文)3.最好每个单元格都有值,不要有空值脚本如下:import xlrd # pip3 install xlrd==1.2.0class ExcelToSql(): def __init__(self,file_name,sheet_name,table_name): self.file_name = file_name.原创 2020-11-18 16:11:09 · 1612 阅读 · 1 评论 -
Mycat 分页查询过程及注意事项(坑点)
原始SQL:SELECT * FROM table_name WHERE type='xxx' ORDER BY create_time LIMIT 10000,1000;直接在mysql中执行:SELECT * FROM table_name WHERE type='xxx' ORDER BY create_time LIMIT 10000,1000;通过mycat执行:SELECT * FROM table_name WHERE type='xxx' ORDER BY create_time L原创 2020-11-17 18:06:43 · 3187 阅读 · 1 评论 -
Mysql运程备份(Xtrabackup),并限制网络速度
实操过程 源数据库服务器(192.168.1.101) 备份服务器(192.168.1.102) 环境 centos 7.4 mysql5.7 centos 7.4 数据库实例 3306 / 安装备份工具 Xtrabackup / 安装网络限速工具 yum install pv #如果不做网络限速的话,可以不用安装 / ssh免密登陆 ssh-keygen #全部回...原创 2020-11-17 17:50:52 · 2004 阅读 · 5 评论 -
Mysql 限制无条件更新或删除数据(sql_safe_updates)
哎,总是会有些误操作或代码bug(特别是动态SQL),会执行一些无条件(或无有效条件 where 1=1 )更新或删除操作,让人防不胜防,特别是在大表上发生这样的事故的时候,搞得人好心累。mysql有一个动态变量(sql_safe_updates),可以有效避免(不能完成避免)这种情况的发生。下面将对此变量进行一些测试:mysql5.7# 进行测试数据准备mysql> drop table IF EXISTS test_safe;Query OK, 0 rows affecte.原创 2020-11-13 14:39:34 · 1631 阅读 · 1 评论 -
Mysql循环删除或更新数据
使用前提:1.删除或更新数据时,需要使用索引条件,并且控制每次更新或删除的行数。2.更新后的数据不能再次被更新,可以通过where条件进行控制实现。python3脚本如下:from pymysql import connect as MysqlConn #pip3 install pymysql==0.9.3from datetime import datetimefrom time import sleepdef loop_delete_update(host,port.原创 2020-11-12 10:59:03 · 1793 阅读 · 1 评论 -
Mongodb与Mysql语法对比
对象对应关系表Mysql MongoDB database database table collection row document column field index index table joins $lookup primary key primary key 语法对比表MySQL MongoDB CREATE TABLE test( id int, name va..原创 2020-11-11 14:27:24 · 134 阅读 · 0 评论 -
Mysql 异步复制延迟的原因及解决方案
在异步或半同步的复制结构中,从库出现延迟是一件十分正常的事。虽出现延迟正常,但是否需要关注,则一般是由业务来评估。复制逻辑过程1、主库将对数据库实例的变更记录到binlog中。 (此过程不会产生延迟)2、主库会有binlog dump线程实时监测binlog的变更并将这些新的events推给从库(Master has sent all binlog to slave; waiting for more updates)(日志量越大,延迟越久)3、从库的IO Thread接收这些events.原创 2020-11-10 20:36:29 · 608 阅读 · 2 评论 -
Mysql权限控制及常用操作方法
mysql权限验证过程第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。# 用户名和IP是否允许 --> 查看mysql.user表 --原创 2020-11-09 15:37:50 · 246 阅读 · 0 评论 -
Mysql ibtmp1文件过大原因及解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。临时表释放后,空间会释放,但是磁盘空间不会释放,空闲空间可以被复用。释放磁盘空间只能重启。ibtmp1增长的原因ibtmp1增长主要与SQL有关,尤其是大量的分组聚合,排序,join查询SQL.通常如下情况会造成iptmp1上涨:1.查.原创 2020-11-09 15:25:24 · 12037 阅读 · 2 评论 -
Mysql常用的时间格式转换及加减计算方法
#当前时间精确到微秒SELECT NOW(6) AS '当前时间精确到微秒';#时间格式转换SELECTUNIX_TIMESTAMP() AS '当前时间戳',UNIX_TIMESTAMP('2018-1-1') AS '转换成时间戳',FROM_UNIXTIME(1523439700) AS '时间戳转datetime',date_format(NOW(),'%Y-%m-%d %H:%i:%s') AS '时间格式化';#计算时间差select timestam..原创 2020-11-09 15:02:33 · 424 阅读 · 0 评论 -
mysql基于二进制日志binlog统计各表增删改次数
脚本如下:#!/usr/bin/env python3# _*_ coding:utf8 _*_from threading import Threadfrom queue import Queuefrom time import strptime,mktime,localtime,strftimefrom pymysqlreplication import BinLogStreamReader #pip3 install mysql-replication==0.21from pym原创 2020-11-06 18:29:21 · 431 阅读 · 0 评论 -
Python使用pymysqlreplication解析二进制日志binlog
以下脚本只对binlog进行了初步的解析,使用者可以根据解析的结果,在ReadBinlog.app部分进行二次开发#!/usr/bin/env python3# _*_ coding:utf8 _*_from threading import Threadfrom queue import Queuefrom time import strptime,mktime,localtime,strftimefrom pymysqlreplication import BinLogStreamRe.原创 2020-11-06 16:42:39 · 2134 阅读 · 1 评论 -
Mysql5.7 添加审计插件(mariadb)
1.安装mysql5.7(略)2.下载并解压mariadb 10.2.29http://mariadb.mirror.globo.tech//mariadb-10.2.29/bintar-linux-x86_64/mariadb-10.2.29-linux-x86_64.tar.gz3.复制插件及修改权限检查系统支持的最大glibc版本# strings /lib64/libc.so.6 |grep GLIBC_将/mariadb-10.2.29/lib/plugin/server_原创 2020-11-06 10:27:37 · 649 阅读 · 0 评论 -
mysqldump,Xtrabackup备份原理
mysqldump备份(全备)的过程1.关闭所有打开的表(flush table)2.添加一个全局读锁(flush table with read lock)3.修改当前会话的事物隔离级别为RR4.开启一个事务(--single-transaction),获取当前数据库快照5.SHOW MASTER STATS(--master-data),记录备份开始时位置点信息6.备份非innodb的表(备份整个实例时才会有这一步操作)7.非innodb表备份完成后,释放FTWRL锁(unl原创 2020-11-05 11:12:09 · 208 阅读 · 0 评论