- 博客(416)
- 资源 (4)
- 收藏
- 关注
原创 2021-04-30
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主从服务器,这就需要人工干预,既费时费力,还会造成一段时间内服务不可用,这不是一种推荐的方式,因此笔者没有介绍主从切换技术。更多的时候,我们优先考虑哨兵模式,它是当前企业应用的主流方式。哨兵模式概述Redis可以存在多台服务器,并且实现了主从复制的功能。哨兵模式是一种特殊的模式,首先 Redis 提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待 Redis 服务器响应...
2021-04-30 11:23:39
217
原创 字符串操作
172.16.208.144:16379> get CHINAMOBILE_CALL_BACK_MSG_HANDLED_PREFIX_1_585070145972355072_18105160137
2021-04-30 10:51:26
259
原创 查看主从情况
172.16.208.144:16379> info replication# Replicationrole:slavemaster_host:172.16.208.146master_port:16379master_link_status:upmaster_last_io_seconds_ago:0master_sync_in_progress:0slave_repl_offset:38734833022slave_priority:100slave_read_only:1
2021-04-30 10:45:39
191
原创 查看redis默认过期策略
一、查看redis过期策略172.16.208.144:16379> config get maxmemory-policymaxmemory-policynoeviction二、查看redis使用内存大小172.16.208.144:16379> config get maxmemorymaxmemory0注:内存并没有限制三、查看redis的key占用空间172.16.208.144:16379> info memory# M...
2021-04-30 10:42:16
1805
原创 keeplived+nginx使用
Nginx互备方案实现在此过程中,如果nginx服务器出现故障,整个环境就会出现瘫痪,此时需要对nginx进行心跳检测,当这台服务器出现故障时,能否转移到其他服务器上去。Keepalived的配置非常简单,仅需要配置一个文件即可完成对HA Cluster和LVS服务节点监控。Keepalived的安装已经介绍。在通过Keepalived搭建高可用的LVS集群实例中,主、备Director Server都需要安装Keepalived软件,安装成功后,默认配置文件路径为/etc/keep...
2021-04-26 14:28:32
260
原创 Haproxy安装配置
安装# tar -xvf haproxy-2.0.14.tar.gz# uname -r3.10.0-1062.18.1.el7.x86_64# cd haproxy-2.0.14#编译 uname -r #查看系统内核版本号#make TARGET=linux3100 CPU=x86_64 PREFIX=/usr/local/haprpxy#安装# make install PREFIX=/usr/local/haproxy初始化Haproxy# mkd..
2021-04-26 14:02:33
220
原创 等待事件
第一章节 等待事件1.1performance_schema查看配置表如下mysql> SELECT table_nameFROM information_schema.tables tWHERE t.table_schema='performance_schema'AND t.table_name LIKE 'setup%' ;+-------------------+| table_na...
2021-04-16 05:19:02
522
原创 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
使用keys指令可以扫出指定模式的key列表。对方接着追问:如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?这个时候你要回答redis关键的一个特性:redis的单线程的。keys指令会导致线程阻塞一段时间,线上服务会停顿,直到指令执行完毕,服务才能恢复。这个时候可以使用scan指令,scan指令可以无阻塞的提取出指定模式的key列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间会比直接用keys指令长。...
2021-04-15 13:38:28
274
原创 执行计划查看
执行计划包含的信息 id 有一组数字组成。表示一个查询中各个子查询的执行顺序;- id相同执行顺序由上至下。- id不同,id值越大优先级越高,越先被执行。- id为null时表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中。select_type 每个子查询的查询类型,一些常见的查询类型。| id | select_ty pe | descripti on || ---- | ------------ | ---...
2021-04-14 17:54:51
179
原创 数据库的乐观锁和悲观锁是什么?怎么实现的
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候就把事务锁起来,直到提交事务。实现方式:使用数据库中的锁机制乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的时候把事务锁起来,通过version的方式来进行锁定。实现方式:乐一般会使用版本
2021-04-14 17:13:47
789
原创 什么是事务的隔离级别?MySQL的默认隔离级别是什么
为了达到事务的四大特性,数据库定义了4种不同的事务隔离级别,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。| 隔离级别 | 脏读 | 不可重复 读 | 幻影读 || ------------------ | ---- | ------------ | ------ || READ- UNCOM MITTED | √ | √ ...
2021-04-14 17:09:16
349
原创 数据库为什么使用B+树而不是B树
B树只适合随机检索,而B+树同时支持随机检索和顺序检索;B+树空间利用率更高,可减少I/O次数,磁盘读写代价更低。一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗。B+树的内部结点并没有指向关键字具体信息的指针,只是作为索引使用,其内部结点比B树小,盘块能容纳的结点中关键字数量更多,一次性读入内存中可以查找的关键字也就越多,相对的,IO读写次数也就降低了。而IO读写次数是影响索引检索效率的最大因素;
2021-04-14 17:08:07
1391
原创 hash索引与b+ 树索引区别
Hash索引和B+树所有有什么区别或者说优劣呢?首先要知道Hash索引和B+树索引的底层实现原理:hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据。B+树底层实现是多路平衡查找树。对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。么可以看出他们有以下的不同:hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询。因为在hash索引中经过has
2021-04-14 17:03:07
1137
原创 锁现象排查方法
第一章节锁等待原因介绍1.1sys介绍mysql 5.6也可以有sys库(基于performance_schema的视图)。sys库是一个开源项目,在githup上早就有,是一个DBA的开源工具,后来mysql感觉好,就放在了mysql5.7上。下载地址:https://github.com/mysql/mysql-sys$cd mysql-sys-master$mysql < sys_56.sql这样,就可以在mysql5....
2021-04-13 06:00:24
192
原创 mysql的pga-优化
对于per_thread_buffers,可以将理解oracle的pga,为每个连到Mysql的用户进程分配的内存,其参数如下:1、read_buffer_size这参数用于表的顺序扫描,表示每个线程分配的缓存区大小。比如,在进行全表扫描时,Mysql会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在 read_buffer_size中,当buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。默认128kb,这个参数孬设置...
2021-04-11 17:37:27
207
原创 分库分表优缺点及存在的问题
分库分表的中间件常见的问题:1、 扩容不方便(在增加数据库实例的时候,需要重分布数据)2、 分布键变更很麻烦(刚开始需要买家id,后面又要根据卖家id查询时)3、 分布键选择(架构设计)需要谨慎,甚至很多sharding产品不支持多个分布键、或者不支持随机分布,导致业务不得不使用没有任何意义的自增序列来作为分布键。4、 无法支持复杂查询。跨库JOIN性能差,甚至只能按分布键JOIN,其他字段不支持JOIN。(因为这种产品架构数据节点之间是孤岛,数据需要...
2021-04-11 17:25:32
3152
原创 回滚段简介
一、回滚段变更二、什么是回滚段Mysql5.5之前的版本,只能用到1024个并发线程。Mysql5.5版本,能用到1024*128个并发线程,约12w并发线程;存放在共享表空间(ibdata)Mysql5.6版本,把回滚段放到指定的文件中,不会有太大的作用,阿里云的RDS没有进行重新划分。mysql>show variables like '%undo%'+--------------------------+-----------------...
2021-04-11 17:16:31
736
原创 分布式事务实现
CAP理论一致性(Consistency) 可用性(Availability) 分区容错性(网络分区)Partition toleranceCAP理论的特点,就是CAP只能满足其中2条CA(放弃P):将所有的数据放在一个节点。满足一致性、可用性。AP(放弃C):放弃强一致性,用最终一致性来保证。CP(放弃A):一旦系统遇见故障,受到影响的服务器需要等待一段时间,在恢复期间无法对外提供服务。一致性算法问题:为了解决分布式一致性问题,产生了不少经典的分布式一致性算法..
2021-04-11 08:47:15
97
原创 Mysqldump导出的文件只导入一张表
使用如下方式grep -i 'INSERT INTO `ty_company_rongzi`' .20210322.sql.swp >data.sql &
2021-04-07 21:20:00
440
原创 Myisam缓存
myisam只缓存索引文件,而不缓存数据文件,这与大多数的数据库都非常不同。数据文件的缓存由操作系统本身来完成,这与其他使用LRU算法缓存数据的大部分数据库大不相同。
2021-04-07 21:18:24
269
原创 怎么查看mysql的配置文件
[root@lqyqdb ~]# mysql --help|grep my.cnf/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnforder of preference, my.cnf, $MYSQL_TCP_PORT
2021-04-07 21:17:12
319
原创 事务隔离级别测试
查看默认的隔离级别:select @@tx_isolation注:默认的隔离级别是可重复读。读未提交窗口一设置隔离级别为读未提交set session transaction isolation level read uncommitted;start transaction;insert into luna values(1,'dd','1',now());窗口二查看数据select * fr...
2021-04-07 21:15:22
188
原创 MVCC介绍
简介MVCC(Multi-Version Concurrency Control)即多版本并发控制。MySQL的大多数事务型(如InnoDB,Falcon等)存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,他们一般都同时实现了MVCC。当前不仅仅是MySQL,其它数据库系统(如Oracle,PostgreSQL)也都实现了MVCC。值得注意的是MVCC并没有一个统一的实现标准,所以不同的数据库,不同的存储引擎的实现都不尽相同。作为MySQL中使用最广泛的存储引擎,本文主要讨论的是Inno
2021-04-07 21:11:55
345
原创 mysql闪回案例
下载页面github项目地址:https://github.com/58daojia-dba/mysqlbinlog_flashbackhttps://segmentfault.com/a/1190000008687972原理介绍mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具。一般用于数据恢复的目的。 所谓反向的sql语句就是如果是insert,则反向的sql为delete。如果delete...
2021-04-07 21:08:58
150
原创 Nested-Loop Join三种算法
Simple Nested-Loop Join如下图,r为驱动表,s为匹配表,可以看到从r中分别取出r1、r2、......、rn去匹配s表的左右列,然后再合并数据,对s表进行了rn次访问,对数据库开销大在没有索引的情况下,会进行n次的全表扫描Index Nested-Loop Join(索引嵌套)这个要求非驱动表(匹配表s)上有索引,可以通过索引来减少比较,加速查询。在查询时,驱动表(r)会根据关联字段的索引进行查找,挡在索引上找到符合的值...
2021-04-07 21:02:33
5262
原创 mysql体系结构
数据库:一组二进程的文件数据库实例:用来操作数据库二进程文件Mysql不能一个数据库对应多个数据库Mysql是单进程多线程,与sqlserver一样;与oracle和postgresql是不一样的。
2021-04-06 12:19:09
70
原创 usage权限
连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。如果是oracle数据库那么就需要建立create sesssion的权限,mysql> show grants for 'wangm';+------------------------------------------------------------------------------------------------------+| Grants for wangm@% ...
2021-04-06 12:16:11
1015
原创 数据库字符符介绍
一、character_set_client 主要用来设置客户端使用的字符集。二、character_set_connection 主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。三、character_set_database 主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。四、character_set_filesystem 文件系统的编码格式,把操作系统上的文件名转化成
2021-04-06 12:07:43
2177
原创 mysql版本升级(数据量大的情况下)
在mysql数据量比较大的情况下(比如300G),如果使用mysqldump进行升级花的时间会比较久,有什么好的办法呢?一、升级过程1、把mysql的软链接删除,升级数据库软件2、数据库文件升级mysql_upgrade –pxxx --force -s注:这里可以把数据库mysql5.6直接升级到mysql5.7,当然居我所知,可以从mysql5.1升级到mysql5.7可以进行跨版本升级。升级元数据,一定要加上-s,否则会造成所有的表都更新一遍,性能比较差(如果数据量比较..
2021-04-06 10:59:11
366
原创 MySQL 5.6与mysql5.7安装变更
MySQL 5.6.X 安装:shell> yum install libaio # Debain系用户:apt-get install libaio1shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-OS.tar.gzshell> ln -s full-path-to-mysql-VERSION-
2021-04-06 10:51:50
145
原创 MySQL版本选型
Mariadb使用的存储引擎xtraDB存储引擎,与innodb存储引擎兼容的(增强型的)。MySQL5.6以后的版本,推荐使用官方版本。 Percona:在5.6版本以后,MySQL将Percona之前优化集成到官方版本中; MariaDB:无INNODB;且核心代码较老 MySQL在5.6以后不断重构源码,安装包越来越大,功能和性能在持续改进...
2021-04-06 10:50:54
261
原创 官方网站模块介绍
官方网站:http://www.mysql.comDeveloper Zone: MySQL开发工程师板块 Articles: Oracle工程师自己的博客 Plant MySQL: 和MySQL相关从业人员的博客 Bugs:MySQL BugList Worklog:开发记录 Labs:MySQL实验性项目 Downloads:MySQL下载 Enterprise:MySQL企业版本相关,略过 Community:社区版,我们下载和使用社区版 MySQL Comm.
2021-04-06 10:47:23
284
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人