MySQL管理
aeolus_pu
这个作者很懒,什么都没留下…
展开
-
Cannot execute statement: impossible to write to binary log since statement is in row format and BIN
https://jira.mariadb.org/browse/MDEV-6810原创 2018-06-21 12:37:19 · 561 阅读 · 0 评论 -
mysql rename 操作
生产环境有些表数据量比较大,特别是一些日子表。需要对日志表rename操作。重命名操作是原子操作。 rename table table_old to table_bak,table_new to table_old;原创 2016-08-08 15:58:17 · 6613 阅读 · 0 评论 -
pt-quey-digest分析mysql 5.7 慢日志
# Time: 2016-01-22T02:58:34.696629Z# User@Host: root[root] @ localhost [] Id: 53549# Query_time: 35.915969 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0SET timestamp=1453431514;UPDATE s原创 2016-07-26 14:25:17 · 743 阅读 · 0 评论 -
GEN_CLUST_INDEX锁
这种锁信息的出现,以为着出现了表锁,造成了锁升级。在innodb中行级锁是靠索引实现的,出现这种锁信息,基本可以判定字段缺少索引。原创 2016-07-25 16:14:12 · 2856 阅读 · 0 评论 -
mysql 5.7 用户管理新特性
背景当前公司线上使用的版本mysql 5.7版本不断增加,简单记录下5.7用户管理方面新特性 安全认证; Mysql安全认证的改变主要涉及都mysql.user表。与5.5相比,增加password_expired、password_last_changed、password_lifetime、account_locked,修改plugin字段为not null,默认值my原创 2016-06-15 10:59:51 · 906 阅读 · 0 评论 -
慢查询slowlog记录日志问题
slowlog记录执行成功的慢查询语句,执行失败的不会记入慢查询slowlog日志里。mysql如何定义执行失败的慢查询语句?看来这只能看看源码是如何定义了。打开sql 执行记录功能,执行成功的和失败的都会记录。执行以下操作:set global log_output='TABLE'; -- 输出到表set global log=ON; 失败的、成功的都会记录。原创 2016-05-20 18:00:07 · 1786 阅读 · 0 评论 -
mysql 关于table_lock_wait和table_lock_immediate的问题
维护zabbix的同事今天让看看zabbix数据库是否有性能问题,在监控项里有table_lock_wait 和table_lock_immediate两项,table_lock_wait项为0,table_lock_immediate项数值很大。当时不明白这两项监控代表数据库什么性能问题。后查询资料 table_lock_wait 表示不能马上获得锁的数据,table_lock_immediat原创 2016-05-18 18:39:24 · 10146 阅读 · 3 评论 -
sysbench测试linux I/O算法性能
安装,直接yum源安装,centos版本6.4.[root@localhost ~]# yum install sysbench Loaded plugins: fastestmirror, refresh-packagekit, securityRepository percona is listed more than once in the configurationD原创 2016-05-18 15:21:14 · 412 阅读 · 0 评论 -
mysql I/O调度算法
接下来写原创 2016-05-18 14:28:29 · 374 阅读 · 0 评论 -
有趣的一个mysql问题
同事问道一个有趣的mysql问题,在一个有数据的表中,如何修改自增id值从一开始?我的第一反应就是不能无法修改,不能实现。在有表的数据中怎么能实现自增id值从一开始,逻辑上就行不通。做个试验:建自增表mysql> CREATE TABLE `tb1` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `col1` i原创 2016-05-16 17:56:06 · 425 阅读 · 0 评论 -
mysql sql 注入
今天又一次出现sql 注入,这大亏我们在zabbix上的及时监控,出现sql注入,mysql中 show processlist 里的state状态出现user sleep。这基本上意味着出现了sql 注入 如下sqlselect if(ascii(mid(user(),7,1))=64,sleep(6),0) from tablename where ifnull(is_delete,0)原创 2016-03-25 11:24:05 · 836 阅读 · 0 评论 -
mysql 中uuid不适合做主键
在mysql中,uuid不适合做主键,特别是数据量大的情况下。主要有以下原因:1. innodb 的非主键索引都将存一个主键,uuid 相比整数 id,索引大小增加很多;2. uuid 主键比较肯定比 整数慢,另外非主键索引查找最终还要引用一次主键查找;3. innodb 主键索引和数据存储位置相关(簇类索引),uuid 主键可能会引起数据位置频繁变动,严重影响性能。原创 2016-08-08 16:00:38 · 9287 阅读 · 1 评论 -
mysql 实现oracle中sequence 功能
实现方法:通过让auto_increment字段的值自增来实现sequence的功能。建立sequence表:CREATE TABLE `t1` ( `id` int NOT NULLAUTO_INCREMENT,,`c1` varchar(10) DEFAULT NULL,PRIMARYKEY (`id`),)插入一条记录:insert into t2(c1) values('a');原创 2016-08-10 14:09:44 · 558 阅读 · 0 评论 -
mysql 添加索引演变进程
mysql 5.5之前都是通过copytable方式,跟add column方式一样。5.5开始使用inplace方式,此方式在原表的基础上添加索引,抛开了copytable过程,缩短了添加索引过程,在次过程中表被锁定,只读不能写。5.6之后启用online模式。可以在线读写,完全不阻塞表。沿用5.5的inplace方式,在修改过程中,写入的新数据通过rowlog存放。索引添加完毕原创 2016-08-10 14:18:55 · 548 阅读 · 0 评论 -
最近一周工作问题总结
1 关于多线程slave_preserve_commit_order的设置对多线程复制影响 测试20391760 条数据insert slave库apply花费情况 开启slave_preserve_commit_order 花销 9分38秒关闭 slave_preserve_commit_order 花销 8分28秒 效果下降 13%,官方提原创 2017-03-15 11:34:25 · 1127 阅读 · 0 评论 -
索引对idus(增删改查)的影响
索引的原理: 索引是一个B+二叉树。从原理上说B+二叉树的特性 决定了对insert、update、delete、select的影响和作用。索引优点:查询效率变快。索引缺点:建立索引过多,会影响insert速度。如果新insert一个值,会导致B+二叉树进行再平衡重整,这个过程B+二叉树进行重新整理,索引越大,索引越多,重新整理的时间花费越大。所以有时候再进行大批量insert插入时,原创 2017-02-28 17:03:38 · 4966 阅读 · 0 评论 -
mysql rr 隔离级别解决幻读
幻读概念: 幻读是指在同一事务下当A用户读取某一范围的数据行时,B事务在该范围内插入了新行,当A用户再读取该范围的数据行时,会发现有新的“幻影”行(即读取到了B事务插入的数据)。 即违背事务隔离性要求。 为解决这个问题,出现了谓词锁(predict lock)。 next-key locking算法就是为了解决幻读问题。测试:session 1 root@lo原创 2017-02-18 23:02:50 · 4443 阅读 · 0 评论 -
mysql insert 加锁流程
INSERT sets an exclusive lock on the inserted row. This lock is an index-record lock, not a next-key lock (that is, there is no gap lock) and does not prevent other sessions from inserting into the ga原创 2017-02-16 11:21:12 · 6176 阅读 · 3 评论 -
innodb中不同语句设置不同锁类型
在锁读的过程中,一个update 或一个delete 经常设置记录锁在每一个索引记录上。这与where条件中是否排除此条索引记录没有关系。innodb认不出扩展的where扩展条件,只会认出那些索引区间被扫描。The locks are normally next-key locks that also block inserts into the “gap” immediately be原创 2017-02-16 13:18:50 · 440 阅读 · 0 评论 -
flush 相关
flush master : 类似于 reset master ,二进制日志重新初始化,binlog 日志从1开始flush table : 刷新缓存到磁盘 。flush table with read lock:刷新缓存到磁盘,并获得一个全局读锁。flush (类型) logs:原创 2016-12-08 10:22:38 · 307 阅读 · 0 评论 -
xtrabackup 恢复出现错误InnoDB: Error: log file ./ib_logfile2 is of different size 0 0 bytes
161104 10:11:54 InnoDB: Initializing buffer pool, size = 22.0G161104 10:11:55 InnoDB: Completed initialization of buffer poolInnoDB: Error: log file ./ib_logfile2 is of different size 0 0 bytesI原创 2016-11-04 13:47:30 · 3994 阅读 · 0 评论 -
遇到的mysql bug
mysql版本5.7,在information_schema下的tables表时,发现create_time这列是空值,百思不得其解,后查询官方文档如下:Prior to MySQL 5.7.8, for partitioned InnoDB tables, the CREATE_TIME column always showedNULL. This column原创 2016-09-22 09:36:25 · 482 阅读 · 0 评论 -
sql thread 线程缓慢诊断--复制延迟
可结合pt-query-digest工具使用 参考:https://www.percona.com/doc/percona-server/5.5/diagnostics/slow_extended_55.html https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html#sysvar_log原创 2016-08-13 14:57:43 · 818 阅读 · 0 评论 -
5.5以上版本查询锁信息
selectr.trx_id waiting_trx_id,r.trx_mysql_thread_idwaiting_thread,r.trx_query waiting_query,lr.lock_modewaiting_lock_mode,b.trx_id running_trx_id,b.trx_mysql_thread_idrunning_thread,b.trx_query ru原创 2016-08-10 14:20:38 · 326 阅读 · 0 评论 -
Mysql 主从切换添加字段情景以及注意事项
场景 当所添加字段的表数据量较大,而且所操作的表上面还有触发器, ,直接操作DDL延迟时间长(五小时左右),而pt-online-schema-change工具又不能使用,pt-online-schema-change限制,所操作的表不能建立触发器。测试如下创建test_ddl表注意事项: 1 mysql日志格式row 所添加字段必须位于所有字段之后,所添加的字段不能被操作,操原创 2016-04-07 10:50:09 · 1909 阅读 · 0 评论 -
5.7 mysqldump 问题
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs原创 2016-03-23 10:48:27 · 1186 阅读 · 0 评论 -
遇到诡异的问题 stop slave 无法停止
[root@localhost test2]# mysqlbinlog -v -v -j 196484929 mysql-bin.000005 |less# at 196484929#130816 12:51:48 server id 2 end_log_pos 196484998 Query thread_id=14400043 exec_time=2 error_code=0SET TIMESTAMP=1376628708/*!*/;SET @@sessio原创 2013-08-18 11:29:22 · 4986 阅读 · 0 评论 -
1548-Cannot load from mysql.proc. The table is probably corrupted
同事发邮件说navicat查询数据库,报错:1548-Cannot load from mysql.proc. The table is probably corrupted 同事查了查资料,问我数据库是否升级,刚接手不久,不知道在我之前是否升过级,那就mysql_upgrade -uroot -p 修复升级[root@db2343 ~]# mysql_upgrade原创 2013-05-30 17:02:29 · 5175 阅读 · 0 评论 -
mysql 5.5 中mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'root'@'localhost' fo
在mysql5.5中,增加了performance_schema,当我们进行mysqldump的时候,会报如下错误信息:mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 'root'@'localhost' for table 'cond_instances' when using LOCK TABL原创 2013-05-30 20:09:41 · 4454 阅读 · 0 评论 -
linux enterprise 5下安装mysql 5.6
mysql从5.5之后安装开始用cmake安装,cmake是安装mysql5.5之后版本必不可少的工具。安装cmake如下,从cmake官网下载源码安装包 [root@localhost ~]# wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz [root@localhost ~]# tar zxvf cmake原创 2013-05-17 15:47:02 · 3325 阅读 · 0 评论 -
centos 5.9 安装mysql 5.5.31
在linux下安装安装mysql,会出现各种各样的依赖关系,在centos下安装mysql出现各种依赖关系[root@localhost]# tar xzvf cmake-2.8.4.tar.gz [root@localhost src]# cd cmake-2.8.4 [root@localhost cmake-2.8.4]# ./configure Error when bo原创 2013-05-17 15:39:14 · 1621 阅读 · 0 评论 -
mysqlshow 使用方法
mysqlshow客户可用来很快地查找存在哪些数据库,数据库中的表,表中的列或索引请注意,在MySQL的新版本中,你只能看到有部分权限的那些数据库、表或者列。使用如下格式 mysqlshow[选项] [db_name [tbl_name [col_name]]] 1.显示服务器上的所有数据库./mysqlshow -uroot -p2.显示数据库databa原创 2013-05-02 15:08:14 · 919 阅读 · 0 评论 -
关于mysql的Unknown table engine ‘InnoDB’与安装 mysql innodb 插件
在创建测试分页表时,出现warnings,奇怪创建表怎么还出现warnings信息呢mysql> create table test_fenye (uid bigint not null auto_increment, username varchar(30), primary key(uid) ) engine=innodb default charset=utf8;Query OK原创 2013-04-17 17:46:15 · 7344 阅读 · 1 评论 -
mysql 如何查看哪些表数据量比较大
数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询这些信息了。 在mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得所需要的表相关信息。 mysq原创 2012-07-31 11:12:25 · 5727 阅读 · 1 评论 -
mysql 如何打开和关闭表
MySQL 如何统计打开的表数量 执行命令 mysqladmin status 时,可以看到类似如下结果: Uptime: 426 Running threads: 1 Questions: 11082 Reloads: 1 Open tables: 12 如果只有6个数据表时,Open tables 的值确实12,这可能会转载 2012-08-14 10:38:52 · 10463 阅读 · 0 评论 -
mysql hex与unhex 函数的妙用
hex:可以用HEX()函数将一个字符串或数字转换为十六进制格式的字符串 unhex:把十六进制格式的字符串转化为原来的格式 如: mysql> select hex('abc');+------------+| hex('abc') |+------------+| 616263 |+------------+1 row in set (0.01原创 2012-07-26 12:28:18 · 20768 阅读 · 0 评论 -
mysql 数据库管理中的安全问题(一)
从网上看到一些帖子,面试者被问到如何认识mysql数据库的安全问题。很多安全问题都是由于对账号管理不妥当造成的。 1 删除匿名账号 在mysql版本中,安装完mysql后,默认会有一个匿名账号,只有执行mysql命令就能登录上去。如下:直接执行mysql 登录上数据库,进入test数据库下 [xkyx80@localhost ~]$ mysql原创 2012-07-12 17:30:47 · 1117 阅读 · 0 评论 -
mysql bug : mysqld got signal 11
开发告知mysq测试环境l宕机,查看错误日志,发现如下错误:130605 16:43:28 - mysqld got signal 11 ;This could be because you hit a bug. It is also possible that this binaryor one of the libraries it was linked against i原创 2013-06-06 11:35:59 · 5174 阅读 · 0 评论 -
mysql 索引长度tips innodb和myisam引擎
由于开发人员对索引认识不深或忽略,还有版本不同等问题,在生产环境中创建表失败,引发了一些问题。归纳了一下 测试环境 mysql> select version();+------------+| version() |+------------+| 5.5.31-log | +------------+1 row in set (0.01 s原创 2013-06-06 18:42:17 · 4074 阅读 · 0 评论 -
mysql 5.6 新特性收录
同事总结的mysql 5.6各个新特性,以及对应的官方说明文档,很详细,已做备录 主要四大块 innodb、复制、优化、nosql支持,在这四大方面有了很的改进,对应官方相关文档讲的很详细。一. server参数默认值设置的变化:http://dev.mysql.com/doc/refman/5.6/en/server-default-changes.html二.原创 2013-05-17 16:00:33 · 1845 阅读 · 0 评论