InnoDB

Linux运维常见故障排查和处理的技巧汇总

大憨熊 提交于 2021-02-20 19:57:46
作为Linux运维,工作中多多少少会遇见这样那样的问题或故障, 从中总结经验,查找问题,汇总并分析故障的原因,这是一个Linux运维工程师良好的习惯。 每一次技术的突破,都经历着苦闷,伴随着快乐,可我们还是执着的继续努力,从中也积累了更多的经验。 下面汇总了可能出现的故障及解决方法,看看你是否遇到过?并对你有帮助? 第一: 常见问题解决集锦 1.shell脚本不执行 问题: 某天研发同事找我说帮他看看他写的shell脚本,死活不执行,报错。我看了下,脚本很简单,也没有常规性的错误,报“:badinterpreter:Nosuchfileordirectory”错。 看这错,我就问他是不是在windows下编写的脚本,然后在上传到linux服务器的……果然。 原因: 在DOS/windows里,文本文件的换行符为rn,而在*nix系统里则为n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M。 解决: 1)重新在linux下编写脚本; 2)vi:%s/r//g:%s/^M//g(^M输入用Ctrl+v,Ctrl+m) 附:sh-x脚本文件名,可以单步执行并回显结果,有助于排查复杂脚本问题。 2.crontab输出结果控制 问题: /var/spool/clientmqueue目录占用空间超过100G 原因: cron中执行的程序有输出内容

Zipkin整合rabbitmq和mysql

