MySQL
if 0 = -I can
那年我们还有梦
关于文学
关于爱情
关于穿越世界的旅行
如今我们深夜痛饮
杯子碰到一起
都是梦破碎的声音
展开
-
小谈 MySQL 第十一话·InnoDB 碎片整理
官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可:目录一、MySQL 表碎片化(Table Fragmentation) 的原因二、MySQL 中如何找出碎片化严重的表1、使用 show table status from db_name like 'tb_name' \G2、查询 information_schema.TABLES 获取表的碎片化信息三、MySQL 中如何减低表的碎片1、OPTIMIZE TABLE XXXX2、原创 2020-10-27 09:19:03 · 1983 阅读 · 5 评论 -
小谈 MySQL 第十话·InnoDB 直接拷贝文件实现表的复制
写在最前:在 MySQL 中如果要迁移一张表导入另一个环境中,常规的做法就是使用备份工具备份,比如 mysqldump,然后拷贝备份到目标环境导入。如果表数据量很大,导出 dump 文件很大的情况下,使用导出导入工具其实要花费不少的时间。怎么样提高效率呢❓有一种方案就想冷备份一样,直接拷贝表数据文件到目标环境,当然 MySQL 早期版本这么做是不支持的,因为会有很多关联数据在 ibdata 中,InnoDB 的数据存储对应的数据字典信息,是存放在共享表空间中,无法直接剥离出来,而在 5.6/5.原创 2020-10-26 23:49:24 · 1189 阅读 · 0 评论 -
小谈 MySQL 第九话·主从跳过复制错误
1、哪些复制错误可以跳过MySQL 因为 binlog 机制问题,有些时候会出现从库重放 SQL 执行失败的情况,特别是老的 statement 模式最容易出现这种情况(因为函数和存储过程的原因),这也是为什么强调使用 mixed 和 row 模式的原因。另外就是一些外部 XA 事务,因为 XA 事务日志不在 MySQL 中,有时候会出现回滚失败的情况,导致主从报错。出现这些情况该怎么办呢❓重做,当然是可以,但是如果库非常大,那耗时就不是一两小时那么容易,如果生成环境是做了读写分离,就不好交代了原创 2020-10-10 21:00:55 · 164 阅读 · 0 评论 -
小谈 MySQL 第八话·初始化数据目录
目录一、写在最前二、数据目录初始化概述1、常用参数说明2、初始化方式三、数据目录初始化期间的服务器操作1、检查数据目录是否存在2、创建相关库表3、初始化系统表空间和管理 Innodb 表所需的相关数据结构4、'root'@'localhost'超级用户和其它保留账号创建5、填充用于 HELP 语句的帮助表6、检测是否使用 init_file 系统变量命名 SQL 语句文件7、初始化结束退出四、详情请参照官网五、MySQL 安装详解一、写在最前.原创 2020-07-29 11:48:18 · 1768 阅读 · 0 评论 -
小谈 MySQL 第七话·高可用架构(Mycat+MHA+LVS)
写在最前:该篇文章还未完成,待进一步更新...。。一、初始Mycat+MHA+LVS1、为什么选择 Mycat?互联网的高速发展使分布式技术兴起,当系统的压力越来越大时,人们首先想到的解决方案就是想上扩展(scale up),简单说就是不断增加硬件性能来解决这个问题,采用这种方案的硬件成本比较高。还有另外一种方案就是水平扩展,通过增加服务器的节点采用负载均衡来解决问题,这样在应用服务器层面我们可以不停地增加服务器,来满足高并发和高访问量。这里我们只需要考虑 session 的处理,所有的压力都.原创 2020-07-13 23:03:11 · 980 阅读 · 0 评论 -
小谈 MySQL 第六话·日志文件
写在最前:日志文件是 MySQL 数据库的重要组成部分。MySQL 有几种不同的日志文件,通常包括重做日志、回滚日志、二进制日志、错误日志、慢查询日志、一般查询日志、中继日志等。这些日志可以帮助我们定位 MySQL 内部发生的事件,MySQL 性能故障,记录数据的变更历史,恢复数据等。重做日志(redo log),又被称为Innodb 的在线 redo 日志(innodb redo log) 回滚日志(undo log) 二进制日志(bin log) 错误日志(error log) 慢查询.原创 2020-07-03 09:58:04 · 249 阅读 · 0 评论 -
小谈 MySQL 第五话·备份与恢复之 mysqldump
目录一、mysqldump 简介二、mysqldump 备份命令1、命令格式2、选项解析3、常用选项说明4、备份实例① 导出数据库② 导出数据库中的某张数据表5、恢复操作① 系统命令行② source 方法三、生产环境不同引擎备份命令参数1、mysqldump 的关键参数2、不同引擎备份命令参数用法① MyISAM 存储引擎② InnoDB 存储引擎③ 生产环境命令参考一、mysqldump 简介mysqldump 是 MySQL原创 2020-06-30 19:17:17 · 375 阅读 · 0 评论 -
小谈 MySQL 第四话·备份与恢复之 Xtrabackup
一、Xtrabackup 简介MySQL 冷备、mysqldump、MySQL 热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于 50G 或 100G,存储空间足够多的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据库备份策略。例如每周日用全量备份,周一到周六用增量备份。而Xtrabackup 就是为了实现增量备份而出现的一款主流备份工具,Xtrabackup 有两个工具,分别是xtrabackup 和innobackupex。Xtr...原创 2020-06-30 12:03:05 · 210 阅读 · 0 评论 -
小谈 MySQL 第三话·主从同步延迟
目录一、MySQL 从库同步的相关参数二、MySQL 从库同步延时出现的情况三、MySQL 主从同步延迟的缘由1、MySQL 主从同步原理2、MySQL 主从同步延迟是怎么产生的四、MySQL 主从同步延迟解决方案1、架构方面2、硬件方面3、MySQL 参数调整4、文件系统本身属性的优化(略)5、号称永久解决复制延迟问题的并行复制一、MySQL 从库同步的相关参数1、Master_Log_Fileslave 中的 I/O 线程当前正在读取的主服务器二进原创 2020-06-29 16:18:56 · 276 阅读 · 0 评论 -
Open-Falcon 之自定义 MySQL 监控
目录一、系统要求二、逻辑原理三、汇报字段四、监控告警设置五、MySQL 监控指标采集脚本1、60_port_collector.sh2、30_monitordata_collector.sh一、系统要求操作系统:Linux MySQL ≥ 5.6# cp /data/mysql-5.6.16/bin/mysql /usr/bin/# cp /data/mysql-5.6.16/bin/mysqladmin /usr/bin/二、逻辑原理通过Base_My.原创 2020-06-17 18:55:52 · 1074 阅读 · 0 评论 -
小谈 MySQL 第二话·优化原理
写在最前: 谈到 MySQL 的查询优化,相信大家肯定收藏了很多奇技妙招:不能使用 select *、不使用 null 字段、合理创建索引、为字段选择合适的数据类型...。。那你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下的性能是否真的有提升?我想应该未必。因而理解这些优化建议背后的原理其实尤为重要,希望本文能让大家重新审视这些优化建议,并在实际业务场景下合理...原创 2020-03-27 10:51:43 · 385 阅读 · 0 评论 -
Mac 系统下源码编译安装 MySQL
目录写在最前:一、千锤百炼 Boost 库二、编译安装 MySQL1、创建自己的目录,放置安装包2、解压3、编译、安装4、变更所属组、用户5、创建多实例数据、日志等文件存放路径6、初始化各个实例 [初始化完成后会自带随机密码在输出日志中]7、各实例开启SSL连接(可选)三、配置 MySQL 配置文件1、多实例2、单实例四、复制实例脚本到...原创 2019-12-20 21:51:55 · 1380 阅读 · 0 评论 -
完虐到你不要不要的的 SELECT COUNT
目录写在最前:一、认识 COUNT1、关于 COUNT 函数,MySQL 官网有详细介绍2、简单翻译一下二、答疑解惑1、COUNT 有几种用法❓2、COUNT(字段名 ) 和 COUNT(*) 的查询结果有什么不同❓3、COUNT(1) 和 COUNT(*) 之间有什么不同❓4、COUNT(1) 和 COUNT(*) 之间的效率哪个更高❓5、为什么《阿里巴巴...原创 2019-11-11 20:08:19 · 509 阅读 · 0 评论 -
MySQL 时间类型精确到毫秒、微秒及其处理
一、MySQL 中日期和时间类型类型 大小(字节) 范围 格式 用途 默认值设置 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间 YEAR ...原创 2019-10-18 17:47:43 · 17154 阅读 · 1 评论 -
线上 MYSQL 升级报错故障处理总结
一、mysql5.6升级为5.7遇到错误ERROR 1054 (42S22): Unknown column 'password_last_changed' in 'mysql.user'把从库从5.6.16升级到5.7.16,在授权用户是报错:ERROR 1054 (42S22): Unknown column 'password_last_changed'in'mysql.user...原创 2019-06-04 20:42:16 · 1770 阅读 · 1 评论 -
用户聊天记录存储表(亿级别)优化及分片策略
目录写在最前MySQL 对于千万级别的大表要怎么优化?如果已经达到了亿级别呢?1、能不分就不分2、数据量太大,正常的运维影响正常的业务访问3、表设计不合理4、某些数据表出现无穷增长5、安全性和可用性的考虑6、业务耦合性考虑加点佐料:借一波典故(三国迷)用户聊天记录存储表概况:一、表优化1、原建表语句2、新建表语句3、优化项3.1 优化索引...原创 2019-06-05 10:42:50 · 9684 阅读 · 0 评论 -
Mycat 分片表全局自增主键实现及测试
目录一、全局序列号介绍1、本地文件方式2、数据库方式3、本地时间戳方式4、分布式ZK ID生成器5、ZK递增方式6、其它方式二、准备工作环境1、在MySQL建库2、在MySQL建表3、配置schema.xml文件(按月分表)4、配置rule.xml文件5、配置server.xml文件6、重新启动mycat7、...原创 2019-05-10 09:34:19 · 1293 阅读 · 0 评论 -
SQL 更新操作(update/delete)预防措施及案例
目录一、写在最前:1、update2、delete3、总结如下表:key表示索引、const表示常量二、用binlog恢复数据(举个栗子)三、小结一、写在最前: 实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上where条件或者where条件不合理,那么导致的结果可想而知,如...原创 2019-03-29 18:26:02 · 3060 阅读 · 0 评论 -
MySQL与MyCAT一些规范分享
目录一、基础规范二、命名规范三、表设计规范四、字段设计规范五、索引设计规范六、SQL使用规范七、MyCAT使用规范一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8mb4字符集解读:支持emoji ,万国码,无需转码,无乱码风险,节省空间(3)...原创 2019-03-26 20:10:39 · 913 阅读 · 0 评论 -
SQL 第二话·语法问题及解决案例
目录写在最前:问题01:mycat报Java非法参数异常问题02:避免数据类型不一致问题03:不使用子查询问题04:事务型存储引擎Innodb的锁定特性?问题05:字符集不一致问题问题06:避免函数索引问题07:LIKE左百分号无法使用到索引问题08:读取适当的记录LIMIT M,N问题09:避免随机取记录,千万不要 ORDER BY RAND()问题1...原创 2019-03-26 20:16:11 · 888 阅读 · 0 评论 -
MySQL 常见错误类型
1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录1020:记录已被其他用户修改1021:硬盘剩余空间不足,请加大硬盘可用空间1022:关键字重复,更改记录失败...原创 2019-03-26 20:33:21 · 367 阅读 · 0 评论 -
MySQL5.7.16多实例安装
目录一、下载(mysql-5.7.16.tar.gz)二、yum安装相关扩展工具三、下载解压mysql-5.7.16.tar.gz四、编译安装MySQL五、创建多实例数据、日志等文件存放路径,如下树形结构,并更改所属组用户六、初始化各个实例 [ 初始化完成后会自带随机密码在输出日志中 ]七、各实例开启SSL连接(可选)八、配置MySQL配置文件/etc/my.cnf...原创 2019-03-26 20:55:43 · 443 阅读 · 0 评论 -
MySQL5.7.16单实例安装
目录一、下载(mysql-5.7.16.tar.gz)二、yum安装相关扩展工具三、下载解压mysql-5.7.16.tar.gz四、编译安装MySQL五、创建单实例数据、日志等文件存放路径,如下树形结构,并更改所属组用户六、初始化MySQL[ 初始化完成后会自带随机密码在输出日志中 ]七、开启SSL连接(可选)八、配置MySQL配置文件九、复制服务脚本并添加到...原创 2019-03-26 21:00:29 · 449 阅读 · 0 评论 -
SQOOP 通过 MyCat 从 MySQL 导入数据到 Hive
目录1. hadoop、hive、sqoop、MySQL、MyCat安装(略)2. 把MySQL Java链接器的jar文件拷贝到sqoop的lib目录下3. 测试(必须在sqoop用户下)4. 注意5. SQOOP从MySQL导入数据到Hive脚本树形图6. 计划任务脚本(bim_mysql_hive_wf.sh)7. 邮件告警(已接入h...原创 2019-03-28 20:42:01 · 778 阅读 · 0 评论 -
SQL 第一话·操作问题及解决案例
目录写在最前:一、MySQL版本:1.执行更新操作(如如此不带where更新语句)2.在mysql中执行以下命令,即可查看二进制日志文件的列表:3.查看binlog日志模式4.查看是否开启全局事物ID(GTID)5.查找误操作执行的时间点6.备份相关日志文件7.可以使用以下语句将数据恢复到故障前8.跳过故障SQL,继续执行binlog,完成恢复。9.查看...原创 2019-03-28 21:03:53 · 884 阅读 · 0 评论 -
MY数据库备份策略之MySQL
目录一、备份策略结构树形图二、当前备份系统支持备份方式三、备份脚本四、目录介绍五、备份状态监控提醒六、数据库备份脚本七、涉及备份信息数据库八、innobackupex的介绍一、备份策略结构树形图 1 (备份存储机器,需部署)xx.xx.5.16:/home/backup_mysql_wufei/ 2 ├── backup ...原创 2019-03-29 11:17:14 · 677 阅读 · 0 评论 -
数据库备份脚本之MySQL
目录1、(备份调度机器)调度脚本:/home/wufei/backup_controll/backup_controll_wf.sh2、(备份存储机器)默认配置文件:/home/backup_mysql_wufei/conf/xxxx_mysql_backup_wf.conf3、(备份存储机器)备份脚本函数:/home/backup_mysql_wufei/bin/xxxx_xtra...原创 2019-03-29 11:31:30 · 330 阅读 · 0 评论 -
备份状态监控提醒之MySQL
目录一、备份状态监控提醒功能树形图二、邮件提醒三、功能介绍四、信息展示五、监控脚本1.执行脚本:backup_monitor_wf.sh2.全局参数配置文件:backup_monitor_wf.conf一、备份状态监控提醒功能树形图 (备份监控机器)xx.xx.1.49:/home/wufei/monitor/ ├── bin │...原创 2019-03-29 11:55:21 · 527 阅读 · 0 评论 -
小谈 MySQL 第一话·慢 SQL 优化
写在最前:1、慢SQL可能会消耗了70%~90%的数据库CPU资源2、SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低3、SQL语句可以有不同的写法一、MySQLEXPLAIN 详解EXPLAIN Output Columns 列名 说明 id ...原创 2019-04-16 16:53:53 · 1853 阅读 · 0 评论 -
SQLSTATE 问题分析及解决·第四话
【写在最前】SQLSTATE[HY000]这种形式的报错不属于MySQL报错,是PDO报错(SQL状态错误)【问题01】:SQLSTATE[HY000]: General error: 1023 program err:java.lang.NumberFormatException: For input string: \"2886861933\" (SQL: select * from `...原创 2019-04-16 17:17:47 · 2932 阅读 · 0 评论 -
MySQL监控脚本
目录一、MySQL服务器状态监控脚本树形图二、mysql_monitor_wf.sh三、mysql_monitor_wf.conf四、Table:db_mysql_policy五、Table:db_mysql_info六、Table:db_mysql_email一、MySQL服务器状态监控脚本树形图 /home/wufei/mysql_status_monit...原创 2019-03-22 20:02:13 · 2492 阅读 · 0 评论