随笔分类 -  mysql

摘要:MySQL的报错信息有时可能和大家预期的不一样,本文将根据实际案例演示最常见的唯一索引报错与预期情况有差异,不了解的同学可能以为有bug。 1. 数据准备 1.1 创建一个含唯一索引的表 -- 创建一张test表 CREATE TABLE test ( id INT PRIMARY KEY AUTO 阅读全文
posted @ 2022-07-11 14:41 耿小厨 阅读(380) 评论(0) 推荐(0)
摘要:1. 创建测试表及数据 -- 创建一张tb_stu表 CREATE TABLE tb_user( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10) COMMENT '人名', c_no VARCHAR(64) COMMENT '持剑ID,以逗号分 阅读全文
posted @ 2022-07-11 14:22 耿小厨 阅读(815) 评论(0) 推荐(0)
摘要:上文(MySQL自我保护工具--pt-kill ) 提到用pt-kill工具来kill相关的会话,来达到保护数据库的目的,本文再通过修改数据库参数的方式达到阻断长时间运行的SQL的目的。 1、参数介绍 mysql5.6及以后,数据库端新增了新变量来限制语句最大执行时间,用于在服务端对select语句 阅读全文
posted @ 2021-12-09 13:41 耿小厨 阅读(347) 评论(0) 推荐(0)
摘要:MySQL出现运行时间过长的SQL(慢SQL),会使线上数据库压力倍增,影响业务稳定性及可用性 背景 生产环境数据库出现运行时间过长的SQL,会影响数据库性能,如果同时出现多个类似SQL,则会影响数据库的可用性,从而导致业务不可用或体验差的情况。 在出现此类SQL的情况下,DBA人工干预需要一定的时 阅读全文
posted @ 2021-12-07 22:47 耿小厨 阅读(611) 评论(0) 推荐(0)
摘要:1. 工具安装 使用percona-Toolkit进行数据对比,因此先进行此工具的安装 官方地址: https://www.percona.com/downloads/percona-toolkit 安装依赖包 yum install -y perl-DBI perl-DBD-MySQL perl- 阅读全文
posted @ 2021-08-21 20:50 耿小厨 阅读(623) 评论(0) 推荐(0)
摘要:SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 1、SQL注入案例 模拟一个用户登 阅读全文
posted @ 2020-12-22 16:03 耿小厨 阅读(3160) 评论(0) 推荐(3)
摘要:JAVA操作MySQL数据库,涉及创建连接,创建表,插入数据,更新数据,查询数据。 总体步骤: 1) 获取驱动(可以省略) 2) 获取连接 Connection 接口,代表一个连接对象 ,具体的实现类由数据库的厂商实现 使用 DriverManager类的静态方法,getConnection可以获取 阅读全文
posted @ 2020-12-14 14:24 耿小厨 阅读(4799) 评论(0) 推荐(0)
摘要:国庆假期自己翻看了一下近一年所发的文章,内容基本都是平时工作中遇到的一些问题,思考探索等,发文顺序相对杂乱,不易系统性学习,于是将其中的一些文章做个简单的整理归类,便于需要的同学选择阅读。 部署篇 【MySQL】 超详细的MySQL5.6安装部署教程 MySQL5.7安装步骤 MySQL5.7主从同 阅读全文
posted @ 2020-10-09 15:54 耿小厨 阅读(323) 评论(0) 推荐(0)
摘要:binlog2sql 是一款比较常用的数据恢复工具,可以通过它从MySQL binlog解析出你要的SQL,并根据不同选项,可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。主要用途如下: 数据快速回滚(闪回) 主从切换后新master丢数据的修复 从binlog生成标准SQL,带来 阅读全文
posted @ 2020-09-21 13:49 耿小厨 阅读(901) 评论(0) 推荐(0)
摘要:统计每天的数据量变化,数据量变动超过一定范围时,进行告警。告警通过把对应的参数传递至相应接口。 python程序如下 #!/usr/bin/python # coding=utf-8 import pymysql as mdb import os import sys import requests 阅读全文
posted @ 2020-09-15 15:37 耿小厨 阅读(346) 评论(0) 推荐(0)
摘要:之前已经在微信公众号分享了数据库优化的方法,链接为https://mp.weixin.qq.com/s/6Atzk9UKPJRxxAs0nsKBXg 。 其中操作系统部分介绍了IO调度算法的优化,本文将通过压力测试的方式来对比不同的调度算法下磁盘IO的表现。 1 准备工作 1.1 安装sysbenc 阅读全文
posted @ 2020-08-24 10:48 耿小厨 阅读(1311) 评论(1) 推荐(0)
摘要:从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,加密用的是AES算法,而其解密是在从文件读到内存中时进行。 1 配置加密插件 1.1 修改配置文 阅读全文
posted @ 2020-08-16 10:22 耿小厨 阅读(2130) 评论(0) 推荐(0)
摘要:1. 现象 今天协助其他同学排查问题的时候,发现数据库错误日志文件已经有9G以上了,打开内容查看如下: 2020-07-08 13:47:43 0x7fe3723ff700 INNODB MONITOR OUTPUT Per second averages calculated from the l 阅读全文
posted @ 2020-07-08 20:06 耿小厨 阅读(790) 评论(0) 推荐(0)
摘要:统计每个库每个表的大小是数据治理的其中最简单的一个要求,本文将从抽样统计结果及精确统计结果两方面来统计MySQL的每个库每个表的数据量情况。 1、统计预估数据量 mysql数据字典库information_schema里记录了统计的预估数据量(innodb引擎表不准确,MyISAM引擎表准确)及数据 阅读全文
posted @ 2020-06-29 21:39 耿小厨 阅读(2940) 评论(0) 推荐(0)
摘要:MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle、SQL SERVER 、PostgreSQL等其他数据库那样的窗口函数。但随着MySQL8.0中新增了窗口函数之后,针对这类统计就再也不是事了,本文就以常用的排序实例介绍MySQL的窗口函数。 1、准备工作 创建表及测试数据 m 阅读全文
posted @ 2020-06-26 11:04 耿小厨 阅读(3165) 评论(0) 推荐(0)
摘要:按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。 1、 合并 MySQL数据库中按照指定字符合并可以直接用group_concat来实现。 创建测试表 mysql> 阅读全文
posted @ 2020-06-25 09:17 耿小厨 阅读(4413) 评论(2) 推荐(3)
摘要:近一个月处理历史数据问题时,居然连续遇到了2个MySQL BUG,分享给大家一下,也欢迎指正是否有问题。 BUG1: 数据库版本: MySQL5.7.25 - 28 操作系统: Centos 7.7(不重要) 数据库架构: 主-从-级联从 数据库参数: innodb_support_xa = 1 # 阅读全文
posted @ 2020-06-21 11:27 耿小厨 阅读(1117) 评论(0) 推荐(1)
摘要:MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明。 1、 环境准备 数据库版本: 5.7.25-28(Percona 分支) 服务器配置: 3台centos 7虚拟机,配置均为2CPU 2G内存 数据库架构: 1主2从的 阅读全文
posted @ 2020-06-20 13:16 耿小厨 阅读(7717) 评论(1) 推荐(1)
摘要:很多小伙伴反映说网上的MHA教程甚至收费的课程里的MHA教程都存在坑,不少教程只是搭建完成了,是否真的能在主库宕机时自动切换不得而知,鉴于此情况,简单写了一个MHA集群的搭建步骤。由于搭建的次数较多,没踩到过多的坑(坏笑),所以没有写太多的排坑方法,如果小伙伴们在部署的过程中遇到问题可以和我沟通,文 阅读全文
posted @ 2020-05-25 19:28 耿小厨 阅读(1203) 评论(0) 推荐(2)
摘要:涉及循环、动态sql等主要的MySQL存储过程知识。 需求: 遍历所有【test_ondev_[0-9]】开头的表,将其中的所有数据按表中的col字段存储到【test_ondev_history_ + col的值】的表里面,当【test_ondev_history_ + col】不存在的时候复制te 阅读全文
posted @ 2020-05-07 18:17 耿小厨 阅读(284) 评论(0) 推荐(0)

微信公众号: 数据库干货铺