隐身守侯 提交于 2021-02-20 08:59:35
存储跟踪数据 Zipkin Server默认时间追踪数据信息保存到内存,这种方式不适合生产环境。因为一旦Service关闭重 启或者服务崩溃,就会导致历史数据消失。Zipkin支持将追踪数据持久化到mysql数据库或者存储到 elasticsearch中。这里已mysql为例。 准备数据库 可以从官网找到Zipkin Server持久mysql的数据库脚本。 CREATE TABLE IF NOT EXISTS zipkin_spans ( `trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT ' If non zero, this means the trace uses 128 bit traceIds instead of 64 bit ' , `trace_id` BIGINT NOT NULL , `id` BIGINT NOT NULL , `name` VARCHAR ( 255 ) NOT NULL , `remote_service_name` VARCHAR ( 255 ), `parent_id` BIGINT , `debug` BIT ( 1 ), `start_ts` BIGINT COMMENT ' Span.timestamp(): epoch micros used for endTs query

MySQL学习【SQL语句上】

守給你的承諾、 提交于 2021-02-19 10:48:31
1.连接服务端命令 1.mysql -uroot -p123 -h127.0.0.1 2.mysql -uroot -p123 -S /tmp/mysql.sock 3.mysql -uroot -p123 -hlocalhost 4.mysql -uroot -p123 2.mysql登陆后的一些命令 1.\h或者help   查看帮助 2.\G       格式化查看数据(以key:value形式) 3.\T 或 tee    记录日志 4.\c       结束命令 5.\s或者status  查看状态信息 6.\. 或者source  导入sql数据 7.\u 或use    使用数据库 8.\q或exit或quit  退出 3.mysqladmin的一些使用 1.查看mysql存活状态 [root@db01 ~]# mysqladmin -uroot -p123 ping 2.查看mysql状态信息 [root@db01 ~]# mysqladmin -uroot -p123 status 3.关闭mysql进程 [root@db01 ~]# mysqladmin -uroot -p123 shutdown 4.查看mysql参数 [root@db01 ~]# mysqladmin -uroot -p123 variables 5.删除数据库 [root@db01 ~]#

MySQL老大难事务和锁,一次性讲清楚!

戏子无情 提交于 2021-02-18 14:09:39
点击上方蓝色“ java大数据修炼之道 ”, 选择“ 设为星标 ” 每晚九点: 技术干货 👉 必定奉上 本文来源:http://r6d.cn/acuaX 众所周知, 事务和锁 是mysql中非常重要功能,同时也是面试的重点和难点。本文会详细介绍 事务和锁 的相关概念及其实现原理,相信大家看完之后,一定会对 事务和锁 有更加深入的理解。 “ 本文主要内容是根据掘金小册《从根儿上理解 MySQL》整理而来。如想详细了解,建议购买掘金小册阅读。 ” 什么是事务 在维基百科中,对事务的定义是: 事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成 。 事务的四大特性 事务包含四大特性,即 原子性(Atomicity) 、 一致性(Consistency) 、 隔离性(Isolation)和持久性(Durability) (ACID)。 原子性(Atomicity) 原子性是指对数据库的一系列操作,要么全部成功,要么全部失败,不可能出现部分成功的情况 。以转账场景为例,一个账户的余额减少,另一个账户的余额增加,这两个操作一定是同时成功或者同时失败的。 一致性(Consistency) 一致性是指数据库的完整性约束没有被破坏,在事务执行前后都是合法的数据状态 。这里的一致可以表示数据库自身的约束没有被破坏,比如某些字段的唯一性约束、字段长度约束等等

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

泄露秘密 提交于 2021-02-18 05:58:26
点击上方“ 方志朋 ”,选择“置顶公众号” 技术文章第一时间送达! 本文转载于公众号:Hollis 由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目。 经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。 笔者面的是阿里的Java研发工程师岗,面试流程是3轮技术面+1轮hr面。 1 意外的一面 一面的时候大概是3月12号,面完等了差不多半个月才突然接到二面面试官的电话。一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别 ArrayList 是一个可改变大小的数组。当更多的元素加入到ArrayList中时,其大小将会动态地增长。内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组, LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList。 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义。 什么情况会造成内存泄漏 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连; 其次,这些对象是无用的

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

非 Y 不嫁゛ 提交于 2021-02-18 05:57:24
本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者——泽林提供,部分答案由Hollis整理自知识星球《Hollis和他的朋友们》中「直面Java」板块。 经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。 笔者面的是阿里的Java研发工程师岗,面试流程是3轮技术面+1轮hr面。 意外的一面 一面的时候大概是3月12号,面完等了差不多半个月才突然接到二面面试官的电话。一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别 ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组. LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList. 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义. 什么情况会造成内存泄漏 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连

一份还热乎的蚂蚁面经(已拿Offer)!附答案!!

左心房为你撑大大i 提交于 2021-02-18 05:30:03
本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者——泽林提供,部分答案由Hollis整理自知识星球《Hollis和他的朋友们》中「直面Java」板块。 经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。 笔者面的是阿里的Java研发工程师岗,面试流程是3轮技术面+1轮hr面。 意外的一面 一面的时候大概是3月12号,面完等了差不多半个月才突然接到二面面试官的电话。一面可能是简历面,所以问题比较简单。 ArrayList和LinkedList区别 ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组. LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList. 当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比,如果数据和运算量很小,那么对比将失去意义. 什么情况会造成内存泄漏 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点: 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连

MySQL表锁和行锁

偶尔善良 提交于 2021-02-17 22:40:23
表锁myisam 行锁innodb 页锁(MySQL特殊的锁定级别) 1.表锁 myisam MySQL记录系统内部锁资源争用情况的参数     Table_locks_immediate:产生表级锁定的次数     Table_locks_waited:出现表级锁定争用而发生等待的次数 myisam 读写相互阻塞的表锁 应当尽量缩短select操作的时间 写锁的优先级高于读锁,即使是读请求先进入等锁队列,写请求后进入等锁队列,也是写请求先获得锁 可以设置读写的优先级 (1)执行命令SET LOW_PRIORITY_UPDATES=1,使该连接读比写的优先级高,该参数在select较多的情况下设置 (2)参数max_write_lock_count设置一个合适的值,当一个表的读锁达到这个值后,MySQL就暂时将写请求的优先级降低,给读进程一定获得锁的机会 2.行锁 innodb 共享锁、排它锁 意向锁 间隙锁 为了使行锁和表锁共存,意向锁(意向共享锁、意向排它锁) 锁之间的兼容性 排他锁和其他所有的锁不兼容 如果某一资源上已经有共享锁,可以再给它加共享锁,不能再加排他锁 如果某一资源上已被其他锁占用,可以给它再加 意向锁 一个资源上可以加多个意向共享锁,只能加一个意向排他锁 共享锁(s) 排他锁(x) 意向共享锁(is) 意向排他锁(ix) 共享锁(s) y n y n 排他锁(x

万字长文教你搞懂 MySQL 的加锁分析

旧街凉风 提交于 2021-02-17 22:38:34
编辑: 业余草 来源: https://www.xttblog.com/?p=4926 前面写了一篇 MySQL 的 2PL 文章,群里有人@我关于 MySQL 的加锁问题,事实上 MySQL 的加锁过程非常的复杂,2PL 只是一个最简单,最容易理解的一个!今天,再介绍几种加锁的思路,如有误忽喷!推荐大家阅读高性能 MySQL。 背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线上的一个死锁场景,了解死锁产生的原因。 注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,都是基于InnoDB存储引擎,其他引擎的表现,会有较大的区别。 多版本并发控制 MVCC MySQL InnoDB 存储引擎,实现的是基于多版本的并发控制协议 MVCC (Multi-Version Concurrency Control) ,与 MVCC 相对的,是基于锁的并发控制,Lock-Based Concurrency Control。MVCC

mysql 通过测试'for update',深入了解行锁、表锁、索引

喜夏-厌秋 提交于 2021-02-17 22:15:38
mysql 通过测试'for update',深入了解行锁、表锁、索引 参考:https://www.cnblogs.com/wangshiwen/p/9837408.html 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效。 mysql默认情况下每个sql都是单独的一个事务,并且是自动提交事务。 测试之前需要设置成非自动提交事务,不然无法模拟并发访问: mysql> select @@autocommit; + --------------+ | @@autocommit | + --------------+ | 1 | + --------------+ 1 row in set ( 0.00 sec) mysql> set autocommit = 0; Query OK, 0 rows affected ( 0.00 sec) mysql> select @@autocommit; + --------------+ | @@autocommit | + --------------+ | 0 | + --------------+ 1 row in set ( 0.00 sec) 此修改只针对当前窗口有效,重新打开的新窗口依然是自动提交事务的 所以要就需要两个窗口,窗口a:非自动提交事务,用于for