Percona toolkit不完全笔记
Percona toolkit(简称pt工具集)是Percona公司开发的面向MySQL、MongoDB及系统任务的一套命令行工具集。 安装 参考即可Percona Toolkit 安装文档 pt-table-checksum pt-table-checksum主要用于检测MySQL复制的一致性,检测主库、从库数据是否一致。该工具通过高效的方式来查找数据差异,找到的差异可以通过pt-table-sync来解决。
Percona toolkit(简称pt工具集)是Percona公司开发的面向MySQL、MongoDB及系统任务的一套命令行工具集。 安装 参考即可Percona Toolkit 安装文档 pt-table-checksum pt-table-checksum主要用于检测MySQL复制的一致性,检测主库、从库数据是否一致。该工具通过高效的方式来查找数据差异,找到的差异可以通过pt-table-sync来解决。
native支持systemd是MySQL 5.7的新特性之一,我们之前在《MySQL 5.7.17 Group Replication部署实践》中编译安装MySQL时并没有开启这个特性。 本篇记录一下编译安装MySQL5.7并开启systemd的一些注意事项。 MySQL 5.7编译的选项可以参考MySQL Source-Configuration Options。
MySQL Group Relication是MySQL 5.7.17发布的一个重要的功能。 Group Replication组复制是MySQL的一个插件,可以让多个MySQL节点中的数据保持一致。 其中一个节点的数据被修改后,剩余节点会自动同步。 组复制与MySQL主从复制的区别 在组复制之前,MySQL还支持异步复制(Asynchronous Replication)、半同步复制(Semisynchronous Replication)两种复制模式:
MySQL日志类型 错误日志(Error log): mysqld启动,运行,停止相关的警告或错误信息 普通查询日志(General query log): 记录从连接客户端发出的SQL语句和MySQL命令 二进制日志(Binary log): 对数据库执行更新的语句,二进制日志也被用来在主从复制时使用 中继日志(Relay log): 主库推送的主库二进制日志中的事件到从库的中继日志,从库根据中继日志重做数据变更操作 慢查询日志(Slow query log): 执行时间超过long_query_time设定值的SQL语句,也可包含没有使用索引的SQL语句 DDL log (metadata log): Metadata operations performed by DDL statements 错误日志 MySQL的错误日志是默认开启,且必须开启。查看错误日志的位置:
MySQL的多源复制(multi-source replication)允许将一个MySQL从库连接到多个主库,并从每个主库获取和复制数据更改。这种复制拓扑结构可以实现在多个数据库服务器之间进行数据同步和复制。 传统的MySQL复制是单源复制,其中一个主库(也称为主服务器或主节点)将其数据更新记录在二进制日志中,并将这些日志传播给一个或多个从库(也称为从服务器或从节点)。每个从库通过读取主库的二进制日志并应用这些更新来保持与主库的数据同步。
MySQL常见复制模式 MySQL的常见复制模式(假设有DB1,DB2,DB3三个MySQL实例): 主从复制 DB1 -> DB2 主主复制 DB1 <- -> DB2 链式复制 DB1 -> DB2 -> DB3 环形复制 DB1 -> DB2 -> DB3 -> DB1 生产环境常见主从复制,这是最稳健的一种方式;为了切换方便也可选择主主模式,但要注意主主复制必须确保在任何时刻只有一个数据库是master写入状态,否则可能导致数据异常。 链式和环形复制在生产环境很少使用,主要的缺点是随着节点的增加整个复制系统的稳健性会下降。
内存 innodb_buffer_pool_size innodb_buffer_pool_size是使用InnoDB存储引擎时最关键的配置项。InnoDB使用一块专门的内存区域做IO缓存,该缓存既缓存InnoDB的索引块,又会缓存InnoDB的数据块。这个缓存区就是InnoDB Buffer Pool,使用innodb_buffer_pool_size设置其大小,在保证系统及其他程序有可用内存的情况下,设置的越大,缓存命中率越高,访问InnoDB的磁盘IO越少,性能越好。
status和variable MySQL的状态变量显示MySQL服务实例的状态信息,这些状态信息是动态的,包括MySQL服务器连接的会话状态、变量信息等。默认情况下状态变量都是以大写字母开头。 查看MySQL的状态变量: show status; show session status; show global status; MySQL系统变量是指MySQL服务实例的各种系统变量(包括全局系统变量、会话系统变量、静态变量),这些变量包含MySQL编译时的参数默认值,或者my.cnf配置文件里配置的参数值。系统变量是一个静态的参数,默认情况下系统变量都是小写字母。
简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 kingshard的性能是直连MySQL性能的80%以上。
查看锁表线程 使用下面的命令查看哪个表被锁了: show open tables where in_use>0; +----------+-------+--------+-------------+ | Database | Table | In_use | Name_locked | +------------------+--------+-------------+ | test | t_user | 0 | 0 | | test | t_role | 4 | 0 | In_use表示有多少线程正在使用该表,这些线程有可能已经给该表加锁,或者正在等待或得锁给该表加锁 Name_locked是否表名称被锁定,表名称被锁定一般发生在rename table时。 结合show processlist可查看哪个线程锁表了: