![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 77
勤天
一直在路上,路上的风景很精彩!
展开
-
The server quit without updating PID file
错误:/etc/init.d/mysql startStarting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).原因:1、没有权限chown -R mysql:mysql /var/datachmod -R 755 /usr/local/mysql/data然后重新启动MySQL2、已经存在mysql进程..原创 2022-03-21 10:31:08 · 1116 阅读 · 0 评论 -
Can‘t connect to local MySQL server through socket mysqld.sock
问题:Can't connect to local MySQL server through socket '/tmp/mysqld.sock'[root@lfqb data]# mysql -urootERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)原因:mysql客户端默认去找 /tmp/mysqld.sock 做连接,而mysqld.s..原创 2022-03-21 10:27:25 · 733 阅读 · 0 评论 -
MySQL server has gone away
目录1、原因一 MySQL 服务宕了2、原因二 mysql连接超时3、原因三 mysql请求链接进程被主动kill4、原因四 Your SQL statement was too largemysql出现ERROR : (2006, 'MySQL server has gone away') 问题意思是指client和MySQL server之间的链接断了。造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的原创 2022-03-18 10:19:29 · 1695 阅读 · 0 评论 -
MySQL账号与权限详解
目录一、前言二、全局权限三、db 权限四、表权限和列权限五、flush privileges 使用场景六、总结一、前言在 MySQL 里面,grant 语句是用来给用户赋权的。不知道你有没有见过一些操作文档里面提到,grant 之后要马上跟着执行一个 flush privileges 命令,才能使赋权语句生效。我最开始使用 MySQL 的时候,就是照着一个操作文档的说明按照这个顺序操作的。那么,grant 之后真的需要执行 flush privileges原创 2022-03-18 09:41:16 · 2154 阅读 · 0 评论 -
show variables 系统变量(配置参数)
目录一、mysql变量介绍二、查看系统变量三、设置系统变量一、mysql变量介绍mysqld服务维护两种变量全局变量影响服务器的全局操作 会话变量影响具体客户端连接相关操作1、服务器启动时,将所有全局变量初始化为默认值。可以在选项文件或命令行中指定的选项来更改这些默认值。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量。要想更改全局变量,必须具有SUPER权限。2、服务器还为每个客户端连接维护会话变量。连原创 2022-03-17 10:45:40 · 1072 阅读 · 0 评论 -
show profiles 查看sql语句执行状态
目录一、show profiles作用二、具体用法1、查看profile是否开启2、开启profiling3、查看所有语句的执行步骤4、具体查看某条语句执行步骤5、查看单个sql语句的cpu、IO情况6、查看具体 show profile可以查看哪些信息一、show profiles作用是为了查看具体的语句执行状态,在mysql 5.5 以后加了一个profile设置,可以观察到具体语句的执行步骤.二、具体用法1、查看profile是否开启&原创 2022-03-17 10:36:30 · 1035 阅读 · 0 评论 -
show processlist 查看当前线程状态
目录一、show processlist使用1、在mysql终端外操作2、在mysql终端操作3、返回信息说明二、长期分析观察mysql进程找出效率低的语句三、State说明一、show processlist使用对于一个mysql连接,或者一个线程,任何时刻都有一个状态,该状态表示了mysql当前正在做什么,很多方式能查看当前的状态,两种方式可以查看,具体如下:1、在mysql终端外操作mysql -hhostname -Pport -uuserna原创 2022-03-16 12:01:58 · 876 阅读 · 0 评论 -
show status 查看服务器状态变量
目录一、前言二、具体命令1、在mysql命令行中使用2、在命令行外部三、详细介绍四、具体状态详解五、常用show status 语句一、前言有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于我们根据当前MySQL服务器的运行状态进行...原创 2022-03-16 11:45:14 · 681 阅读 · 0 评论 -
mysqldump全量/增量 进行备份/恢复
目录一、mysql备份说明1、myisam备份介绍2、innodb备份介绍3、全量备份和增量备份4、一些备份工具二、mysqldump全量备份与恢复1、mysqldump全量备份2、mysql恢复数据指令3、注意事项4、使用mysqldump错误汇总三、增量备份、恢复1、增量备份步骤2、增量恢复 步骤3、mysqlbinlog介绍4、使用mysqlbinlog 恢复中错误处理一、mysql备份说明mysql的备份可以分为冷备份和热备原创 2022-03-16 11:34:51 · 8238 阅读 · 0 评论 -
MHA实现mysql自动故障转移
一:MHA介绍什么是mha,有什么特性 ?主服务器的自动监控和故障转移MHA监控复制架构的主服务器,一旦检测到主服务器故障,就会自动进行故障转移。即使有些从服务器没有收到最新的relay log,MHA自动从最新的从服务器上识别差异的relay log并把这些日志应用到其他从服务器上,因此所有的从服务器保持一致性了。MHA通常在几秒内完成故障转移,9-12秒可以检测出主服务器故障,7-10秒内关闭故障的主服务器以避免脑裂,几秒中内应用差异的relay log到新的主服务器上,整个过程可以在10-3原创 2022-03-15 18:18:04 · 622 阅读 · 0 评论 -
keepalive实现mysql自动故障转移
一、前言Keepalived是用来实现高可用的,提供健康检查,故障转移,即保证主LVS宕机后,从LVS可以在很短时间顶上,从而保证了系统或网站的稳定性。Keepalived在后端的realserver接收不到主节点的信息之后,keepalived能够自己调用ipvsadm命令生成规则,能够自动实现,将主节点的VIP以及ipvs规则“拿过来”,应用在从节点上,继续为用户服务。拓扑图:二:配置keepalived1 keepalive安装分别在master1,master2上安装keepalive原创 2022-03-15 18:15:59 · 1108 阅读 · 0 评论 -
Atlas中间件实现Mysql读写分离
目录一、Atlas介绍二、实现Mysql读写分离1、实验环境2、搭建一主一从配置3、安装Atlas一、Atlas介绍[ˈætləs]Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。原创 2022-03-11 11:02:17 · 1469 阅读 · 0 评论 -
mysql-proxy实现读写分离
目录一、工作拓扑二、实验环境三、配置主从复制四、使用mysql-proxy1、安装mysql-proxy2、配置mysql-proxy,创建主配置文件3、修改读写分离配置文件4、启动mysql-proxy5、测试读写分离一、工作拓扑MySQL Proxy有一项强大功能是实现“读写分离”,基本原理是让主数据库处理写方面事务,让从库处理SELECT查询。Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且.原创 2022-03-11 10:56:32 · 1381 阅读 · 0 评论 -
Amoeba实现mysql读写分离
一、关于读写分离amoeba : 英[ə’mi:bə]读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。二、Amoeba 是什么Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路原创 2022-03-11 10:50:26 · 2450 阅读 · 1 评论 -
表分区详解
目录一、什么是表分区?二、表分区与分表的区别三、表分区有什么好处?四、分区表的限制因素五、如何判断当前MySQL是否支持分区?六、MySQL支持的分区类型有哪些?1、RANGE分区2、LIST分区3、HASH分区4、KEY分区一、什么是表分区?mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数原创 2022-03-09 11:27:48 · 5637 阅读 · 0 评论 -
分表、分库、分区的区别和业务场景
目录一、分区、分表、分库的简单介绍二、常用的单机数据库的瓶颈三、分区介绍四、分表使用场景1、什么时候考虑分表?2、分表解决的问题3、分区和分表的区别与联系五、分库使用场景1、什么时候考虑使用分库?2、分库解决的问题3、读写分离六、拆分之后面临新的问题七、数据存储的演进1、单库单表2、单库多表3、多库多表八、总结九、案例分析一、分区、分表、分库的简单介绍分区:就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但原创 2022-03-09 11:18:29 · 2513 阅读 · 0 评论 -
分库分表介绍
目录一、前言二、何谓数据切分?三、垂直切分1、垂直分库2、垂直分表3、垂直切分优缺点4、拆分需考虑的业务因素四、水平切分1、水平分库2、水平分表3、水平切分优缺点五、垂直与水平切分的联合使用六、数据分片规则1、Hash取模分表2、数值Range分表3、一致性Hash算法七、分库分表带来的问题1、分布式事务问题2、跨节点关联查询Join 问题3、跨节点分页、排序、函数问题4、全局主键避重问题5、数据迁移问题...原创 2022-03-09 11:14:53 · 12921 阅读 · 0 评论 -
不停止MySQL服务增加从库的两种方式
目录一、mysqldump方式二、xtrabackup方式(推荐)一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快,不锁表。为什么不锁表?因为自身会监控主库日志,如果有更新的数据,就会先写到一个文件中,然后再回归到备份文件中,从而保持数据一致性。实验环境:主...原创 2022-03-08 13:56:18 · 1617 阅读 · 0 评论 -
MySQL主从- slave跳过错误
目录一、跳过指定数量的事务二、修改mysql的配置文件三、模拟错误场景mysql主从复制,经常会遇到错误而导致slave端复制中断,这个时候一般就需要人工干预,跳过错误才能继续 跳过错误有两种方式:一、跳过指定数量的事务mysql>slave stop;mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务mysql>slave start二、修改mysql的配置文件通过slave_原创 2022-03-08 13:49:49 · 4649 阅读 · 0 评论 -
主从同步延迟
目录一、查看主从是否延迟二、延迟产生的原因三、延迟解决方案1、架构方面2、硬件方面3、mysql主从同步加速4、从文件系统本身属性角度优化5、同步参数调整一、查看主从是否延迟在从服务器上通过 show slave satus 查看#SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称Master_Log_File:#在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置Read_Master_Log_Po...原创 2022-03-08 13:45:07 · 756 阅读 · 0 评论 -
MySQL主从复制:实践
目录一、在master上创建复制帐号二、配置master,开启binlog三、配置slave四、启动slave1、在slave服务器上操作2、开启slave3、查看slave状态五、 查看master和slave的线程状态1、查看master线程的状态2、查看slave线程状态六、推荐的复制参数配置1、sync_binlog2、如果使用innodb 的推荐设置3、在备库上推荐如下设置4、通过relay_log_purge 选项来控制5、通过re原创 2022-03-07 14:34:46 · 908 阅读 · 0 评论 -
MySQL复制详解
目录一、复制概述二、复制解决的问题1、数据分布2、负载均衡3、备份4、高可用性和容灾5、MySQL升级测试三、复制的工作流程1、简述工作流程2、具体工作流程四、复制两种方式1、基于语句的复制(Statement-Based Replication)2、基于行的复制(Row-Based Replication)五、复制所用到的文件1、二进制文件2、中继日志文件3、备库连接到主库的信息4、前备库复制的二进制日志和中继日志坐标六、发送复制原创 2022-03-07 14:14:47 · 5102 阅读 · 0 评论 -
explain 查看SQL执行计划
目录一、环境准备二、explain 输出解释idselect_typetabletypepossible_keyskeykey_lenrefrowsExtraMySQL EXPLAIN命令是查询性能优化不可缺少的一部分,常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描。一、环境准备创建2张表user_info 和order_info#创建user_info原创 2022-02-26 11:14:55 · 2434 阅读 · 0 评论 -
MySQL设置索引的原则和技巧
目录一、查看索引使用情况二、 索引的使用技巧一、查看索引使用情况mysql> show status like 'handler_read%';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Handler_read_first | 0 || Handler_read_key | 0原创 2022-02-26 11:01:15 · 968 阅读 · 0 评论 -
MySQL有时为什么会选错索引?
目录一、优化器的逻辑1、扫描行数是怎么判断的?2、MySQL是怎样得到索引的基数的?二、索引选择异常和处理1、采用 force index 强行选择一个索引2、根据具体业务逻辑修改代码3、新建一个更合适的索引,来提供给优化器做选择,或删掉误用的索引不知道你有没有碰到过这种情况,一条本来可以执行得很快的语句,却由于 MySQL 选错了索引,而导致执行速度变得很慢?一、优化器的逻辑优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在原创 2022-02-26 10:52:32 · 301 阅读 · 0 评论 -
MySQL组合索引(多列索引)使用与优化
目录一、多列索引二、测试案例及过程1、创建一个测试数据库和数据表2、添加两个单列索引3、查询一条数据利用到两个列的索引4、查看执行计划5、然后删除以上索引,添加多列索引6、再次查询三、多列索引的使用顺序1、怎么选择建立组合索引时,列的顺序2、组合索引的使用规则一、多列索引我们经常听到一些人说"把WHERE条件里的列都加上索引",其实这个建议非常错误。在多个列上建立单独的索引大部分情况下并不能提高MySQL的查询性能。MySQ...原创 2022-02-22 15:08:03 · 10843 阅读 · 1 评论 -
普通索引和唯一索引的区别?
目录一、示例引入1、查询过程2、更新过程二、change buffer 的使用场景三、索引选择和实践四、change buffer 和 redo log一、示例引入假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的 SQL 语句select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';原创 2022-02-22 14:56:59 · 246 阅读 · 0 评论 -
MySQL回表、覆盖索引、前缀索引、索引下推详解
目录一、回表详解二、覆盖索引三、前缀索引四、索引下推一、回表详解建立如下表:mysql> create table T ( ID int primary key, k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '', index k(k))engine=InnoDB;insert into T values(100,1, 'aa'),(200,2,'bb'),(3原创 2022-02-22 14:49:57 · 465 阅读 · 0 评论 -
MySQL索引数据结构详解
一、常见索引数据结构索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。但是实现索引的方式却有很多种,所以这里也就引入了索引模型的概念。可以用于提高读写效率的数据结构很多,这里我先给你介绍三种常见、也比较简单的数据结构,它们分别是哈希表、有序数组和搜索树。1、哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函...原创 2022-02-21 11:47:30 · 4259 阅读 · 1 评论 -
MySQL索引介绍
一、索引简介1、索引是什么?MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构,这些数据结构以某种方式引用(指向)数据。索引的本质是:数据结构。可以简单理解为“排好序的快速查找数据结构”一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。因此,首先你要明白的一点就是,索引它也是一个文件,它是要占据物理空间的。比如对于MyISAM存储引擎来说:....原创 2022-02-21 11:36:28 · 3166 阅读 · 4 评论 -
MySQL锁争用情况查询
一、查询表级锁争用情况可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:mysql> show status like 'table%';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Table_locks_immediate | 2979 || ..原创 2022-02-18 15:52:31 · 895 阅读 · 0 评论 -
MySQL锁介绍
目录一、前言二、MySQL锁概述1、引擎不同,锁的类型不同2、锁的特性三、全局锁1、什么是全局锁?2、使用全局锁的场景3、为什么要使用全局锁?4、如何解决视图逻辑不一致的问题?5、全库只读设置方法的比较四、mysql表锁1、元数据锁2、如何安全的给表加资源?五、行级锁1、什么是行级锁?2、两阶段锁协议3、两阶段锁在事务上的帮助六、总结一、前言锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算原创 2022-02-18 15:48:43 · 1103 阅读 · 1 评论 -
Mysql关于DDL、DML、DCL、TCL说明
DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表、索引、视图、存储过程、触发器等,常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。DML(Data Manipulation Language)语句:即数据操纵语句,用来查询、添加、更新、删除等,常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE..原创 2022-02-18 15:39:35 · 280 阅读 · 0 评论 -
MySQL事务原理深入分析
目录一、示例介绍二、“快照”在 MVCC 里是怎么工作的?1、数据的多版本介绍2、事务的一致性视图3、对图1结果的解释4、将图1中的事务C,修改成 不是马上提交的,运行结果怎样?5、读提交级别下,图1中事务A和事务B的值是怎样的?三、总结一、示例介绍在行锁的时候,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到...原创 2022-02-17 14:34:38 · 611 阅读 · 0 评论 -
MySQL事务隔离级别详解
目录一、 4种隔离级别1、读未提交(Read Uncommitted)2、读提交(Read Committed)3、可重复读(Repeated Read)4、串行读(Serializable)二、不同隔离级别的示例三、隔离级别的设置与查看1、设置隔离级别2、查看当前隔离级别四、事务隔离的实现原理1、隔离级别实现的原理2、为什么建议尽量不要使用长事务?3、如何避免长事务对业务的影响?五、隔离级别引起的问题1、脏读2、不可重复读3、幻读4、原创 2022-02-17 11:18:39 · 1743 阅读 · 0 评论 -
MySQL事务介绍
目录一、什么是事务?二、事务的 ACID三、Mysql事务的使用1、支持事务的表引擎2、事务的使用3、使用autocommit来设置事务行为4、PHP实现事务一、什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消之前到事原创 2022-02-17 11:07:23 · 570 阅读 · 0 评论 -
卸载编译安装的mysql
目录一、检查MySQL是否启动二、关闭mysql三、查找MySQL的安装目录并彻底删除四、删除一些配置文件五、删除MySQL用户以及用户组一、检查MySQL是否启动查看mysql是否启动/etc/init.d/mysql status#或ps -ef | grep mysql二、关闭mysql/etc/init.d/mysql stop三、查找MySQL的安装目录并彻底删除#查找mysql[root@DB-Server init原创 2022-02-16 14:35:37 · 498 阅读 · 0 评论 -
mysql的session、global变量详解
目录一、局部变量二、用户变量三、会话变量四、全局变量mysql的变量分为两种:系统变量和用户变量,但在实际使用中,还会遇到诸如局部变量、会话变量、全局变量等,一、局部变量局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。局部变量一般用declare来声明,可以使用default来说明默认值。drop procedure if exists add;cre...原创 2022-02-16 14:25:40 · 2380 阅读 · 0 评论 -
#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this i
#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this i原创 2017-01-11 11:01:04 · 9403 阅读 · 0 评论 -
mysql 5.7.10使用客户端mysql-font 连接异常 提示:The'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is dis
mysql 5.7.10使用客户端mysql-font 连接异常 提示:The'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is dis转载 2017-01-11 10:33:32 · 4278 阅读 · 0 评论