方案概述1. 现象 当实际生产中,明明查询只有一条数据,没有其它用户修改这一笔数据,当我们需要修改这一笔数据时,往往会卡住,到底是怎么回事呢? 2. 模拟mysql的事务级别是RCmaster [localhost:21829] {root} (test) > show variables like '%iso%'; +----------------
概念描述一、RESET MASTER有什么影响?对于启用了二进制日志记录的服务器(log_bin is on),RESET MASTER删除所有现有的二进制日志文件并重置二进制日志索引文件,将服务器重置为启动二进制日志记录之前的状态。将创建一个新的空二进制日志文件,以便可以重新启动二进制日志记录。对于正在使用 GTID 的服务器(gtid_mode is on ),发出命令RESET MASTER
一、表级锁(Table Lock)1、表锁(Table Lock)表共享读锁(Table Read Lock):通过 LOCK TABLES table_name READ 语句获取,允许其他会话读取表,但不允许写入。表独占写锁(Table Write Lock):通过 LOCK TABLES table_name WRITE 语句获取,不允许其他会话读取或
故障描述客户反馈,通过Commvault软件备份MySQL报错,错误显示ERROR 1356 (HY000): View 'sys.host_summary' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them问题分析环境实例是通过其他环
概念描述当MySQL搭建双主模式的复制架构,节点 A 上更新了一条语句,然后再把生成的 binlog 发给节点 B,节点 B 执行完这条更新语句后也会生成 binlog。在B节点生成binlog的同时会不会将数据同步回给A节点,A节点如何判定数据是否已经被应用。如何解决两个节点循环复制的问题解决方案:当主节点A发现从节点B同步过来的binlog日志信息时会判断server_id的值,如果当serv
适用范围本次演示环境为:数据库版本:MySQL 5.7.20操作系统:centos7.6explain知识点概述MySQL数据库中通过explain 可以分析SQL的执行计划。常见的格式有:explain select ... #可以通过EXPLAIN 命令获取M
1适用范围本次演示环境为:数据库版本:MySQL 5.7.20操作系统:centos7.62概述MySQL数据库是一个单进程多线程数据库。在进行MySQL数据库运维时,经常会涉及到会话、进程与线程这几项,特别是在杀会话、对进程、对线程进行跟踪时,要仔细确认MySQL的会话、进程与线程,如果选择错误了,很容易造成数据库故障。 3如何获取MySQL会话、进程与线程下面介绍一下MySQL会话、
1. 操作系统实施方案设计1.1. 操作系统环境设计Mariadb软件安装在x86 64位及以上版本,满足Mariadb软件对操作系统的要求。1.2.操作系统配置1.2.1. 检查硬件配置1. 架构:uname -mx86_64 ##表示x86 64为架构2. 内存:grep MemTotal /proc/meminfo当前系统
mysql 8.0.x单机、主从、MGR监控语句监控列表1.1. 数据库监控告警项表数据量及表空间碎片告警表达式SELECTtable_schema,SUM(data_length+index_length)/1024/1024 AStotal_mb,SUM(data_length)/1024/1024 AS data_mb,SUM(index_length)/1024/1
从MySQL5.6开始,可以对SOL的执行计划进行trace跟踪,通过跟踪trace文件,能够进一步了解为什么优化器选择执行计划A而不选择执行计划B,帮助我们更好地理解优化器的行为。使用方法:首先,打开trace,设置格式为JSON,设置trace最大能够使用的内存大小,避免解析过程中因为默认内存过小而不能够完整显示。set optimizer_trace="enabled=on",end_mar
MySQL的error log中记录了实例启停,运行期间的错误、警告和注释,以及堆栈跟踪、innodb死锁,表的修复等一些诊断信息。对DBA分析、排查MySQL实例的问题非常有帮助。但是在实际的环境中可能存在大量的注释信息,或者已知的警告或错误信息大量写入错误日志,增加分析和排查的困难,针对这种需求MySQL提供了参数log_error_suppression_list、log_error_ver
MYSQL 的同步方式有哪些mysql 主从同步三种模式:异步复制、半同步复制、全同步复制、无损复制对MYSQL的MVCC的理解MVCC 只在 COMMITTED READ(读提交)和REPEATABLE READ(可重复读)两种隔离级别下工作。另一种是数据多版本并发控制(MultiVersion Concurrency Control,简称 MVCC 或 MCC),也称为多版本数据库:不用加任何
概念描述在分析慢日志时,DBA 常用 Percona Toolkit 中的 pt-query-digest工具,该工具可对慢日志进行汇总分析,但是该工具首先需要去学习怎么使用及读懂分析结果,并且分析过程会耗费一定的时间。而且有些开发人员因为服务器权限问题,是无法获取到slowlog的,所以分享一个工具 slow-log-summary。slow-log-summary 工具会生成一个HTML 格式
死锁是每个 MySQL DBA 都经常会遇到的问题,之前也写过关于死锁的详细解析。多数时候死锁容易在 update 中发生,且一般是涉及到二级索引。而本次遇到的问题是发生在 insert 上的死锁,与常规的场景不太一样,因此单独拿出来分析一下。问题概述死锁的详细信息如下:------------------------ LATEST DETECTED DEADLOCK --------------
mysql 8.0 ,建议谨慎操作,在测试环境模拟成功之后生产操作概述数据目录中的ibdata1文件是默认的系统表空间。你可以使用innodb_data_file_path和innodb_data_home_dir配置项来配置ibdata1。innodb_data_file_path选项用于配置InnoDB系统表空间数据文件。它的值应该是一个或多个数据文件规范的列表。如果指定了两个或多个数据文件,
-- 没有主键索引 mysql [localhost:8028] {root} (test) > SELECT t.table_schema,t.table_name,t.engine -> FROM information_schema.tables t -> JOIN information_schema.columns c -> ON t.ta
概述复制表空间文件(.ibd文件) 是移动数据的最快方式, 比通过mysqldump或mydumper导出和导入数据还快。移动以后数据是立即可用的, 而不必重新插入和重建索引。有很多原因可以解释为什么需要将一个InnoDB文件/表空间复制到一个不同的实例:1.为了运行报表而不会给生产服务器增加额外的负载2.为了在新的从服务器上为一个表设置相同的数据。3.为了在出现问题或错误后恢复备份的表或分区。4
成本模式传统关系型数据库里面的优化器分为CBO(Cost_Based Optimizer)和RBO(Rule-Based Optimizer)两种方式。RBO所用的判断规则是一组内置的规则,这些规则是硬编码在数据库的编码中的,RBO会根据这些规则去从SQL诸多的路径中来选择一条作为执行计划。RBO最大问题在于硬编码在数据库里面的一系列固定规则,来决定执行计划。并没有考虑目标SQL中所涉及的对象的实
二 方案概述在MySQL中,Innodb存储引擎可以使用大页为buffer pool和其他内存池分配内存空间。对于执行大量内存访问的应用程序可以通过使用大页降低Translation Lookaside Buffer (TLB) miss,从而使数据库性能得到改进。本方案旨在演示mysql中如何开启大页的使用。mysql默认是不启用大页的。MySQL中大页面的标准使用尝试使用支持的最大大小,最多4
MySQL的字符集从latin1经过utf8 到utf8mb4 ,算是经历曲折的路线。特别是从使用一个字符集变更另一个字符集时,实践当中都非常无奈,不是没办法,而是麻烦。到了MySQL8.0多出了一个字符集utf8mb4_0900_*的字符集,有必要了解一下。1.字符集基础先了解下MySQL字符集都有哪些地方使用,进入数据库VARIABLES参数一目了然:mysql> SHOW VARIAB
适用范围1.适用于MySQL 或者Oceanbase for MySQL2.适用于两表或多表join 的字段字符序不同的场景。如本例:COLLATE utf8mb4_general_ci 和 COLLATE utf8mb4_bin `cust_no` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci `cust_no`
一些MySQL的常用性能指标,可以对此增加一些自定义指标到数据库的监控里,如zabbix或者prometheus,来更好的检测数据库的状态。MySQSL版本是5.7.19。因为是自己的测试环境,所以截图的一些指标很低,仅为大家展示查看参数的显示情况。mysql> select version(); +-----------+ | version() | +-----------+ | 5.7
1.安装mysql-utilities首先yum源安装python, 之后根据python版本下载安装mysql-connector-pythonyum install pythonpython --versionpython 2.6.6下载地址:https://downloads.mysql.com/archives/c-python/rpm -ivh mysql-connector-pytho
概念描述mysql5.7版本在使用replace into语法往表中插入记录时,如果违反主键或唯一键约束,则会进行数据"覆盖",但这种"覆盖"的规则,会引起一定的问题。下面从2方面来说明问题:replace into数据"覆盖"规则replace into主从切换后主键冲突测试验证replace into数据"覆盖"规则假如一张表上同时存在主键和唯一键,我们分5种情况进行分析:主键不冲突 + 唯一
简介安全一直是不可不重视的问题。目前MySQL这方面应大方向上技术手段都具备。如:网络链接,权限控制,key秘钥认证,数据加密脱敏 等方式。综合考虑,虽然很多环境无法所有这些安全策略全部应用上,但在可控范围内尽量做到一定的防范实施。其中SSL是属于加密连接方式,提供以下安全服务:客户机和服务器之间的,通过使用公开密钥和对称密钥技术以达到信息保密。信息完整性,确保SSL业务全部达到目的。应确保服务器
一次现网一线运维人员反馈一套mysql访问某个表的时候,mysql会断连重启.经过问题定位,单表表空间损坏一、问题定位1.查看mysql的error日志,发现如下记录2020-10-20T07:43:03.297962Z 0 [ERROR] InnoDB: Checksum mismatch in datafile: ./data_2020/bc_data_co#P#P20201221.ibd,
实施步骤此方案测试环境为MGR Mysql节点8.0小版本升级升级前注意事项:在升级前,需要确保MGR集群的状态是健康的,没有任何错误或警告。在升级时,需要遵循MGR的兼容性规则,即新版本的节点只能加入到旧版本的集群中,而不能反过来。在升级后,需要执行mysql_upgrade工具来更新元数据和系统表,并重启MySQL实例。在升级过程中,需要避免对MGR集群进行任何配置或拓扑的变更,以免引起不必要
概念描述 从MySQL8.0.23版本开始,MySQL支持不可见列(invisible columns),在之前版本中MySQL对所有列都是可见的,所谓不可见列就是指在正常默认查询中不会显示出来,用select * from 语句是无法查询出不可见属性的列的。使用场景 1. 隐藏字段:刻意隐藏不想展示的字段,比如备注,敏感值,关键信息等 2. 业务侧需要:业务侧为前期表设
概念描述 MySQL从8.0版本开始支持不可见索引(invisible index)也可叫隐式索引,隐形索引或者隐藏索引。不可见索引是不被MySQL优化器使用的,但是优化器会正常维护它。使用场景非主键上的索引使用测试删除索引对性能的影响,而无需进行破坏性更改(通常对于大表来说,删除或者重建索引的影响很大,可以通过设置invisible/visible 属性来验证索引带来的效果)测试验证1. 创建
故障概述接到运维人员信息,研发MYSQL数据库无法启动。经过分析得出是数据目录存放在操作系统根目录,由于数据量不断增大,根目录爆满,导致数据库异常崩溃。尝试重新启动后发现err日志显示8个XA事务丢失,引发数据不一致。通过添加--tc-heuristic-recover=roolback重启mysqld进程,回滚异常事务。同时在配置文件添加innodb_fore_recovery=3后强制重启数据
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号