MySQL
文章平均质量分 85
一左不吃辣堡
这个作者很懒,什么都没留下…
展开
-
MySQL--优化思路与数据库监控
数据库设计和表创建时就要考虑性能mysql数据库本身高度灵活,造成性能不足,严重依赖开发人员能力。也就是说开发人员能力高,则mysql性能高。这也是很多关系型数据库的通病,所以公司的dba通常工资巨高。设计表时要注意:表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM_INT更好。原创 2024-06-06 20:18:39 · 982 阅读 · 0 评论 -
MySQL--MHA高可用及读写分离
全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive+双主 (切换需要人为干预)99.99%0.01%52.56 minMHA (半自动化)99.999%0.001%5.256 minPXC、MGR、MGC (自动化)99.9999%0.0001%0.5256 min自动化、云化、平台化1.监控通过masterha_master_monitor,每隔ping_interval秒监测一次master心跳。如果监控不到心跳,一共给4次机会。原创 2024-05-31 15:55:19 · 906 阅读 · 0 评论 -
MySQL--主从复制
1)从库执行change master to语句,把IP、PORT、USER、PASSWORD、BINLOG起点记录到master.info中。从库执行start slave,——>会开启IO、SQL线程2)从库IO线程开始工作,读取了master.info后连接主库3)主库连接层收到请求,验证通过后,生成dump线程和从库IO线程交互原创 2024-05-28 17:01:05 · 1390 阅读 · 0 评论 -
MySQL--备份恢复
基于sql语句(create database,create table,insert into)的备份针对InnoDB表可以实现非锁定备份,原理是通过MVCC中的快照技术进行备份针对非InnoDB表启用了锁表备份,FTWRL(global read lock,全局锁表禁止写入)无需安装,是mysql自带的工具,数据恢复方式和binlog很像连接参数:-u -p -s -h -P。原创 2024-05-26 20:48:53 · 1004 阅读 · 0 评论 -
MySQL--日志管理
记录执行较慢的语句,SQL优化方面的工具日志。记录MySQL从启动开始的状态、警告、错误。慢日志需要手工开启,默认是不开启的。1)创建错误日志目录、touch出log文件,授权。原创 2024-05-24 19:35:33 · 308 阅读 · 1 评论 -
MySQL--二进制日志
DDL、DCL:一条语句就是一个事件DML:一个事务型操作由多个event构成5.6以后加入了GTID功能,用来唯一标识事件和事务,GTID具有幂等性GLOBAL TRANSTATION ID 全局事务唯一编号,是从1开始有序生成的表现方式:server_uuid:TID (server_uuid是在第一次初始化,启动数据库时,自动生成的,存于/data/auto.cnf中,一旦被删除或修改,下次重启数据库会重置)DDL、DCL操作:一个事件记录一个GTIDDML:一个完整事务记录一个GTID。原创 2024-05-24 16:15:15 · 930 阅读 · 0 评论 -
MySQL安装实操
2.初始化数据库 mysqld --initialize-insecure,初始化成功后,/data/3306/data下会产生数据。2)TCP/IP远程连接 mysql -uroot -p123 -h 10.0.0.51 -p3306。4.修改系统变量 vim /etc/profile,修改后使配置生效 source /etc/profile。1)Socket本地连接 mysql -uroot -p123 /tmp/mysql.sock。2.安装到/opt目录下,创建软连接。4.MySQl连接方法。原创 2024-05-16 22:57:19 · 334 阅读 · 0 评论 -
MySQL 8.0用户及安全管理
mysql 8.0中,使用了新的密码插件caching_sha2_password,修改后更加安全不容易被破解,但是新的密码插件可能会导致一些客户端无法连接到mysql,不兼容sha2。2.修改用户的密码插件为老版本的mysql_native_password。1)安全模式启动数据库,不加载授权表,也关闭TCP、IP协议,只能使scoket本地连接。解决办法:1.建用户时修改加密插件为老版本的mysql_native_password。root是超级管理员,前三个是系统自带的,不能修改。原创 2024-05-17 00:19:06 · 592 阅读 · 0 评论 -
MySQL启动和关闭
pkill不建议使用,会导致数据丢失和损坏。原创 2024-05-17 23:26:22 · 165 阅读 · 0 评论 -
MySQL多实例与数据库升级
5.6版本:/usr/local/mysql3356/scripts/mysql_install_db --defaults-file=/data/3356/my.cnf。5.7版本:/usr/local/mysql3357/mysqld_safe --defaults-file=/data/3357/my.cnf &5.7版本:mysqld --defaults-file=/data/3357/my.cnf --initialize-insecure。验证:ps -ef | grep mysql。原创 2024-05-18 00:49:06 · 397 阅读 · 0 评论 -
MySQL的升级原理与实际操作
2.关闭原数据库业务,挂维护页 innodb_fast_shutdown=0,备份数据(冷备)注意:先做冷备,方便失败的时候回退(data目录cp到专门的地方)升级前去官网看指导,变更意味着风险,做好充足的演练和回退方案。5.6升级5.7可以回退,5.7升级5.8不能回退。4.升级:只是升级系统表,升级时间和数据量是无关的。指在一台服务器上,原版本升级到新版本,风险较大。3.使用新版本软件挂旧版本数据启动( )使用逻辑备份方式,风险小,成本高。骗过漏洞检查,直接修改版本号说明。6.验证各项功能是否正常。原创 2024-05-18 15:04:57 · 741 阅读 · 0 评论 -
MySQL--Online DDL三种算法原理详解
online-DDL详细原理介绍及gh-ost讲解_online ddl-CSDN博客。原创 2024-05-18 17:20:34 · 1094 阅读 · 0 评论 -
MySQL--索引
聚簇索引 Clustered index (每个数据页16K,64个连续的数据页组成1个区,每个区1M)辅助索引 Secondry (普通单列索引、普通联合索引、唯一索引、前缀索引)原创 2024-05-19 14:02:26 · 1273 阅读 · 0 评论 -
MySQL--执行计划
执行计划是sql在执行时,优化器优化后,选择的cost最低的方案通过desc、explain可以查看sql的执行计划。原创 2024-05-20 16:50:58 · 1090 阅读 · 1 评论 -
MySQL--联合索引应用细节&应用规范
3)索引本身失效,统计信息不真实(过旧),对于表内容变化比较频繁的情况下,有可能会出现索引失效,一般是删除重建,如果有一条select语句平时查询很快,突然有一天很慢,应该是索引失效,统计信息不真实、在mysql中,索引下推允许在存储引擎层过滤索引中的记录,而不是在server层进行,如果查询包含多个条件并且索引不是很精确时,索引下推可以在存储引擎层进行更多的过滤工作,从而减少不必要的IO.辅助索引条件查询时,先扫描辅助索引,获得ID值,放在read_rnd_buffer中,由MRR进行排序后,回表查询。原创 2024-05-20 18:16:43 · 1185 阅读 · 1 评论 -
MySQL--存储引擎
存储引擎相当于Linux的文件系统,以插件的模式存在,是作用在表的一种属性聚簇索引、事务、MVCC多版本并发控制、行级锁、外键、AHI、主从复制特性、支持热备、ACSR自动故障恢复、change buffer。原创 2024-05-21 23:42:40 · 394 阅读 · 1 评论 -
MySQL--InnoDB体系结构
table.frm存储数据字典信息(列定义)table.ibd表空间数据文件,存数据行和索引,有段-区-页的概念ibdata15.7版本-->系统表空间文件,存储data dictionary:存所有表的数据字典,结构,属性,状态,参数...double write:自动故障恢复应用到的数据change buffer:存储辅助索引的变更undo:存储日志的回滚信息日志ibtmp:临时表,存储SQL存储过程中的中间数据(groupby、having、用户数据5.6版本-->原创 2024-05-22 14:47:17 · 826 阅读 · 0 评论 -
MySQL--事务
DB_TRX_ID(6字节的事务号)和DB+ROLL+PTR(7字节的回滚指针),从undo的segment的slot中找到此次事务的undo日志,进行回滚。每次开启一个全新的事务窗口(begin),都会生成当前最新的事务快照,此次事务会在此次快照中进行操作,直到事务commit或rollback。6)如果此次事务的日志,随着其他的日志提交,则redo buffer中的日志刷写道redo log中。3)生成当前事务DB_TRX_ID(6字节的事务号)和DB+ROLL+PTR(7字节的回滚指针)原创 2024-05-22 18:40:34 · 1013 阅读 · 1 评论 -
MySQL--锁
next_key锁是记录锁和间隙锁的组合,它指的是加在某条记录以及这条记录前面间隙上的锁,也可以理解为一种特殊的间隙锁,通过临键锁可以解决幻读的问题,每个数据行的非唯一索引列上都会存在一把临键锁,当某个事务持有该行数据的临键锁时,会锁住一段左开右闭区间的数据。称为I锁,当有事务给表的数据行加了共享锁或排它锁,同时会给表设置一个标识,代表已经有行锁了,其他事务想要对表加锁时,就不用逐行判断有没有行锁可能跟表锁冲突了,直接读这个标记就知道自己该不该加表锁。X锁,在事务需改动一条记录时,需先获取该记录的X锁。原创 2024-05-23 15:58:06 · 1128 阅读 · 1 评论