![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 80
爱吃洋芋菜
心动一万次,不如行动一次
展开
-
二阶段提交
二阶段提交原创 2022-08-02 16:23:54 · 442 阅读 · 1 评论 -
mysql并行复制小坑一个
最近收到频繁告警,主从延迟的,查看从库对应的参数发现slave_parallel_type还是database。于是想着调整参数该参数为LOGICAL_CLOCK来实现真正的并行复制。于是执行stop slave;set global slave_parallel_type = LOGICAL_CLOCK;start slave;但是问题出现了,通过show slave status发现报错如下 Last_SQL_Errno: 1755 Last_SQL_Error: Cannot exe原创 2020-09-02 14:15:24 · 272 阅读 · 0 评论 -
FLUSH TABLE WITH READ LOCK操作明细
ftwrl主要有三个步骤:上全局读锁(lock_global_read_lock)清理表缓存(close_cached_tables)上全局 COMMIT 锁(make_global_read_lock_block_commit)第一步的作用是堵塞更新,备份时,我们期望获取此时数据库的一致状态,不希望有更多的更新操作进来。对于 innodb 引擎而言,其自身的 MVCC 机制,可以保证读到老版本数据,因此第一步对它使多余的。第二步,清理表缓存,这个操作对于 myisam 有意义,关闭 my原创 2020-08-20 16:16:12 · 352 阅读 · 0 评论 -
mysql mdl锁
1、metadata lock是表级锁,是加在server层的,适用于所有的存储引擎2、所有的dml操作都会加一个metadata读锁3、所有的ddl操作会加一个metadata写锁正常情况下遇到的问题是通过show processlist查看会存在大量的waiting for table metadata lock这是因为存在mdl读写锁的等待,但是生产环境又有大量的查询,但是全部夯住,连接数会被迅速消耗完。举一个简单例子:session1启动一个事务,对表t1执行一个简单的查询;sessi原创 2020-08-07 13:59:23 · 248 阅读 · 0 评论 -
过滤复制小坑一个
数据库这边接了一个需求,要给部分热点表搭建一个从库,以分担主库压力。将热点表进行备份mysqldump -uxxx -pxxx -h0.0.0.0 -P3377 --single-transaction --master-data=2 xxx xxx > backup.sql在从库进行恢复mysql -uxxx -p -D xxx < backup.sql在从库的配置文件中添加过滤表选项replicate_do_table = xxx.xxx1,xxx.xxx2,xxx.xxx原创 2020-08-05 17:04:21 · 551 阅读 · 0 评论 -
mysql各类临时表
分类mysql的临时表分为两种,一种是用户创建的,另一种是优化器创建的;临时表同时又可以分为内存临时表跟磁盘临时表。内存临时表内存临时表有memory引擎和temptable引擎,memory引擎是从mysql5.6开始使用,temptable引擎是8.0引入的新的引擎。memory引擎不管实际字符多少,都是用定长的空间存储的。temptable引擎会使用变长的空间存储,提高了内存中的存储效率。磁盘临时表磁盘临时表分为myisam临时表,innodb临时表。在mysql5.6以及以前的版本原创 2020-07-22 17:39:18 · 677 阅读 · 0 评论 -
mysql面试问题汇总
1、varchar跟char的区别在单字节字符集下,char(N)在内存存储的时候总是定长,而且没有变长字段长度列表中。在多字节字符集下,char(N)如果存储的字节数超过N,那么char(N)将和varchar(N)没有区别。在多字节字符集下,如果存储的字节数少于N,那么存储N个字节,后面补空格,补到N字节长度。都存储变长的数据和变长字段长度列表。 varchar(N)无论是什么字节字符集,都是变长的,即都存储变长数据和变长字段长度列表。2、varchar(50)跟int(50)中50的含义var原创 2020-08-05 09:03:49 · 412 阅读 · 0 评论 -
MHA搭建以及测试
环境信息192.168.1.84 主库 manager节点(机器原因被迫在该机器上,应该单独部署的)192.168.1.79 从库192.168.1.101 从库(主从环境自己可以搭建)slave的配置文件:log_bin=/home/birdteam/log/mysql-binread_only=1relay_log_purge=0一主一从不用此项,两从及以上建议打开此参数,防止切换为成主库的从库自动删除中继日志后,无法给其他从库应用这部分日志master:ht原创 2020-07-21 15:01:12 · 302 阅读 · 0 评论 -
mysql各种故障场景的数据恢复手段汇总
分场景,对于mysql的数据恢复做一下总结:一、有全备份1、物理备份比如使用xtrabackup,库级别的恢复,直接新搭建一个库,进行恢复就行。对于表级别的快速恢复,可以使用恢复表空间,直接拷贝ibd文件就ok(myisam直接拷贝授权即可,innodb还需要执行alter table t discard/import tablespace)2、逻辑备份比如使用mydumper,库级别可以直接恢复。表级别可以恢复单个的sql文件。对于mysqldump,恢复单表可以使用如下方法sed -e原创 2020-07-17 14:43:03 · 217 阅读 · 0 评论 -
mysql快速插入数据
如果innodb引擎,先在表结构中去掉除主键以外索引,进行如下调整1、关闭binlog, 对应参数是log_bin=02、调整innodb_flush_log_at_trx_commit=03、调整innodb_io_capacity=4000,innodb_io_capacity_max=8000(根据磁盘iops调整)4、关闭foreign_key_checks = off5、关闭unique_checks = off6、innodb_doublewrite = off然后加上索引。如果原创 2020-07-17 10:46:29 · 109 阅读 · 0 评论 -
mysql并行复制原理
https://blog.csdn.net/andong154564667/article/details/82117727原创 2020-07-08 15:30:14 · 109 阅读 · 0 评论 -
innodb页结构
首先,当创建一个表的时候,会生成一个ibd结尾的系统文件该文件包含了数据跟索引,这个文件是分为N个段的,每个段都跟一个索引相关联。段又分为多个区,一个区只能在一个段中,并且固定大小为1M(默认的页大小的情况下)一个区又分为多个页,默认大小是16KB。因此一个区最多可以存放64个页。一个页可以存放多个行,innodbB+树规定一个页最少要存放两个行。因此一行的大小限制为8k。页分裂B+树的特点,查找不仅可以自上而下,还可以水平查找,因为每个页之间是双向链表。当插入自增主键值时,页中如果有足够的空原创 2020-07-07 17:47:22 · 521 阅读 · 0 评论 -
mysql double write
double write就是共享表空间的一部分,128个页(两个区),也就是2M,数据页在flush之前,会先把页面写入该区域,这样数据就相当于写了两次,成为两次写为什么会有double write,直接从缓存写入磁盘岂不是更加快嘛,其实这是为了解决计算机或者操作系统在极端情况下不能保证操作的原子性,mysql默认数据页大小为16K,普通磁盘一个扇区是512字节,SSD一次写入大小为4K,所以对于16K的数据页来说需要多次I/O才能完成写入,如果中间出现意外,直接会导致数据页损坏。发生partial wr原创 2020-07-03 16:36:13 · 154 阅读 · 0 评论 -
MySQL与PostgreSQL对比
网上已经有很多拿PostgreSQL与MySQL比较的文章了,这篇文章只是对一些重要的信息进行下梳理。在开始分析前,先来看下这两张图:MySQLMySQL声称自己是最流行的开源数据库。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。MySQL最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个版本:Stand.转载 2020-07-02 11:41:35 · 290 阅读 · 0 评论 -
mysql表碎片回收
1、alter table t engine = innodb;重建整个表,对于支持online ddl的版本,当线上进行操作的时候要调大innodb_online_alter_log_max_size参数,因为该参数会记录ddl过程中的dml操作,而此临时文件存放在临时排序区(innodb_sort_buffer_size),innodb_sort_buffer_size参数上限由innodb_online_alter_log_max_size参数决定。2、optimize table t; 等价于A原创 2020-07-01 17:43:26 · 190 阅读 · 0 评论 -
mysql突然变慢的原因分析
sql执行突然变慢的原因,有时候,一条语句执行很快,有时候又执行很慢。mysql在执行更新操作的时候,写磁盘的时候,是写的redolog和内存,写完就返回更新成功, 此时数据文件并没有被更新。内存数据和磁盘数据就不一致,这时候内存页也叫脏页,内存数据写入到磁盘之后,这个时候内存数据页就叫干净页,这个过程叫flush 。执行的很快的时候就是写内存和日志,执行的很慢的时候就是在flush。flush的场景1.当redolog的空间用完了,mysql就会停止所有的更新操作,把checkpoiont指针原创 2020-07-01 14:38:44 · 2041 阅读 · 0 评论 -
mysql底层数据结构
该文章摘自腾讯技术工程,作者junshili.我们都知道mysql底层使用的是B+树进行存储,但是为什么呢?1. 哈希表(Hash)哈希表是做数据快速检索的有效利器。哈希算法:也叫散列算法,就是把任意值(key)通过哈希函数变换为固定长度的key地址,通过这个地址进行具体数据的数据结构。考虑这个数据库表user,表中一共有7个数据,我们需要检索id=7的数据,SQL语法是:select * from user where id=7;哈希算法首先计算存储id=7的数据的物理地址addr=.原创 2020-06-30 10:37:18 · 2020 阅读 · 0 评论 -
为什么调整join_buffer_size能优化join语句
好多人面对join语句慢的情况下,会调整join_buffer_size,但是为什么调整jbs能提高速度呢,还是借用上一篇中的两个表作为例子(链接地址:https://blog.csdn.net/weixin_43541262/article/details/106837972)表1跟表2两个表的数据分别魏M,N 。表2用不到索引的情况下使用Simple Nested-Loop Join算法扫描的行数是1001000=10万行。使用Block Nested-Loop Join算法扫描的行数是1000原创 2020-06-18 17:33:17 · 2699 阅读 · 0 评论 -
mysql--join优化
首先创建两张表t1,t2mysql> show create table t1;+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Tabl原创 2020-06-18 17:11:56 · 180 阅读 · 0 评论 -
windows源码安装mysql
首先下载MySQL安装包地址:https://downloads.mysql.com/archives/community/下载完成之后找到自己的目录解压在解压完的目录中创建一个自己的配置文件my.ini。basedir就是自己解压的目录,datadir,port之类的,自己配置。[mysql]default-character-set=utf8[mysqld]port=3306basedir=D:\mysqldatadir=D:\mysql\data max_connections=原创 2020-06-17 16:47:55 · 258 阅读 · 0 评论 -
MySQL----flush tables
语法:FLUSH [NO_WRITE_TO_BINLOG | LOCAL] { flush_option [, flush_option] ... | tables_option}flush_option: { BINARY LOGS | DES_KEY_FILE | ENGINE LOGS | ERROR LOGS | GENERAL LOGS | HOSTS | LOGS | PRIVILEGES | OPTIMIZER_COSTS | Q原创 2020-06-16 16:50:33 · 693 阅读 · 0 评论 -
ibdata1文件暴涨的原因
一、ibdata1是什么ibdata1是innodb系统表空间文件,包含有1、data dictionary2、undo space3、rollback segments4、insert buffer/change buffer5、double write buffer6、Foreign key constraint system tables二、暴涨的原因1、有大量的并发事务,产生了大量的undo log2、有旧的事务长时间没有提交3、服务器磁盘io性能太差,purge太慢4、初始原创 2020-06-12 17:18:31 · 299 阅读 · 0 评论