实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦有咩有简单的方式呢shell来监控我们服务器运行状态以及服务器上部署的应用,如果出现异常就会自动发送一个邮件给我们,开始搞起。。。 老套路,先梳理思路 监控apache web服务 监控mysql数据库 监控服务器硬盘使用情况 监控服务器的内存使用 1.apache web 服务器 !/bin/bash # 表示请求链接3秒钟,不要返回的测试数据 nc -w 3 localhost 80 &>/dev/null
cacti 中查询MySQL数据库占用磁盘大小并返回的php修改了,但在cacti中配置了模板,可以在device中创建表格并且可以生成data source的条目,但始终没有返回数据 不知道是什么问题,暂时没有办法解决。 尝试过用script query 和script_server的方式,由于还是不了解也不知道是对cacti的了解不够还是什么原因 始终没有返回值
今天先写了php的script,好久没写过边查边写,痛苦啊。还好完成了历史6个小时,希望以后可以加快。
操作系统版本:CentOS Linux release 7.6.1810 (Core),默认的yum源安装后ruby的版本是2.0 ,而innodb_ruby需要2.2及以上版本,因此修改yum源,再安装指定高版本
innodb_ruby是jeremycole的一个用于分析Innodb相关结构的一个程序,也是非常方便我们研究Innodb的结构的工具。 1. 工具安装
作者:孙绪宗,新浪微博 DBA 团队工程师,主要负责 MySQL、PostgreSQL 等关系型数据库运维。
1. 进入MySQL容器 docker exec -it my-space-mysql /bin/bash 2. 备份当前 my.cnf 文件 mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak 3. 退出容器 exit 4. 在服务器创建配置文件(my.cnf) [client] default-character-set=utf8 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci 5.
InnoDB数据存储模型用"spaces"表示,也被称为"tablespaces",有时候也被称为"file spaces",一个space可能包含多个操作系统级别的实际文件(例如ibdata1,ibdata2等)。但是只是被当做一个逻辑文件:多个物理文件只是被视为物理连接在一起。
问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺序在后台跑着。跑完后察看日志发现一个问题,MySQL服务的错误日志中出现多条类似以下信息的报错: [ERROR] InnoDB: Trying to do I/O to a tablespace which does not exist. I/O type: read, page: [page id: space=32, page number=57890], I/O length
但是,我们从来没见过,这个B+树到底在哪了?我执行了一条创建索引的语句,它到底创建在哪了?
爱可生 DBA 成员,一个执着于技术的数据库工程师,主要负责数据库日常运维工作。擅长 MySQL,Redis 及其他常见数据库也有涉猎;喜欢垂钓,看书,看风景,结交新朋友。
本文和封面来源:https://www.percona.com/,爱可生开源社区翻译。
表中现有约 50 亿条数据,只保留 2023-10-01 以后的数据(约占总量的 1/10),其它删除。
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
今天晚上业务系统升级,提前跑到表结构中,表需要减字段,在执行drop colum时报如下错误:
MySQL 8与MySQL 5.6跨了两个大版本,直接从5.6(主)复制到8(从)是不行的,因此需要用一个MySQL 5.7版本作为桥接。5.6、5.7实例都要开启log_bin和log_slave_updates。5.6、5.7、8的安装步骤从略。
上篇文章我们介绍了mysql的安装目录和 数据存储目录是不同的,当create database时,会在数据存储目录下新建一个同名的数据库文件,进入指定数据库文件会有db.opt文件记录数据库的特点,字符集,比较规则等。当create table时,会在指定数据库目录下,建立同名的子表目录,里面有表结构文件表名.frm和表数据文件。
今天例行查看日志,发现有个sql在本地查询速度较快,在服务器环境下查询速度较慢,达到了6s之多。
之前有研发反馈,同一个SQL在测试环境和生产环境,数据一样,跑出来的结果却有差异。 经过排查后,发现2套环境的表字符集不一样。测试之前是5.6升级到8.0的,表字符集是utf8_general_ci的,而生产一直就是用的8.0,表字符集是utf8mb4_0900_ai_ci。
小张是一名软件工程师,工作兢兢业业、一丝不苟且精益求精,天性乐观的他每天愉快地做着增删改查的工作,对于这些看似简单的CRUD,小张从来不会掉以轻心,他也笃定地坚信,自己向数据库里插入了什么数据,就能按条件把这些数据查询出来,毕竟,像MySQL这样的数据库,在全世界广为流行,大行其道,不可能不严谨。
将字符映射成二进制数据的过程叫编码,将二进制数据映射到字符的过程叫做解码 ASCII字符集: 有128个字符。包括空格/标点符号/数字/大小写字母和不可见字符。 📷 ISO 8859-1 字符集合:有256个字符,在ASCII字符集基础上扩展了128个西欧常用字符(包括德法字符)。它可以使用一个字节来进行编码(它的别名称叫Latin1) GB2312字符集:包括汉子和拉丁字母/希腊字母/日文/俄文等。如果字符集包含在ASCII字符集中,则采用一个字节编码,否则采用两个字没编码。 GBK字符集:对GB2
背景 MySQL 8.0 DDL 是一个复杂的过程,涉及比较多的模块,例如:MDL 锁,表定义缓存,行格式,Row Log,DDL Log,online 属性,表空间物理文件操作等。本文主要通过与5.
6月份的时候小傅哥写了一篇基于 GitHub Actions 推送镜像到阿里云私有镜像仓库的教程,但最近看到阿里云要对自身的私有仓库做出调整,以后也不在为所有环境全量的提供镜像加速了。不过目前还能用,但不知道还能用多久。所以,未雨绸缪啊!万一又用不了了,怪麻烦的。
MySQL 校对规则属于 PADSPACE,会忽略尾部空格。针对的是 varchar char text 等文本类的数据类型。此为 SQL 标准化行为。无需要设置也无法改变。
在对MySQL 8.0.26 vs GreatSQL 8.0.25的对比测试过程中,有一个环节是人为制造磁盘满的场景,看看MGR是否还能正常响应请求。
作者介绍:谢浩,现任职于云和恩墨(北京)信息技术有限公司,具有多年oracle数据库企业级运维经验,擅长结合业务、硬件系统制定各种项目方案,具有丰富mysql相关的工作经验。 假设你在使用MySQL中的InnoDB驱动,由于遇到了驱动程序错误,内核错误,电源故障或某些罕见的MySQL错误,而在InnoDB ibdata1文件损坏,实例不能启动。你该怎么办呢? 案例描述 某门户mysql innodb数据库实例损坏,数据库服务无法启动,使用文件系统上的数据库frm及bid文件恢复数据库内的业务数据。 相关知识
现居珠海,主要负责 Oracle、MySQL、mongoDB 和 Redis 维护工作。
本文来源:https://www.percona.com/blog/,爱可生开源社区翻译。
今天在线上遇到了一个MySQL字符比较的问题,感觉很有意思,专门研究了下,估计大家都没有遇到过,这里跟大家分享一下。
innodb_space 的git网址:https://github.com/jeremycole...
一 前言 死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见 。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。本文介绍一例三个并发insert 导致的死锁,根本原因还是在于insert 唯一键申请插入意向锁这个特殊的GAP锁。其实称呼插入意向锁 为 Insert Intention Gap Lock 更为合理。 二 案例分析 2.1 环境准备 Percona server 5.6 RR模式
大清早收到一个 MySQL 的自定义语言告警 :replication interrupt,看来是主从同步报错了。 登陆 MySQL,执行 show slave status \G 发现 salve 已经停止了,于是使用 start slave 启动,结果有如下报错: ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log 搜
一 前言 死锁其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。 二 背景知识 2.1 insert 锁机制 在分析死锁案例之前,我们先学习一下背景知识 insert 语句的加锁策略。我们先来看看官方定义:
昨天在更新完文章《升级博客文章同步微博的插件:PHP正则提取Markdown的图片地址》后,博客突然无法访问了。
https://github.com/jeremycole/innodb_ruby
他说:明明表名的入参是 test ,为什么展示到界面的记录包括 test 这条记录?
sqlmap 是一款注入神器广为人知,里面的 tamper 常常用来绕过 WAF ,很实用的模块,但是却常常被新手忽略(比如我),今天就整理总结一下 tamper 的用法以及 tamper 的编写
我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单!
提示:公众号展示代码会自动折行,建议横屏阅读 ---- 1. 引言 ---- 数据字典(Data Dictionary)中存储了诸多数据库的元数据信息如图1所示,包括基本Database, table, index, column, function, trigger, procedure,privilege等;以及与存储引擎相关的元数据,如InnoDB的tablespace, table_id, index_id等。MySQL-8.0在数据字典上进行了诸多优化,本文将对其进行逐一介绍。 图1 2.
在MySQL的数据库中,我们有时会发现MySQL数据库明明没有负载,CPU、硬盘、内存和网络等资源都很空闲,但很多SQL都pending在哪儿,MySQL数据库无法处理交易。这是怎么回事呢?
SQL_MODE:MySQL特有的一个属性,用途很广,可以通过设置属性来实现某些功能支持
上一篇讲到字符、字符集、字符编码,粗略的一笔带过MySQL的编码,本篇想要讲讲字符编码在MySQL数据库中的应用。不仅仅是本篇文章,其他博主的文章也是,多多阅读他人的好文,才可以提升自己的水平。再次借用六一居士写的《卖油翁》来激励大家,多多阅读。
数据字典(Data Dictionary)中存储了诸多数据库的元数据信息如图1所示,包括基本Database, table, index, column, function, trigger, procedure,privilege等;以及与存储引擎相关的元数据,如InnoDB的tablespace, table_id, index_id等。MySQL-8.0在数据字典上进行了诸多优化,本文将对其进行逐一介绍。
今天写了一个sql,主要目的是查询分组后最新的一条数据,原本的关系是1对多,想通过分组后实现1对1的逻辑关系,而且要保证分组后的数据是按照创建时间排序,确保是最新的一条。
一 前言 工欲善其事必先利其器,前面分析了很多死锁案例,并没有详细的介绍如何通过死锁日志来诊断死锁的成因。本文将介绍如何读懂死锁日志,尽可能的获取信息来辅助我们解决死锁问题。 二 日志分析 2.1 场景 为了更好的学习死锁日志,我们需要提前了解死锁场景 MySQL 5.6 事务隔离级别为RR
领取专属 10元无门槛券
手把手带您无忧上云