什么情况下 MySQL slave 不会更新数据

什么情况下 MySQL slave 的 sql_thread 线程不会更新数据? 目前主从有两个原因: 1. 主从 server-id 相同 如果设置以下选项: replicate-same-server-id = 0 并且主从的 server-id 相同, 则 sql_thread 线程会忽略更新收到的数据; 我们应该保证主从配置不同的 server-id 值. 2....

MySQL 8.0 特性概览

MySQL 8.0 版本比之 5.7 做了很大的变化, 比较明显的主要有去掉了查询缓存, 密码验证方式变更, 默认编码变更等方面, 部分特性随着 8.0 最新版的发布也会存在小幅度的改变, 更多变化可以参考 what-is-new-in-mysql8.0 了解更多. 如果是从 5.7 升级到 8.0 可以参考 upgrading-from-previous-series.html 了解更多的不同. 下面则主要介绍 MySQL 常用特性的一些变化. 常用参数变更...

如何避免销毁 zfs 镜像后出现 Unable to automount 错误提示

简要说明 在正常创建 zfs 镜像后, 如果需要访问镜像的文件, 可以直接访问当前 zfs 系统下的 .zfs 隐藏文件, 在访问镜像目录内容的时候会触发 zfs 的 automount 自动挂载, 这点有点像 Linux 内核提供的 automount 属性, 即默认不挂载镜像设备文件, 仅在访问的时候自动挂载, 如下所示: # zfs...

ssh/scp/rsync 使用技巧

我们经常通过 ssh/scp 免密登录的方式来自动化的批量执行一些操作, 不过在实际的使用中可能经常碰到一些中断自动连接的问题. 下面则主要介绍如何避免这些问题并提供一些使用建议. 引起中断的问题 Host key 添加提示 指纹信息变更 连接超时 公钥不匹配引起登录失败 隐藏进程说明 使用建议 引起中断的问题 目前主要由以下几方面问题会引起连接中断: Host key 添加提示 在连接新的机器的时候, 通常需要将新机器的加密指纹信息添加到自身的 ~/.ssh/known_hosts 中. 如下所示, 这种提示需要我们手动确认,...

在云中使用 proxy protocol

背景说明 在 http/https 的协议中, 我们可以通过 X-Forwarded-For 从 Header 信息中获取到离服务端最近的 client 端的 IP 地址, 如果请求经过了多级代理且每级代理都开启此特性, 就可以获得真实有效的用户 IP. 不过这种特性是基于应用层实现, 并不适用于传输层. 在基于 tcp 层的转发场景中, 获取真实有效的用户 IP 显得更为重要. Linux...

TokuDB 内存占用过高问题处理

问题说明 近期参考了 xelabs-tokudb-wiki 将 TokuDB 引擎和 jemalloc 内置到 MySQL 中, 在实际的使用中发现 MySQL 的实例占用的内存特别高, 如下所示的配置: Centos 7 - 3.10.0-862.14.4.el7.x86_64 percona-server-5.6.45-86.1 my.cnf 配置: innodb_buffer_size = 16G tokudb_cache_size...

Linux 系统内核崩溃分析处理简介

背景说明 目前绝大多数的 Linux 发行版都会将 kdump.service 服务默认开启, 以方便在内核崩溃的时候, 可以通过 kdump 服务提供的 kexec 机制快速的启用保留在内存中的第二个内核来收集并转储内核崩溃的日志信息(vmcore 等文件), 这种机制需要服务器硬件特性的支持, 不过现今常用的服务器系列均已支持. 如果没有特别设置, 系统都采用默认的 kdump 服务配置, 崩溃的日志文件默认以 disk 方式保存在本地的磁盘目录, Centos/Redhat 系列的系统主要保存在以下目录: /var/crash/...

Linux kernel panic at stack is corrupted

问题说明 一台机器异常重启后, 从 vmcore 文件的分析来看, 内核的崩溃是由于触发了 gcc 的 -fstack-protector 特性, 如下所示, stack-protector 即意味着内核函数存在栈溢出的问题: crash> sys KERNEL: /usr/lib/debug/lib/modules/3.10.0-862.14.2.el7.x86_64/vmlinux DUMPFILE: vmcore [PARTIAL DUMP] CPUS: 40 DATE: Thu...

Linux 系统动态追踪技术介绍

目录 动态追踪历史 追踪机制说明 常用追踪工具 线上实践指南 总结 参考 动态追踪历史 严格来讲 Linux 中的动态追踪技术其实是一种高级的调试技术, 可以在内核态和用户态进行深入的分析, 方便开发者或系统管理者便捷快速的定位和处理问题. Linux 在过去十多年的发展中, 演化了很多追踪技术, 不过一直没有一款可以媲美 Solaris/FreeBSD 系统中的 DTrace 追踪工具, 直到 Linux 4.1+ 版本...

使用 sys-toolkit 收集 Linux 系统的诊断信息

在早期的一系列文章中, 我们提到了很多关于 percona-toolkit 工具的使用说明, 其中最常用的 pt-stalk, pt-summary 等工具为 MySQL 的故障诊断和系统信息收集带来了很大的帮助. 不过其中的很多工具(比如 pt-stalk, pt-sift 等) 都和 MySQL 强关联, 实际上并不适用于通用的 Linux 系统. 鉴于此原因, 我们将常用的三个工具(pt-stalk, pt-sift, pt-summary) 修改为通用的系统搜集工具,...