• MySQL运维常用命令

    在工作中会经常对数据库进行运维操作,例如大表清理等等统计数据库占用的空间统计同一个实例下面的所有数据库的容量大小SELECTtable_schemaas'数据库',sum(table_rows)as'记录数',sum(truncate(data_length/1024/1024,2))as'数据容量(MB)',sum(truncate(index_l
  • In aggregated query without GROUP BY, expression #1 of SELECT list contains

    起源最近发下很多人在我的python课程下面提问,关于执行python定时器Job会报错如下InaggregatedquerywithoutGROUPBY,expression#1ofSELECTlistcontains出现原因在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为groupby之后,
  • Yii2实现Mysql断线重连

    缘由大家都知道我们做一个客服系统,是基于websocket长连接服务的。在这些长连接服务进程中,会对数据库有些操作。建议尽量在这些长连接服务中,少查询数据,能用缓存都用缓存。我们都知道数据库服务保持连接是有时间限制的,过了时间在操作数据库会出现错误:MySQLserverhasgoneaway。这里就要用到数据库重连机制来实现了我们的客服系统使用的MVC框架是Yii2,大家都知道我一直使用这个框架
  • 乔布斯Jobs管理调度平台

    缘由由于公司系统相对来说还是挺多的,定时任务也非常多,一直使用crontab配置存在几个问题。这几个问题只要使用该方式应该都会深有感触。问题一管理维护问题:定时Job太多,不清楚总共有多个Job,不知道每个Job到底是谁写的主要功能是什么。如果Job部署在多台服务器那就更要人命了问题二调度监控问题:crontab在一定程度上解决了调度问题,但是调度不光光是运行状态。在实际工作中还会关注,什么时间运
  • 【框架发布】Python Flask CMS V2

    缘由我在工作过程中发现,我们经常会开发很多相同类似的东西,每一次都是从零开始,既浪费时间还没有意义,基本都是复制。我个人认为我们应该把很多基础东西开发好以后所有其他的应用系统都基于这个上面进行开发,既可以让基础越来越丰富,也可以统一维护。学过我Python视频课程的应该知道,我都是用了同一个自己整理过的Flask框架。用的多了慢慢就整理和优化了很多技巧。技术选型有很多人肯定有疑问,为什么我们要选择
  • MySQL在线修改大表神器:PT工具

    缘由最近我们公司的慢SQL特别多,特别是某个固定的表,每天基本都有好几千的慢查询,但是这个表有特别大,不能随意加索引,索引我们就需要一个工具来协助我们进行改DDL的时候,不影响业务,那就是PT工具效果图如下是慢SQL数量折线图明显可以看到大幅度下降了使用场景在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,100
  • CentOS7 安装和配置MySQL8全过程记录

    缘由最近由于工作调整,很多基础工作都要准备。对我们研发来讲,代码写完了还需要部署到生产环境。那就无法避免的要部署生产服务器的环境。由于软件一直会有更新迭代。这里我们就说下MySQL8.0在CentOS7安装的一个全过程配置源由于默认源已经不再有MySQL软件信息了,所以需要自己去官方下载并安装wgethttps://dev.mysql.com/get/mysql80-community-relea
  • MySQL 大表优化方案(长文)

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段1、尽量使用TINYINT、SMALLIN
  • 树莓派3 之 安装Mysql服务

    需求在树莓派上安装Mysql服务,并开启远程访问步骤安装mysqlserver$sudoapt-getinstallmysql-server我以为中间会让我提示输入数据库root的密码,没想到一帆风顺,直接完成,我要疯了,密码到底是什么了。通过搜索发现,可以使用如下命令,空密码登录$sudomysql-uroot设置root密码usemysql;updateusersetplugin='m
  • 【Mysql数据库访问利器】phpMyadmin

    缘由我们程序员难免要和数据库打交道,经过这几年的锻炼,感觉手写SQL语句已经忘记的差不错了,促使我一定要这篇文章的原因是,有一次晚上我更新某个系统的数据库的表(由于目前公司比较严格,数据库都只能通过命令行访问,无法通过GUI工具操作),然后由于where条件写错了,然后数据更新错了不少。痛定思痛:用好的工具来避免这种情况,那就是phpMyadminphpMyadminphpMyAdmin是一个以P
  • 【数据库】Invalid default value for 'create_date' timestamp field

    问题最近遇到一个这样的问题,新建数据库表的时候提示错误如下Invaliddefaultvaluefor'created_time'timestampfield语句如下`created_time`timestampNOTNULLDEFAULT'0000-00-0000:00:00'COMMENT'插入时间'错误大致的意思就是不能为timestamp字段
  • MySQL:动态开启慢查询日志(Slow Query Log)

    前言在开发中,高效能的程序也包括高效能的查询,所以优化SQL也是程序员必要技能之一。要优化就必须要有慢日志记录才可以知道哪些查询慢,然后反向去修改慢日志设置方式写入文件写入数据库实践操作方式一:写入文件编辑my.conf中修改log_slow_queries的日志地址$cd/etc/mysql$catmy.cnf|grepslowlog_slow_queries=/data/logs/mysql/
  • Ubuntu apparmor何方神圣

    AppArmor是一款与SeLinux类似的安全框架/工具,其主要作用是控制应用程序的各种权限,例如对某个目录/文件的读/写,对网络端口的打开/读/写等等。来之Novell网站的引用:AppArmorisdesignedtoprovideeasy-to-useapplicationsecurityforbothserversandworkstations.NovellAppArmorisanacc
  • 高性能MySQL

    《高性能mysql(第3版)》是mysql领域的经典之作,拥有广泛的影响力。第3版更新了大量的内容,不但涵盖了最新mysql5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16章和6个附录,内容涵盖mysql架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展
  • In MySQL, a zero number equals any string

    最近在做项目的过程中发现了一个问题数据库表test有个字段是target_idint(11),这个字段可能为零使用如下查询select*fromtestwheretarget_id='';select*fromtestwheretarget_id='abcd';这样,所有target_id=0的结果都会出来,为什么?查阅资料,这是类型转化导致的,在mysql中0意味着任何字符串其实不是mysql特
  • MYSQL 命令行显示乱码 解决方案

    中文乱码是因为编码集不支持,所以要改变编码先查看下设置的编码使用如下命令showvariableslike'character%';在mysql.conf(Ubuntumysql5.5)中的[client]区域加上default-character-set=utf8在[mysqld]区域加上character_set_server=utf8重启服务
  • apparmor 引起自定义mysql 日志问题

    今天手贱,看到mysql的日志在/var/log/mysql下面。总是觉得别扭,于是就想改变日志的位置,本人开发环境vagrant+ubuntu12.04,在/etc/mysql/mysql中修改了general_log的位置,放在/data/logs/mysql下面然后重启服务,servicemysqlrestart查看错误日志发现说/usr/sbin/mysqld:File'/data
  • MySQL 常用命令集

    1.mysqlbinlog工具使用方法如下:先使用showbinarylogs查看在使用导出命令mysqlbinlog-R-uroot-pxxxx-hxxx.xxx.xxx.xxx-ddb_name--base64-output=decode-rows--start-datetime='2015-08-1313:11:21'--stop-datetime="2015-08