mysql
文章平均质量分 79
mysql
hello_alldatabase
这个作者很懒,什么都没留下…
展开
-
mysql常见错误之ERROR 1290、1840
前言:重装mysql5.7.26数据库后,在修改root密码和导入数据时分别了error 1290,1840两个错误,特此记录一下处理过程错误码1:ERROR 1290ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statementmysql> alter user ‘root’@’%’ identified by ‘ro原创 2021-05-19 19:17:44 · 1351 阅读 · 0 评论 -
datax3.0数据迁移连接不上mysql8.0
项目背景将云上的ADB3.0的数据迁移到本地mysql8.0.20中,发现datax3.0不好使了,只能通过kettle或navicat功能来同步了,但同步效率不高,为了彻底解决该问题,决定查看datax源码解决思路1、查看mysqlreader和writer源码引用的包2、从相应的引用包找到mysql连接的类名3、上传相应的mysql驱动包到4、修改pom.xml文件个人思考1、mysql数据库版本与驱动程序是否需要一 致?2、高版本的mysql驱动程序是否能跨大版本向下兼容?3原创 2020-11-04 12:10:35 · 1050 阅读 · 0 评论 -
mysql5.6.46迁级到ADS中遇到的一些SQL写法问题
项目背景目前平台所使用的mysql数据库无法用分析型计算,经常出现SQL语句执行缓慢(多表关联),导致数据库执行查询操作,长时间不出结果。因为整个工程中有阿里云平台,上面有大量产品,于是申请了两节ADS来试用,下面将试用过程中遇到的SQL问题做一个整理。系统环境源端:mysql5.6.46主从目标端:ADS C8 5.1.39SQL问题1、SQL语句中不支持@AA=1方式进行运算,支持row_number窗口函数2、支持with as 这种写法,解决了mysql5.6不支持with as功能(原创 2020-09-25 21:05:16 · 225 阅读 · 0 评论 -
mysql如何在存储过程中搜索表名
应用场景源系统开发了很多的存储过程,现在想在所有存储过程中搜索某张表名,怎么实现?系统环境centos7.5+mysql5.6.46实现方式1、2、个人总结原创 2020-09-25 20:32:21 · 643 阅读 · 0 评论 -
mysql5.7查看谁持有表级锁
测试环境centos7.4+mysql5.7.29启用 performance_schemamysql> show variables like ‘%performance%’±---------------------------------------------------------±------+| Variable_name | Value |±------------------------原创 2020-09-13 17:30:02 · 722 阅读 · 0 评论 -
在mysql中如何查询执行时间过长的SQL语句
系统环境centos7.5+mysql5.6.46navicat12.2测试场景通过navicat执行一条SQL查询语句,执行时间超过5800解决思路与方法总结通过navicat执行一条查询时间过长的语句,想通过kill方式原创 2020-09-13 10:07:35 · 2140 阅读 · 0 评论 -
mysql Waiting for table flush出现的原因及场景复现--analyze table
测试环境centos7.6+mysql5.6.46场景复现–analyze table会话1:模拟慢查询mysql> select fname,sleep(60) from t1;会话2:分析表mysql> analyze table t1;±--------±--------±---------±---------+| Table | Op | Msg_type | Msg_text |±--------±--------±---------±---------原创 2020-09-06 16:55:29 · 189 阅读 · 0 评论 -
初识innotop
下载地址https://github.com/innotop/innotop功能介绍1.显示当前innodb的全部事务列表;2.显示当前正运行着的查询;3.显示当前锁和锁等等的列表;4.服务器状态和变量的摘要信息 显示了数值的相对变化幅度;5.有多种模式可用来显示Innodb 内部信息,如缓冲区、死锁、外键错误、I/O情况、行操作、信号量等。6.复制健康,将主机和从机的状态显示一起;7.有一个显示任意服务器变量的模式;8.服务器组可以帮你更方便的组织多台服务器;9.在命令行脚本下可以使原创 2020-09-06 16:23:45 · 224 阅读 · 0 评论 -
mysql Waiting for table flush出现的原因及场景复现--LOCK TABLE READ
测试环境centos7.6+mysql5.6.46Waiting for table flush出现原因官方文档:https://dev.mysql.com/doc/refman/5.6/en/general-thread-states.htmlThe thread is executing FLUSH TABLES and is waiting for all threads to close their tables, or the thread got a notification that原创 2020-09-05 22:22:38 · 1013 阅读 · 0 评论 -
mysql通过limit 5返回几条记录,查询不出结果
系统环境mysql5.6.46一主一从navicat12.2问题现象从备库上通过navicat查询几张业务表时,长时间没有反应,通过limit 限制几条返回记录也是同样的结果,查询其他业务表则没有该问题,通过show processlist的问题现象如下:1、两条SQL语句执行了6多万秒,状态处理sending data,2、对几张业务表执行的查询语句显示的状态为Waiting for table flush3、一个语句处理刷新系统日志状态(遗憾详细信息没记录下)解决方法1、对于问题现象3原创 2020-09-05 13:33:18 · 1052 阅读 · 0 评论 -
mysql hang住了,仲么办?
系统环境centos7.6+mysql5.6.46遇到的问题前端页面长时间不出结果,mysql数据库查询无响应。解决方法1、登录数据库服务器,查看系统资源消耗情况通过vmstat和top看到cpu使用是近100%,mysql进程使用了百分之七百多,队列中有40个procs -----------memory---------- —swap-- -----io---- --system-- -----cpu-----r b swpd free buff cache si原创 2020-09-05 00:03:56 · 144 阅读 · 0 评论 -
mysql事务隔离级别与产生的现象
测试环境centos7.7+mysql5.6.48测试表mysql> show create table aa;+-------+--------------------------------------------------------------------------------------------------------------------------+| Table | Create Table原创 2020-08-25 23:43:42 · 173 阅读 · 0 评论 -
使用ogg同步mysql数据库遇到的几个问题
系统环境在阿里云ECS自建mysql5.6.46+ogg19.1问题描述使用ogg遇到几下两类问题一、安装问题二、使用问题使用ogg抽取、投递、复制遇到以下几个问题1、通过ogg无法从mysql中抽取变化的数据(insert,update),但抽取进行是正常的遇到,通过stats extract 抽取进程名,显示no active extraction maps2、ogg的投递正常无法获取抽取到的数据并进行正常投递3、ogg的复制进程无法应用超大事务解决思路与方法总结...原创 2020-08-19 22:11:19 · 1196 阅读 · 0 评论 -
初识MYSQL GTID
什么是GTID全局事务标识符(GTID),由两个部分组成,用用冒号(:)分隔,即GTID = source_id:transaction_idsource_id代表源服务器,通常服务器使用server_uuid来作为source_id,transaction_id事务提交时产生的序列号GTID同步原理1、事务在源上执行并提交。使用源的UUID和此服务器上尚未使用的最小非零事务序列号为该事务分配GTID;GTID将写入源的二进制日志中(紧接在日志中事务本身之前)。2、在将二进制日志数据传输到副本并翻译 2020-08-15 17:16:37 · 160 阅读 · 0 评论 -
基于ogg实现mysql到mysql之间DDL复制的一些限制
19.1 DDL复制的一些限制1、基于DDL的复制需要mysql的版本在5.7.10及以上2、不支持双向DDL复制3、不支持远程捕获4、DDL复制使用ddl_rewriter and ddl_metadata两个插件作业共享库来实现DDL语句的复制,在开始DDL复制前需要提前在MYSQL服务器上安装这两个库5、在存储过程中执行DDL语句不能被捕获CREATE PROCEDURE atssrc.generate_data()BEGINDECLARE i INT DEFAULT 0;WHILE原创 2020-08-09 22:23:16 · 427 阅读 · 0 评论 -
阿里云ECS自建mysql数据库遇到的云盘问题归档
系统环境操作系统centos7.5:40G作为系统盘,2T作为数据盘,挂载到/data目录数据库mysql5.6.46:数据量300GB,每天通过innobackupex备份,保留最近三天的备份故障前兆8月4号使用navicat12的数据传输功能将另一个库的一张表同步到本库中,报错信息如下:这里提示无法在/tmp目录下创建、写入文件,这里没有引起重视,也没有查询8月4号的备份是否有问题(画外音8月4号的备份失败了)8月5号因为要从该库获取变化的数据同步到其他数据库中,需要单独创建一个数原创 2020-08-07 23:43:34 · 193 阅读 · 0 评论 -
阿里云恢复300G mysql数据库不是结局的结局
前一篇https://editor.csdn.net/md/?articleId=107850579通过innobackupex --copy-back异机恢复接着昨天的分析,今天将备份文件拷贝到另一台ECS服务器上进行异机恢复,花费了5个多小时(网络传输2个小时左右,innobackupex --copy-back3个多小时),成功恢复了数据库。故障机处理之前怀疑是本机的ECS云硬盘有问题,这里将磁盘上的文件拷贝到其他ECS服务器上,将该块硬盘重新分区(parted)和mkfs.ext4,将磁盘原创 2020-08-07 22:59:27 · 168 阅读 · 0 评论 -
恢复ECS 300G mysql数据库,在不正确的道路上越走越远
项目背景mysql5.6.46查询mysql.user表 error 1036 table ‘user‘ is read onlyhttps://editor.csdn.net/md/?articleId=107824063如何越错越远1、在本机上通过 innobackupex方式恢复后,没有任何报错,在通过mysqld启动数据库时无法正常启动,后台也没有详细的报错信息(以为备份有问题)这里犯了两个错误其一、对没有详细的报错信息进行下一步分析,后面通过mysqld_safe启动时,告之缺少mys原创 2020-08-06 23:24:39 · 209 阅读 · 0 评论 -
mysql5.6.46查询mysql.user表 error 1036 table ‘user‘ is read only
系统环境centos7.5+mysql5.6.46操作步骤通过root用户在命令行创建业务用户时报error 1036 table ‘user’ is read only,能正常创建业务表、插入数据问题排查1、查看mysql数据目录下的user表是否被修改过-rw-r----- 1 mysql mysql 10684 May 29 10:39 user.frm-rw-r----- 1 mysql mysql 760 Jun 7 22:13 user.MYD-rw-r----- 1原创 2020-08-05 21:16:04 · 407 阅读 · 0 评论 -
mysql插入字符串报truncate data double value incorrect
系统环境centos7.5+mysql5.6.46报错信息在navicat12 中通过update语句方式向业务表更新记录报truncate data double value incorrect,但通过图形化界面则可以修改场景复现解决方法总结原创 2020-08-03 22:17:18 · 439 阅读 · 0 评论 -
mysql通过in (select table_name from )方式查询不到已经存在的表
系统环境centos7.7+mysql5.6.46/mysql5.7.29现象复现准备测试库,test中的6张表mysql> show tables;±---------------+| Tables_in_test|±---------------+| aa || bb || cc || dd || ff || testflashback2 |±----原创 2020-07-28 23:01:03 · 984 阅读 · 0 评论 -
初识mysql SQL语句审核开源软件yearning
yearning简介Yearning MYSQL SQL语句审核平台。提供查询审计,SQL审核等多种功能环境准备centos7.4+mysql5.7.29yearning安装下载地址:https://github.com/cookieY/Yearning/releases配置方式[root@lineqi opt]# unzip Yearning-2.2.2-4kstars.linux-amd64-patch-1.zip ^C[root@lineqi opt]# cd Yearning-go原创 2020-07-25 16:21:08 · 307 阅读 · 0 评论 -
阿里云ECS上自建mysql5.6.46频繁异常关机
系统环境阿里云ECS自建mysql数据库,操作系统centos7.5(32GB),数据库版本为5.6.46,每天通过kettle将源系统的业务数据增量同步到mysql数据中,kettle是单独部署在一台服务器上。故障现象数据库每隔一、两天就会异常关机,mysql_error.log没有任何报错信息,该数据库用来存储源系统同步过来数据。处理方法与思路刚开始看到故障现象有点无从下手,后台错误日志里没有任务报错信息,采取了如下处理方法1、先将数据库启动起来(好消息能正常启动)2、mysql日志级别配原创 2020-07-25 14:03:44 · 168 阅读 · 0 评论 -
mysql与TiDB的兼容性对比
与 MySQL 兼容性对比概览TiDB 100% 兼容 MySQL 5.7 协议、MySQL 5.7 常用的功能及语法。MySQL 5.7 生态中的系统工具(PHPMyAdmin、Navicat、MySQL Workbench、mysqldump、Mydumper/Myloader)、客户端等均用于 TiDB。由于 TiDB 是一款分布式数据库,MySQL 5.7 中的部分特性因工程实现难度较大,投入产出比较低等多种原因在 TiDB 中未能实现或者仅兼容语法但功能并没有实现,因此使用过程中请特别注意。例翻译 2020-07-22 08:24:08 · 4417 阅读 · 0 评论 -
mysql5.7.29升级文档
升级前的检查项mysqlcheck -u root -pMyNewPass4! --all-databases --check-upgrade检查存储引擎和分区表检查是否存在不是使用innodb,ndbcluster存储引擎的表和是否有存在分区表SELECT TABLE_SCHEMA, TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE ENGINE NOT IN (‘innodb’, ‘ndbcluster’)AND CREATE_OPTIONS LI原创 2020-07-19 15:47:08 · 372 阅读 · 0 评论 -
substr函数在oracle、mysql、postgresql数据库中使用区别
项目背景去O路上,遇到的函数使用问题substr使用区别oracle substrselect substr(‘aaaa’,0,4)mysql substrselect substr(‘aaaa’,0,4)请问在两个数据库中,上述两个函数的执行结果是一样的吗?总结1、oracle中substr函数的语法兼容性更好2、mysql中substr函数截取是从1开始的...原创 2020-07-07 22:42:40 · 1418 阅读 · 2 评论 -
mysql分层的其他几种方式实现
接一篇mysql分层方式的实现分层实现方式方式一:SQL语句方式select id,nodename,pid,(select pid from treenodes where id=t.pid) parentid2,(select pid from treenodes where id=(select pid from treenodes where id=t.pid)) parentid3,(select pid from treenodes where id=(select pid from原创 2020-07-05 14:57:17 · 254 阅读 · 0 评论 -
mysql connect by prior的实现方式
项目背景在去O的路上,总会遇到点困难,这不mysql5.7不支持oracle中的 connect by prior,需要单独写函数或存储过程来实现,网上有很多相关资料,这里了单独记录一下。数据库版本mysql5.7.29测试表CREATE TABLE treenodes (id int(11) NOT NULL,nodename varchar(20) DEFAULT NULL,pid int(11) DEFAULT NULL,PRIMARY KEY (id)) ENGINE=InnoD原创 2020-07-04 23:37:37 · 5838 阅读 · 0 评论 -
mysql性能调优工具之MySQLTuner-perl
MySQLTuner-perl介绍MySQLTuner is a script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability. The current configuration variables and status data is retrieved and presented in a翻译 2020-06-29 23:16:19 · 936 阅读 · 0 评论 -
mysql性能调优工具之tuning-primer.sh
测试环境centos7.5+mysql5.7.29安装该脚本添加执行权限后,将219、220行注释,221、222取消注释即可219 #mysql=“mysql”220 #mysqladmin=“mysqladmin”221 mysql=“mysql -S $socket”222 mysqladmin=“mysqladmin -S $socket”查看数据库信息原创 2020-06-29 22:59:05 · 209 阅读 · 0 评论 -
基于datax实现从gbase到mysql的数据迁移--时间字段篇
项目背景系统环境gbase8a 16节点集群mysql5.6.46主从迁移策略实现脚本datax配置文件{ "job": { "setting": { "speed": { "byte": 1048576 }, "errorLimit": { "record": 0, "percentage": 0.02原创 2020-06-28 22:43:20 · 2018 阅读 · 0 评论 -
navicat查询一些表时,无法通过图形化界面进行修改数据
系统环境navicat12+mysql5.6.46问题描述navicat查询一些表时,想直接将某些表中的列,复制到该不行,状态栏状态该表为只读,但执行dml语句则可以复现情况一:对一个普通表进行修改操作情况二:对一个有主键的表进行修改操作create table dd(id int primary key,name varchar(200))select * from dd;情况三:对一个有唯一键的表进行修改操作create table cc(id int ,name varchar原创 2020-06-22 23:08:54 · 1015 阅读 · 1 评论 -
oracle迁移到mysql的一些语法问题
项目背景GW辽宁去O,将所有业务数据迁移到mysql 数据库中,迁移完成后,后端SQL代码存在许多兼容性问题,下面将遇到的问题整理如下SQL语法支持问题1、对于connect by start 语法需要改写2、不支持with as 的写法,mysql8.0以后支持3、不支持decode语法,使用case when then end替换4、使用ifnull替换nvl函数5、mysql的行长为655366、不支持rownumber() over(partition by order by ),需原创 2020-06-18 23:26:40 · 194 阅读 · 0 评论 -
通过rpm方式将mysql5.6.48升级到mysql5.7.29
项目背景项目前期使用的是阿里云的rds,数据库版本为5.6.48,后面自建数据库时也选择了相应的系统版本(为了方便迁移数据),但5.6.48版本有些旧了,5.7中增加了一些新特性,为了后续顺利升级,这里提前做一下升级测试。系统环境升级前centos7.5+mysql5.6.48升级后centos7.5+mysql5.7.29说明:mysqlq5.6.46是通过rpm包方式来安装的数据库目录及配置文件数据目录:/data/mysql_13306配置文件:/etc/my13306.cnf升原创 2020-06-14 22:36:47 · 490 阅读 · 0 评论 -
使用datax迁移数据的一些感想
项目背景:项目上最近经常从gbase8a往mysql抽取数据业务,抽取过程属于离线操作,遇到记录条数最多的业务表有30多亿条记录,磁盘空间占用最大的表有170GB(3亿多条记录),整个过程都还是比较顺利,遇到的主要问题是数据如何均匀切片问题?下面记录一条迁移的思路与思考系统环境gbase8a多节点集群mysql5.6.46迁移思路1、按业务表记录数进行排序操作,小表直接批量迁移。思考:判断小表的依据呢?为什么要按记录数进行统计呢,而不加上表size来一起来判断这个表是小表呢2迁移思考不足原创 2020-06-12 22:54:34 · 1134 阅读 · 2 评论 -
mysql5.6.46添加自增加字段导出与测试
项目背景从gbase8a中迁移到mysql库中业务表基本上没有自增字段与自增加时间字段,为了后期对迁移的数据做二次处理,这里给1000多张表添加自增字段与自增加时间字段,现在这一千多张都有业务数据,有20张600万到5000千万的表,有2张上亿级宽表。系统环境1、centos7.5+mysql5.6.462、目前对该库没有做写操作3、一共5个库处理方案1、直接在现有的库进行添加字段操作优点:简单省事2、重新创建一个新库,将老库上的表结构同步到新库,在新库上添加自增字段与自增加时间字段,最原创 2020-06-09 23:12:35 · 501 阅读 · 0 评论 -
通过myflash闪回mysql5.6,mysql5.7部分数据
测试环境centos7.7mysql5.6.48测试场景对一张进行多次修改后,通过mysqlflash闪回某一时间段的update操作测试表与测试语句CREATE TABLE testFlashback2 (id int(11) NOT NULL AUTO_INCREMENT,nameShort varchar(20) DEFAULT NULL,nameLong varchar(260) DEFAULT NULL,amount decimal(19,9) DEFAULT NULL,am原创 2020-06-06 20:58:25 · 155 阅读 · 0 评论 -
myflash在mysql5.6.46上的闪回测试
系统环境:centos7.7mysql5.6.46安装[root@lineqi MyFlash-master]# cat build.shyum install glib2-devel -ygcc -g -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback测试表CREATE TABLE testFlashback2 (id int(11) NOT NULL AUTO_INC原创 2020-06-06 09:54:30 · 164 阅读 · 0 评论 -
mysql删除表中不存在的记录会导致 Lock wait timeout exceeded
测试环境:mysql5.6.46测试表mysql> desc ff;±------±-------------±-----±----±--------±------+| Field | Type | Null | Key | Default | Extra |±------±-------------±-----±----±--------±------+| id | int(11) | YES | UNI | NULL | || n原创 2020-06-05 23:56:03 · 872 阅读 · 0 评论 -
mysql5.6.46在线修改表字段失败
环境:centos7.5mysql5.6.46pt-online-schema-change3.2现象:测试表mysql> create table bb(id int ,name varchar(100));Query OK, 0 rows affected (0.12 sec)[root@lineqi ~]# pt-online-schema-change --noversion-check --skip-check-slave-lag=d --user=root --passwo原创 2020-06-03 00:00:43 · 951 阅读 · 0 评论