MySQL
文章平均质量分 53
MySQL数据库以及相关内容
乐大师
这个作者很懒,什么都没留下…
展开
-
mysql主从问题整理
二、max_allowed_packet经过检查发现这个值偏大了 主机上与备机上的binlog日志不一致 然后主机先关机了 导致的binlog日志不完整 不一致 主机binlog日志写入过快 造成的主从不一致 这个时候会特别考验io 也就是笔记本的性能。出现此类错误的常见原因是。当主库向从库传递一个比从库的max_allowed_packet 大的packet ,从库接收该packet失败,并报 “log event entry exceeded max_allowed_packet“。原创 2024-03-05 17:19:53 · 425 阅读 · 0 评论 -
windows搭建MySQL主从补充说明
这3种情况是在HA切换时,由于是异步复制,且sync_binlog=0,会造成一小部分binlog没接收完导致同步报错。原创 2023-12-25 14:27:03 · 379 阅读 · 0 评论 -
MySQL云数据库5.5导入到自建MySQL数据库5.7
如果不更新为mysql_native_password,则不能使用账户和密码认证登录。因为版本差2个小版本,差别较大,直接恢复有问题。我才用的方法简单粗暴,跳过权限设置启动服务,登录进去更新root账户数据,退出重启服务。这里选择使用mysqldump进行备份,然后使用mysql命令导入数据的方式。需要在线下搭建一个测试环境,所以需要将数据还原到一个自建MySQL数据库内。遗憾的是,他把密码忘记了。有一个MySQL云数据库,版本比较老,是5.5.云数据库设置的备份,使用的是全复制文件方法。原创 2023-10-24 16:51:07 · 449 阅读 · 2 评论 -
CentOS8安装mysql-community-client错误解决
成功后再次安装mysql-community-client-5.7.37-1.el7.x86_64.rpm,即可成功。提示的意思是缺少依赖软件包。实际安装如下两个软件包。原创 2023-09-11 16:40:20 · 639 阅读 · 1 评论 -
TencentOS 3.1安装MySQL 8.0.32
到官网下载安装包:https://dev.mysql.com/downloads/mysql/原创 2023-02-28 14:48:57 · 902 阅读 · 0 评论 -
MySQL查询优化小结
一、SQL查询优化原则1.1优化收益大于付出总响应时间占比低于5%的,收益不会超过5%1.2运行次数少,但影响用户体验的,应优化SQL运行慢,体验差,但用户使用次数占总查询量比较少1.3平均值陷阱原创 2023-02-01 14:41:15 · 487 阅读 · 0 评论 -
SQL答疑(二)
有网友提问如下:现在有三个表(如图)。题目是:查询平均分最高的课程信息。求一个mysql的代码其他网友给出答案如下:select avg(sc.Grade), c.cname from scinner join course as c on sc.cno = c.cnogroup by sc.cno;我的答案如下:select a.cname,b.avg_grade from course as binner join(select avg(grade) as avg_g..原创 2020-05-25 08:08:45 · 239 阅读 · 0 评论 -
来自CSDN网友MySQL查询错误分析
信息通过站内消息发过来的,如下:没有说明错误提示,也没有给表结构。当时就发消息问了下,错误提示是啥。下午有看了一眼,没有回复。有点时间,自己搞搞看。看了5分钟。看出点问题。没看到他的表结构,不过可以推测第一句的问题,错误应该跟sign字段有关。表electrical_appliance_total 或表electrical_appliance_register应该存在sign字段。第一个语句中as之后字段名为sign,跟两张表中起重一张表内的字段sign冲突。从第二语句中,sel原创 2022-02-14 17:37:04 · 255 阅读 · 0 评论 -
MySQL连接失败
同事反映测试服务器的MySQL连接失败。这个问题之前也出现过,处理方法简单粗暴,重启服务。今天刚好有空,研究一下。提示还是比较清晰,连接错误太多被阻止连接。提示中还给出了一个方法运行命令:mysqladmin flush-hosts运行后问题解决。...原创 2022-02-11 11:31:23 · 1911 阅读 · 0 评论 -
xtrabackup恢复MySQL8.0数据几个注意事项
公司开始使用MySQL8.0了,之前一直是MySQL5.6和MySQL5.7.之前使用xtrabackup对MySQL5.6和MySQL5.7执行数据恢复操作都没问题。现在数据库版本是MySQL8.0,按原来的套路执行就不行了。基本情况如下:数据库备份是某云服务商的云数据库,版本MySQL8.0.备份在控制台操作实现每日完整备份。根据云服务商提供的文档,可以使用xtrabackup进行恢复数据操作。本地创建了一个环境,系统是Ubuntu20.04,数据库是MySQL8.0反复进原创 2022-01-28 17:32:06 · 1312 阅读 · 0 评论 -
CentOS 8安装、配置mysql 5.7的几个小问题总结
1.安装包的选择官网上有red hat系统选项,安装包有支持版本7和版本6的下载。没有版本8的。那么该怎么安装?其实随便下一个就行了。测试过版本6的安装包是可以的。推测版本7的安装包应该也可以。2.rpm安装报错rpm命令安装,可能会报错。rpm -ivh 软件包名一般来说常见问题是提示一些依赖相关错误。第一个考虑解决的办法就是安装相关的依赖软件。根据提示依赖软件包自己安装。yum和rpm安装均可,通常建议使用yum。如果需要的版本比较高,则可以rpm安装或自编译原创 2022-01-24 17:18:03 · 1129 阅读 · 0 评论 -
Ubuntu20.04安装mysql 8
Ubuntu20.04安装mysql 8可以使用apt。运行:sudo apt-get install mysql-server可能会有如下报错:按提示,执行如下命令sudo apt-get --fix-broken install这个命令执行成功后,msyql 8就安装成功了。默认情况下,此时root密码为空。建议立即修改。执行如下命令:mysql -uroot -p直接进入mysql环境。再执行如下命令:ALTER user 'root'@'loca原创 2022-01-21 11:19:10 · 1792 阅读 · 2 评论 -
MySQL重启失败-错误提示端口号占用
一台测试机因故需要重启MySQL服务。执行重启命令后发现MySQL服务没有启动。手动执行一次启动命令,提示进程结束,查看日志。使用tail查看日志末尾100行,发现如下错误提示:[ERROR] Can't start server: Bind on TCP/IP port: Address already in use提示MySQL使用的关口被占用。这台测试及的MySQL使用的是默认端口,即3306。使用netstat -lntp |grep 3306查看哪个进程是用了3306。.原创 2021-11-22 14:41:55 · 2515 阅读 · 0 评论 -
mysqldump备份小结
1.备份 MySQL使用mysqldump命令进行备份。1.1基本命令 mysqldump-uroot-p数据库名> 备份文件名注:备份文件名可以包含全路径1.2写入多个库名可以实现备份多个库 mysqldump-uroot-p数据库名1数据库名2> 备份文件名1.2参数-B增加了创建库和使用库的命令 mysqldump-uroot -p-B数据库名 > 备份文件名1.3使用|gzip通过管道调用gzip对生成的备份文件进行压缩 ...原创 2021-10-19 22:58:48 · 633 阅读 · 0 评论 -
MySQL 5.7.34安装配置(CentOS 6)
首先下载MySQL 5.7.34安装包。https://downloads.mysql.com/archives/community/选择版本和操作系统,适用的系统版本根据需要选择,本文选Linux6 64位版。下载完毕,文件上传到服务器准备安装。服务器首先要检查没有安装过mysql,否则会报安装软件冲突。如图输入命令:rpm -qa |grep mysql如图显示出已安装的mysql相关软件。之后需要将这三个软件卸载。卸载命令格式:rpm -e --no..原创 2021-07-22 17:33:30 · 548 阅读 · 0 评论 -
闲谈MySQL5.6两项优化特性
MRR(Muti-Range Read)MRR可以将随机读转为较为顺序的数据访问,从而有效减少随机访问。在查询辅助索引时,先根据得到的查询结果,按主键顺序进行书签查找。我们知道,当查询需要读取整行信息时,如果使用辅助索引,那么得到结果后还需要通过书签通过主键获取整行信息。而辅助索引的顺序和主键的顺序可能不一样,这样就导致读取主键数据时为随机读。由于随机读效率较低,在数据较多时,优化器会放弃使用辅助索引,而直接使用主键。MRR有效的缓解了这一问题。MRR还可以将一个范围查询拆分为键值对条件原创 2021-03-22 14:58:36 · 131 阅读 · 0 评论 -
闲谈MySQL的char和varchar
char和varchar是最常用的两种数据类型。一般认为,char是定长字符,varchar是可变长度字符。在MySQL版本4.12以后,这种说法就不完全正确了。在4.12版之后,char(n)中的n代表的不再是字节长度,而是字符长度。在这个改变下,如果字符集选择的是多字节字符集,比如utf-8,那么char(n)则存储的数据就不是固定长度了。例如,char(3)可以存储“abc”、“一二三”。显然,前面两个字符串的字节长度是不一样的。所以只有当字符集选择了单字节字符集,比如latin1,c原创 2021-03-18 16:12:36 · 516 阅读 · 0 评论 -
两次写和redo log
两次写特性能加强MySQL的可靠性。在脏页写入到表之前,先将一份副本写入硬盘,成功之后再写入表。这样做的目的是预防脏页写入表时,发生最坏情况(例如:掉电),导致页损坏。也就是说至少部分数据无法读取。两次写避免了这个问题。当最坏情况发生,服务重新启动时,系统检测页发生了损坏,那么会读取两次写的副本来恢复损坏的页。这样的系统更加可靠。redo log是当脏页写入前,先写入到redo日志。当发生掉电时,缓存内的部分脏页会丢失,在系统恢复后,将从redo log中恢复缓存未写入磁盘的数据。这看起来两原创 2021-03-16 16:32:41 · 816 阅读 · 4 评论 -
xtrabackup备份MySQL命令小结
本机全备份mysql到指定目录/usr/bin/xtrabackup --defaults-file=/data/mysql/data02/backup-my.cnf -uroot -p123456 -P3307 --backup --target-dir=/newdata/mysql/data02本机全备份mysql到指定目录(压缩备份文件)/usr/bin/xtrabackup --defaults-file=/data/mysql/data02/backup-my.cnf -uroot -...原创 2021-01-29 14:04:20 · 452 阅读 · 0 评论 -
MySQL事务简述(六)
事务的统计主要是看TPS,它是Question Per Second的缩写,代表每秒处理事务的能力。这里的事务包括提交和回滚的两种类型。不过无论是哪一种,只有显示声明的事务才会被统计。公式:(com_commit+com_rollock)/timeISO和ANIS SQL标准制定了4种事务隔离级别,它们是:1.READ UNCOMMITTED 读取为提交数据2.READ COMMITTED 读取已提交数据3.REPEATABLE READ 可重复读4.SERIALIZABL.原创 2021-01-15 14:32:22 · 107 阅读 · 0 评论 -
MySQL事务简述(五)
默认设置下,事务都是自动提交的(auto commit)。如果需要显示开启一个事务,需要使用命令begin、start transaction或者set autocommit=0事务控制语句:1. start transaction | begin显示开启一个事务2.commit | commit work提交事务。两种写法几乎等价。区别在于commit work控制事务结束后的行为是chain还是release。如果是chain方式,那么事务就是链式事务。参数com..原创 2021-01-12 15:47:53 · 193 阅读 · 0 评论 -
MySQL事务简述(四)
undo log分为insert undo log和update undo log两种。insert undo log是在insert操作中产生的undo log,只对事务本身可见,其他事务部可见(隔离性)。所以在事务提交后,就没用了,可以直接删除。update undo log是在delete和update操作中产生的undo log。因为支持MVCC机制的关系,不能直接删除。提交时房屋undo log链表中,等待purge线程进行最后的删除。...原创 2021-01-08 15:00:11 · 218 阅读 · 0 评论 -
MySQL事务简述(三)
InnoDB存储引擎中,另一个日志是undo日志。它用来帮助事务回滚以及MVCC的功能。用户通过一条roolback语句请求回滚,这是就可以利用undo信息将数据回滚到修改之前的样子。与redo不同,undo存放在数据库内部的一个特殊段(segment)中,称为undo(segment)。undo段位于共享表空间内。undo是逻辑日志。回滚之后,所有修改都被逻辑地取消了,但是数据结构和页本身在回滚之后可能不相同。当InnoDB存储引擎回滚时,它实际做的事与先前相反的工作。对于Insert原创 2021-01-07 15:11:02 · 130 阅读 · 0 评论 -
MySQL事务简述(二)
redo log称为重做日志,用来保证事务的原子性和持久性。redo log通常是无力日志,记录的是页的物理修改操作。其包含两部分:一是内存中的重做日志缓冲(redo log buffer);二是重做日志文件(redo log file)。在InnoDB存储引擎中,通过FLC(Force Log at Commit)机制实现事务的持久性。即当事务提交时,必须先将素有的日志写入到重做日志文件进行吃就好,待事务的Commit操作完成才算完成。redo log基本上都是顺序写的,在数据库运行时原创 2021-01-06 16:59:25 · 82 阅读 · 0 评论 -
MySQL事务简述(一)
理论上事务必须同时满足4个特性,ACID特性。A(Atomictiy)原子性C(consistency)一致性I(isolation)隔离性D(durability)持久性出于各种目的,数据库厂商并没有严格去满足ACID标准。比如MySQL的NDB Cluster引擎不满足持久性的要求。从理论上事务可以分为5类:1.扁平事务这类事务最简单,使用也最多。使用begin work开始,由commit work 或rollback work结束。要么都执行,要么都回滚。2.原创 2021-01-05 18:14:48 · 141 阅读 · 0 评论 -
索引回表和如何避免
今天回答一个网友的问题,记录内容如下。在SQL查询语句执行时,如果对表内2次或以上索引查询称之为回表。两次索引查询是怎么发生的的?举个例子来说明,有一个x表,id字段是主键,a字段是辅助索引,总字段数量10个。sql如下:select * from x where id=100;这个语句只访问主键一次,不会回表。sql改为如下:select * from x where a=100;这个语句在访问辅助索引后还需要访问主键,因此是回表。我们知道主键包含行所有数据(这里假设是使用了InnoDB)原创 2020-07-13 09:08:17 · 2078 阅读 · 6 评论 -
InnoDB简明教程(七)
约束1.数据完整性 关系型数据库系统和文件系统的一个不同点是,关系数据本身能保证存储数据的完整性,不需要用程序的控制,而文件系统一般需要在程序端进行控制。当前几乎所有关系型数据库都提供了约束(constraint)机制。一般来说数据库完整性有以下三种形式: 实体完整性保证表中有一个主键。在InnoDB存储引擎表中,用户可以通过定义Primary Key或Unique key约束来保证实体的完整性。用户还可以通过编写一个触发器来保证数据完整性。 域完整性保证数据...原创 2020-06-21 23:09:54 · 286 阅读 · 0 评论 -
InnoDB简明教程(六)
InnoDB数据页结构 InnoDB数据页由一下7部分组成。 1.File Header(文件头) 2.Page Header(页头) 3,Infimun和supermum Records 4.User Records(用户记录,即行记录) 5.Free Space(空闲空间) 6.Page Directory(页目录) 7.File Trailer(文件结尾信息) ...原创 2020-06-12 21:30:40 · 314 阅读 · 0 评论 -
InnoDB简明教程(五)
一、索引组织表在InnoDB存储引擎中,表都是根据主键顺序组织存放的。这种存储方式的表称为索引组织表(index organized table)。在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎按如下方式选择或创建主键: 1.判断表中是否有非空的唯一索引(Unique NOT NULL),如果有,则该列为主键。 2.如果第一条无法满足,InnoDB存储引擎自动创建一个6字节大小的指针。 ...原创 2020-06-10 11:14:56 · 199 阅读 · 0 评论 -
SQL答疑一例
问题来自论坛网友提问,如下:有网友给出回答如下:UPDATE c1 AS aINNER JOIN(SELECT haoma,MAX(price) AS bprice FROM c1 GROUP BY haoma) AS bON a.`haoma`=b.haomaSET state= CASE WHEN a.`price` = B.bprice THEN 1 ELSE 0 END这个SQL没问题。本着自找麻烦的精神,捉摸着如何写出不一样的答案。首先,如果确定state原值都是1,可.原创 2020-05-19 12:11:33 · 219 阅读 · 0 评论 -
MySQL5.7忘记root密码,重置root密码方法
编辑/etc/my.cnf,添加如下:[mysqld]skip-name-resolveskip-grant-tables保存退出重启mysql服务systemctl restart mysqld使用mysql进入mysql环境mysql -uroot -p此时密码为空,直接回车进入。此时不能使用alter命令修改面,要是用update直接修改user表。不过密码存储的字段已经㐊password了。UPDATE user SET authentication_st原创 2020-05-17 20:50:41 · 437 阅读 · 0 评论 -
CentOS7.6系统下MySQL5.7安装配置
需要个MySQL 5.7实例做实验,安装一个顺便做个笔记。本次安装系统为CentOS7.61.下载rpm安装包:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm2.安装mysql安装源 yum -y localinstall mysql57-community-release-el7-11.noarch.rpm3.安装yum -y install mysql-community...原创 2020-05-16 14:44:28 · 755 阅读 · 0 评论 -
shell小技巧(六十)MySQL备份实例脚本
要求:1.按时备份MySQL指定数据库。2.将备份数据恢复到指定MySQL实例备用3.将备份数据文件压缩,源文件删除4.删除超过10日以上的备份文件(压缩后的)代码:#!/bin/sh#-----startdbuser="bitchicken"dpwd="12345678"dbname="chickens"dbhost="rr-uf6ccxa6393236y3u....原创 2020-04-25 11:07:11 · 237 阅读 · 0 评论 -
MySQL数据类型之字符串(char和varchar)
varchar和char是两种最主要的字符串类型。 这些值在磁盘和内存中如何存储,要根据存储引擎的具体实现。 存储引擎存储char或者varchar值的方式在内存中和磁盘上可能不一样。 varchar用于存储可变长字符串。它比定长类型更节省空间。有一种例外,如果是用了row_format=fixed创建,那么每一行都会使用定长存储。 varchar需...原创 2020-04-13 20:50:31 · 3191 阅读 · 0 评论 -
大数据表修改表结构技巧
MySQL表结构修改,实际就是按修改后的结构和属性创建新表再将原表记录写入。如果表记录太多,可能会导致执行时间较长。当然有些情况也可以避免重建表并写入记录。1.修改缺省值 假设有一张表,字段需要修改默认值,那么可以使用alter colnumalter table 表名 alter column 字段名 set default 1;2.修改字段注释、枚举字段末端增加新值等可以按...原创 2019-11-25 22:41:15 · 856 阅读 · 0 评论 -
某君面试题之一(获取以"ata"开头运行进程的进程号)
题目比较简单,这里总结的重点是思路。一道题目看着简单但实际遇到的时候往往答不好。第一个要点是不要慌,沉住气,不要管面试官,专注于题目。其次从题目入手,抓住要点找到答案。本题要点是获得进程信息并获取进程号,重点是进程输出格式。获得进程信息我们都知道用“ps aux”来获取。如上图,格式特点很清晰。(在答题的时候脑海中要清晰展现,尤其是细节。因为注意到细节才能精准匹配)...原创 2020-02-29 12:14:07 · 240 阅读 · 0 评论 -
数据类型之整数
MySQL整数可以使用几种整数类型:tinyinit,smallinit,mediumint,int,bigint他们分别使用8,16,24,32,64位存储空间。对应的值范围从-2的n-1次方到2的n-1次方减1整数有可选属性unsigned(无符号),表示不允许负值,大致可以使正数上限提高一倍。这一属性只影响存储上限,对空间使用和性能没有影响。整数计算一般使用64为的biginit...原创 2019-11-27 20:47:53 · 508 阅读 · 0 评论 -
数据类型之实数
实数是带有小数部分的数字。它不只是为了存储小数部分,也可以使用decimal存储比bigint还大的整数。MySQL即支持精确类型,也支持不精确类型。float和double类型支持使用标准的浮点运算进行近似计算。decimal类型用于存储精确的小数。MySQL5.0和更高版本,decimal支持精确计算。而早期版本则使用浮点运算来实现decimal的计算,这样会因为精度损失导致一...原创 2019-11-29 11:36:33 · 3773 阅读 · 0 评论 -
MYISAM快速创建索引
先说一个技巧,先禁用索引、再载入数据,然后重新启用索引alter table 表名 disable keys;--load the dataalter table 表名 enable keys;注意:这个技巧对唯一索引是无效的。MYISAM引擎的表快速创建索引的这个技巧属于非官方的,有一定风险。假设有一张表有较大量数据,按如下步骤:1.创建一张结构完全一致的空表。2...原创 2019-11-26 10:29:01 · 885 阅读 · 0 评论 -
MySQL隔离级别之Read Uncommited(读取未提交内容)
Read Uncommited(读取未提交内容)SQL标准定义了4累隔离级别,Read Uncommited(读取未提交内容)是其中之一。该隔离级别,所有事物可以看到其他未提交失误的执行结果。读取未提交的数据也被成为脏读(Dirty Read)。举个例子:老王登录网银查账户余额,同时老王老婆用老王银行卡正在缴费100元。因为某种原因缴费失败。在这种级别下,老王可能看到账户余额少...原创 2019-12-06 22:22:08 · 1359 阅读 · 0 评论