自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 二阶段提交

二阶段提交

2022-08-02 16:23:54 461 1

原创 redis-cluster操作命令

使用cluster命令管理redis cluster集群1、打印集群的信息CLUSTER INFOcluster_state:okcluster_slots_assigned:16384cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6cluster_size:3cluster_current_epoch:12cluster_my_epoch:10cluster_st

2022-02-15 14:58:04 1201

原创 clickhouse运维语句

在 ClickHouse 默认的 system 数据库下(databse),拥有众多的系统表。我们对 ClickHouse 运行状态的各种信息,就主要来自于这些系统表。接下来就列举一些常用的运维 SQL 语句。当前连接数众所周知,CH 对外暴露的原生接口分为 TCP 和 HTTP 两类,通过 system.metrics 即可查询当前的TCP、HTTP 与内部副本的连接数。ch7.nauu.com :) SELECT * FROM system.metrics WHERE metric LIKE

2021-01-11 17:17:19 405

原创 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 274

原创 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 355

原创 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 250

原创 过滤复制小坑一个

数据库这边接了一个需求,要给部分热点表搭建一个从库,以分担主库压力。将热点表进行备份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 557

原创 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 415

原创 tar.xz解压

首先xz -d然后tar -xvf也可以直接使用tar -xvJf相关其他解压相关命令可以参考https://www.cnblogs.com/nhdlb/p/11568991.html

2020-07-31 11:22:56 69

原创 mysql各类临时表

分类mysql的临时表分为两种,一种是用户创建的,另一种是优化器创建的;临时表同时又可以分为内存临时表跟磁盘临时表。内存临时表内存临时表有memory引擎和temptable引擎,memory引擎是从mysql5.6开始使用,temptable引擎是8.0引入的新的引擎。memory引擎不管实际字符多少,都是用定长的空间存储的。temptable引擎会使用变长的空间存储,提高了内存中的存储效率。磁盘临时表磁盘临时表分为myisam临时表,innodb临时表。在mysql5.6以及以前的版本

2020-07-22 17:39:18 679

原创 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 310

原创 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

原创 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

原创 mysql并行复制原理

https://blog.csdn.net/andong154564667/article/details/82117727

2020-07-08 15:30:14 110

原创 innodb页结构

首先,当创建一个表的时候,会生成一个ibd结尾的系统文件该文件包含了数据跟索引,这个文件是分为N个段的,每个段都跟一个索引相关联。段又分为多个区,一个区只能在一个段中,并且固定大小为1M(默认的页大小的情况下)一个区又分为多个页,默认大小是16KB。因此一个区最多可以存放64个页。一个页可以存放多个行,innodbB+树规定一个页最少要存放两个行。因此一行的大小限制为8k。页分裂B+树的特点,查找不仅可以自上而下,还可以水平查找,因为每个页之间是双向链表。当插入自增主键值时,页中如果有足够的空

2020-07-07 17:47:22 521

原创 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 156

转载 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 292

原创 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 192

原创 mysql突然变慢的原因分析

sql执行突然变慢的原因,有时候,一条语句执行很快,有时候又执行很慢。mysql在执行更新操作的时候,写磁盘的时候,是写的redolog和内存,写完就返回更新成功, 此时数据文件并没有被更新。内存数据和磁盘数据就不一致,这时候内存页也叫脏页,内存数据写入到磁盘之后,这个时候内存数据页就叫干净页,这个过程叫flush 。执行的很快的时候就是写内存和日志,执行的很慢的时候就是在flush。flush的场景1.当redolog的空间用完了,mysql就会停止所有的更新操作,把checkpoiont指针

2020-07-01 14:38:44 2056

原创 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 2028

原创 PG参数调优

修改方式:ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }查看方式:show all;show $value;max_connections 默认值是100。fsync 默认值是on,强制把数据同步到磁盘。shared_buffers 默认值是24M,决定有多少内存可以被postgresql用于缓存数据。work_mem 默认值是1M,使用内部排序和一些复杂的查询都在b

2020-06-29 15:52:18 637

原创 PG yum安装以及目录结构

# Install the repository RPM:yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm# Install PostgreSQL:yum install postgresql12-server# Optionally initialize the database and enable automati

2020-06-22 17:36:55 637

原创 Linux强大监控工具--dstat

说来惭愧,这是我第一次接触这个工具,之前一直用vmstat,iostat,iotop,iftop,netstat之类的工具。直接上图,就看颜色好不好看,功能多不多就完事了。dstat 默认选项是-cdngy参数,分别显示cpu、disk、net、page、system的对应信息,如下:第一列cpu的状态中usr,sys,idl,wai,hiq,siq分别代表用户占比,系统占比,空闲占比,等待占比,硬中断,软中断dsk一列分别是磁盘读写状态net一列分别是网络收发状态paging一列是系统分

2020-06-19 10:47:10 246

原创 为什么调整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 2709

原创 mysql--join优化

首先创建两张表t1,t2mysql> show create table t1;+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Tabl

2020-06-18 17:11:56 182

原创 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 260

原创 MGR+consul搭建

对于mgr的搭建可以自行解决环境信息如下192.168.56.211 56-211 3307 consul-client192.168.56.212 56-212 3306 consul-client192.168.56.213 56-213 3306 consul-client192.168.56.174 56-174

2020-06-16 17:24:34 338 1

原创 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 696

原创 mysqldump进行全备份的时候,系统库表是否会备份

使用mysqldump,加参数–all-databases对数据库进行备份information_schema库,performance_schema库,sys库和mysql.gtid_executed不会被备份,其他所有的库表都会备份

2020-06-12 17:46:56 763

原创 mysql源码环境--gdb初探

上文已经完成编译安装,并且初始化完成。[https://blog.csdn.net/weixin_43541262/article/details/106665205]这里gdb7.6.1我直接是yum安装的yum -y install gdb[root@localhost bin]# gdb mysqldGNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7Copyright (C) 2013 Free Software Foundation

2020-06-12 17:21:28 135

原创 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 300

原创 mysql源码环境搭建---编译安装

1、安装包下载wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.29.tar.gz (该包包含了boost头文件的包,就不用单独再去下载boost包)yum install -y wget cmake make bison bison-devel libaio-devel gcc gcc-c++ git ncurses-devel openssl-devel cmake ./ -DCMAKE_BUILD_TYPE=D

2020-06-10 16:49:38 286

原创 xtrabackup vs mysqldump

xtrabackup vs mysqldump2020-06-101、原理:xtrabackup是物理备份工具,原理是直接copy数据页mysqldump是逻辑备份工具,原理是生成sql语句2、是否存在锁等待:xtrabackup会,它在备份时会产生短暂的全局读锁FTWL(flush table with read lock),用于拷贝frm/MYD/MYI等文件,以及记录binlog信息。如果MyISAM表的数据量非常大,则拷贝时间就越长,加锁的时间也越长mysqldump有可能会。如果只是

2020-06-10 10:37:55 975

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除