
数据库、MYSQL基础
文章平均质量分 56
笑天居士
天下风云出我辈,一入江湖岁月催。皇图覇业谈笑中,不胜人生一场醉。
展开
-
修改 mysql-binlog 二进制日志文件至其它目录
myql默认配置情况下,二进制日志文件是保存在默认的数据目录 data 下,如:/usr/local/mysql/data。 有时我们希望把 binlog 修改保存到其他目录下,现记录下操作过程。 假设原目录为: /usr/local/mysql/data,并且已有一些日志文件 mysql-bin.?????? 新目录为: /data/mysql/datamysql.server stopvi原创 2017-10-27 16:44:40 · 6494 阅读 · 0 评论 -
replace into 浅析之一
一 介绍 在笔者支持业务过程中,经常遇到开发咨询replace into 的使用场景以及注意事项,这里做个总结。从功能原理,性能和注意事项上做个说明。二 原理2.1 当表中存在主键但是不存在唯一建的时候。表结构CREATE TABLE `yy` ( `id` bigint(20) NOT NULL, `name` varchar(20) D转载 2015-06-10 10:54:46 · 1928 阅读 · 1 评论 -
replace into 浅析之二
一 介绍 上一篇文章介绍了replace into的基本原理。本章内容通过一个例子说明 replace into 带来的潜在的数据质量风险,当涉及replace into操作的表含有自增主键时,主备切换后会造成数据覆盖等不一致的情况发生。二 案例分析在主库上操作root@test 12:36:51>show create table t1 \G******转载 2015-06-10 10:55:35 · 2105 阅读 · 0 评论 -
利用innodb_force_recovery 解决MySQL服务器crash无法重启问题
一 背景 某一创业的朋友的主机因为磁盘阵列损坏机器crash,重启MySQL服务时 报如下错误:InnoDB: Reading tablespace information from the .ibd files...InnoDB: Restoring possible half-written data pages from the doublewrite转载 2015-06-01 10:37:03 · 1433 阅读 · 0 评论 -
MYSQL校对规则
一、前言有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录;有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新了;有时候遇到这种情况,你的查询语句一切正常,查询却失败了,报告Illegal mix of collations错误;你很困惑,在想数据库是不是坏了。。。其实 ,这些都和数据库转载 2015-06-01 15:12:30 · 2317 阅读 · 0 评论 -
MySQL性能优化之 延迟关联
【背景】 某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下。使用工具查看数据库正在执行的sql ,排在前面的大部分是:SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time, end_time, market_type, back_leaf_categ转载 2015-06-01 10:52:19 · 2148 阅读 · 0 评论 -
MySQL · 捉虫动态· InnoDB自增列重复值问题
问题重现先从问题入手,重现下这个 buguse test;drop table if exists t1;create table t1(id int auto_increment, a int, primary key (id)) engine=innodb;insert into t1 values (1,2);insert into t1 values (null转载 2015-01-20 11:04:06 · 991 阅读 · 0 评论 -
使MySQL查询区分大小写的实现方法
1、一种方法是可以设置数据库、表或行的collation,使其为binary或case sensitive。在MySQL中,对于Column Collate其约定的命名方法如下: 注意:如果表已经建立并且有数据,原来又没有区分大小写,这时alter table是没用的,只能更新列的属性 *_bin: 表示的是binary case sensitive collation,也就原创 2014-10-27 11:57:09 · 1058 阅读 · 0 评论 -
php与mysql通讯那点事
由于原文的编排方式,直接看dr转载 2014-11-12 13:53:10 · 1046 阅读 · 0 评论 -
MYSQL,innodb_buffer_pool_size内存分配方式
以前一直以为MYSQL,innodb_buffer_pool_size=8G,MySQL一起动就会将占用掉8G内存(认为TOP可以看到内存被使用了8G),但是最近才仔细研究一下,原来不是这样的(可能自己对Linux malloc内存分配也只是知道了个皮毛吧),MySQL启动时实际只是在虚拟内存中分配了地址空间,而并没有真正的映射到物理内存上。因为malloc分配内存是先在虚拟内存中分配地址的,到实际使用时才真正的映射到物理内存因此这个地方,如果由于机器内存使用不当,到了MySQL真正要映射物理内存时原创 2014-08-09 15:24:08 · 5943 阅读 · 0 评论 -
MySQL遇到一死锁现象,记录一下
遇到一死锁现象:事务级别中使用了最高的隔离级别:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE一个事件中,先select,如果没有则insert,有则update当两个请求同事到达时,死锁发生了下面详细描述一下:CREATE TABLE `t1` ( `a` int(11) NOT NULL,原创 2014-07-29 09:15:30 · 1791 阅读 · 0 评论 -
MySQL事务隔离级别为"REPEATABLE-READ"下的"幻读"现象
我们用一个示例来讲解这种情况,及在并发事务进怎样避免这种情况。Create Table: CREATE TABLE `t1` ( `a` int(11) NOT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`a`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;session1原创 2013-11-17 12:33:45 · 8178 阅读 · 2 评论 -
关于Relay Log无法自动删除的问题(Neither --relay-log nor --relay-log-index were used)
今天查看mysql err日志,发现mysql重启时总会有如下日志出现:[Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=liytest-relay-bin' to avoid this prob原创 2014-07-25 09:29:05 · 4819 阅读 · 0 评论 -
replace into导致mysql自增列导致主键重复问题分析
前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下。以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈。废话少说,进入正题。 拿到问题后,首先查看现场,发现问题表的中记录的最大值比自增列的值要大,那么很明显,当有记录进行插入时,自增列产生的值就有可能与已有的记录主键冲突,导转载 2015-06-13 22:32:34 · 7739 阅读 · 0 评论 -
MySQL使用中遇到的问题及日常操作累积(持续更新)
MySQL使用中遇到的问题及日常操作累积(持续更新)[TOC]20150601:slave_net_timeout 问题一则在一个已经建立主从复制关系的系统里面,正常情况下,由从库向主库发送一个 COM_BINLOG_DUMP 命令后,主库有新的binlog event,会向备库发送binlog。 但是如果主库长时间(大于slave_net_timeout)没有向从库发送binlog,从库就会认为原创 2015-06-01 11:20:14 · 1638 阅读 · 0 评论 -
mysql在线无性能影响删除7G大表
如何在mysql数据库里删除7G(或更大)大表,使其又不影响服务器的io,导致性能下降影响业务。先不说其是mysql表,就是普通文件,如果直接rm删除,也会使服务器的io性能急剧下降;换个思路如果用化整为零的方式,分多次大大文件一点一点删除,就可以避免因删除文件占用太多服务器io资源例子:版本:mysql> select version();+------------+转载 2017-08-25 11:46:45 · 1378 阅读 · 0 评论 -
MySQL/InnoDB处理AUTO_INCREMENT(一)
http://dev.mysql.com/doc/refman/5.6/en/innodb-auto-increment-handling.htmlAUTO_INCREMENT Handling in InnoDB下面所使用的表CREATE TABLE people ( person_id BIGINT NOT NULL AUTO_INCREMENT, fir转载 2017-07-02 16:39:04 · 1828 阅读 · 0 评论 -
MySQL/InnoDB处理AUTO_INCREMENT(二)
Configurable InnoDB Auto-Increment LockingAs described in the previous section, InnoDB uses a special lock called the table-level AUTO-INC lock for inserts into tables with AUTO_INCREMENT columns. T转载 2017-07-02 16:42:50 · 1361 阅读 · 0 评论 -
MySQL auto_increment实现
运维的时候,经常遇到auto_increment的疑惑:机器异常crash,重启后id回退的问题性能考虑,每次获取肯定不会持久化,内存中取值,statement复制如何保证主备一致id的取值受binlog的保护吗1. auto_increment相关的参数控制1.1 innodb_autoinc_lock_mode0: 每一个statement获取一个排他lock,转载 2017-07-02 16:32:11 · 1710 阅读 · 1 评论 -
MySQL 命令行工具之 mysqldump 深入研究
原文链接:http://www.cnblogs.com/digdeep/p/4898622.htmlhttp://www.cnblogs.com/digdeep/p/4906032.htmlmysqldump 是MySQL的一个命令行工具,用于逻辑备份。可以将数据库和表的结构,以及表中的数据分别导出成:create database, create table, i转载 2017-03-15 11:13:18 · 1945 阅读 · 0 评论 -
使用 xtrabackup 进行MySQL数据库物理备份
原文链接:http://www.cnblogs.com/digdeep/p/4946230.html0. xtrabackup的功能能实现的功能:非阻塞备份innodb等事务引擎数据库、备份myisam表会阻塞(需要锁)、支持全备、增量备份、压缩备份、快速增量备份(xtradb,原理类似于oracle:tracking 上次备份之后发生修转载 2017-03-15 11:04:02 · 11530 阅读 · 0 评论 -
深入理解mysqldump原理 --single-transaction --lock-all-tables --master-data
原文链接:http://blog.youkuaiyun.com/cug_jiang126com/article/details/49824471在mysqldump过程中,之前其实一直不是很理解为什么加了--single-transaction就能保证innodb的数据是完全一致的,而myisam引擎无法保证,必须加--lock-all-tables,前段时间抽空详细地查看了整个mysqldu转载 2017-03-14 11:15:20 · 637 阅读 · 0 评论 -
MySQL 一致性读 深入研究
原文链接:http://www.cnblogs.com/digdeep/p/4947694.html一致性读,又称为快照读。使用的是MVCC机制读取undo中的已经提交的数据。所以它的读取是非阻塞的。相关文档:http://dev.mysql.com/doc/refman/5.6/en/innodb-consistent-read.htmlA consisten转载 2017-03-14 11:05:39 · 939 阅读 · 0 评论 -
一次mysql slave故障的解决过程
mysql> show slave status\G Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running原创 2017-03-06 13:07:24 · 9060 阅读 · 0 评论 -
Mysql 主从出现故障
今天由于 slave 机异常掉电导致主从同步出现异常在 slave mysql 上查看 slave 状态: show slave status\G发现 IO 线程正常,但是 SQL 线程 NO,错误如下:Last_SQL_Errno: 1594Last_SQL_Error: Relay log read failure: Could not parse relay log event entry原创 2016-08-17 18:32:14 · 2679 阅读 · 0 评论 -
MySQL relay_log_purge=0 时的风险
http://ourmysql.com/archives/1453有时候,我们希望将 MySQL 的 relay log 多保留一段时间,比如用于高可用切换后的数据补齐,于是就会设置 relay_log_purge=0,禁止 SQL 线程在执行完一个 relay log 后自动将其删除。但是在官方文档关于这个设置有这么一句话:Disabling purging of rel转载 2016-04-06 13:06:04 · 8292 阅读 · 1 评论 -
DBA的技能图谱
http://www.cnblogs.com/billyxp/p/5053734.html转载 2016-02-17 09:38:52 · 6953 阅读 · 0 评论 -
为mysql master主机新建一slave并监控slave一致性
搭建环境master:172.16.18.114,正式服务器,mysql运行中 现要为master新建一slave,172.16.18.165,并监控其延迟原创 2015-06-08 11:30:20 · 1613 阅读 · 0 评论 -
IP address could not be resolved: Temporary failure in name resolution
140724 18:44:55 [Warning] IP address '61.143.209.110' could not be resolved: Temporary failure in name resolution问题产生的原因:出现错误的原因是MYSQL Server在本地内存中维护了一个非本地的Client TCP cache,这个cache中包含了远程Client的登录信息,比如IP地址,hostname等信息。如果Client连接到服务器后,Mysql首先会在本地TCP池中根据I原创 2014-07-25 09:49:58 · 9627 阅读 · 1 评论 -
磁盘满了MySQL会做什么?
最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况。 一、磁盘满了之后MySQL会做什么?我们看下官方的说法When a disk-full condition occurs, MySQL does the following: * It checks once every minute t转载 2014-05-08 15:22:55 · 1095 阅读 · 0 评论 -
基于LBS功能应用的Geohash方案
随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆、银行、妹纸等等)。基础数据中,一般保存了目标位置的经纬度;利用用户提供的经纬度,进行对比,从而获得是否在附近。目标:查找附近的某某某,由近到远返回结果,且结果中有与目标点的距离。针对查找附近的某某某,提出两个方案,如下:一、方案A:抽象为球面两点距离的计算,即已知道球面上两点的经纬度;转载 2014-07-01 11:06:35 · 2954 阅读 · 0 评论 -
关于"[MYSQL ERROR(2006):MySQL server has gone away]"的解决方法
产生这个错误一般是由于两个方面的原因,一个是由于向mysql server发送的数据包大小超过了参数max_allowed_packet设置的大小,这个可以通过减小数据包或加大max_allowed_packet参数来解决但是对于大多数情况来说都是由于mysql的wait_timeout这个参数决定的,默认值是288000,即8个小时,空闲8个小时没动作,mysql就会结束该连接,这个问题原创 2013-11-13 11:19:13 · 2948 阅读 · 0 评论 -
清除MySQL历史bin-log日志文件
MySQL的bin-log日志文件会占据很大磁盘空间,需要定期清理MySQL历史bin-log日志文件清理bin-log,使用PURGE MASTER LOGS语句 PURGEMASTERLOGS语法PURGE{MASTER|BINARY}LOGSTO'log_name'PURGE{MASTER|BINARY}LOGSBEFORE'date'用于删除原创 2013-11-13 11:18:09 · 1518 阅读 · 0 评论 -
mysql删除大表更快的drop table办法
在DROP TABLE的时候,所有进程不管是DDL还是DML都被HANG起;直到DROP结束才继续执行;这是因为INNODB会维护一个全局独占锁(在table cache上面),直到DROP TABLE完成才释放。在我们常用的ext3,ext4,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还是需要点时间的。下面我们介绍一个快速DROP table 的方法; 不管多大的表,I转载 2013-11-13 11:12:56 · 2245 阅读 · 0 评论 -
mysql 交互式方式记录操作
在以交互式使用Mysql客户端时,将所有结果记录到文本文件中是很有用的,这样可以在以后查看,可以使用tee或者\T选项后面加上文件名(可以加上绝对路径名),来启动日志记录,例如希望将当前的会话记录到mysql_opt.sql中,可以使用: mysql> show databases; \T/home/jfy/tmp/aaa;+--------------------+| Datab原创 2013-11-13 11:11:22 · 1722 阅读 · 0 评论 -
MySQL远程导入数据LOAD DATA LOCAL INFILE ...
假设客户端与MYSQL服务器不在同一机器导入文件在客户端机器上/usr/jfy/tmp/scpcdr.txt,在客户机登录mysql后,执行下面导入语句:LOAD DATA LOCAL INFILE "/usr/jfy/tmp/scpcdr.txt" into table scpcdr fields TERMINATED by '|';正常情况是可以成功的,如果出现提示:原创 2013-11-13 11:10:18 · 10225 阅读 · 0 评论 -
浅析MySQL七种日志
一、错误日志 ①参数 log_error:指定日志的位置和名称 ②作用 ⑴出错/告警信息 ⑵优化帮助二、慢查询日志 ①参数 log_slow_queries:指定日志的位置和名字 long_query_time:运行时间小于等于该阈值的SQL不会被记录 log_queries_not_using_indexes:原创 2013-11-13 11:06:57 · 1153 阅读 · 0 评论 -
mysql show processlist命令 详解
查进程 show processlist删除进程 kill ID查完整sql show full processlist;连数据库 mysql -S /tmp/mysql.sock 或者mysql SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以转载 2013-11-13 09:18:00 · 1879 阅读 · 0 评论 -
MySQL的SQL语句注释的应用
MySQL的SQL语句里面是可以加注释的例如:"select * from t1"可以写成"/* tag */select * from t1"这个tag可以扩展成很多格式,这样在MySQL的日志中就可以看到这个tag但是我在5.0和5.5版本中,象上面的注释,并不会显示出来,还是直接显示"select * from t1"研究了一下,可以改成这样:"/*原创 2013-11-26 10:08:03 · 3544 阅读 · 0 评论 -
MySQL的CLIENT_MULTI_STATEMENTS用法
将多个语句发给MySQL,可以减少网络交互次数。对于带事务的情况,可以缩短单线程上事务的生存期。C API在mysql_real_connect 时连接参数增加CLIENT_MULTI_STATEMENTS就可以用分号隔开,将多个SQL语句一起发给Server。其实在mysql自带的客户端中,连接参数就已经设置了这个位。 mysql_real_connect(&mysq原创 2013-11-25 10:24:33 · 7156 阅读 · 0 评论