03 2011 档案
摘要:这是我使用过的工具(phpmyadmin,sqlyog...),使用最方便最顺手的一个工具,支持同时管理好几个数据库, HeidiSQL官方 http://www.heidisql.com/ HeidiSQL下载 http://www.heidisql.com/download.ph
阅读全文
摘要:at是linux下部署一次性计划任务的首选,使用选项:Usage: at [-V] [-q x] [-f file] [-m] time at [-V] [-q x] [-f file] [-m] -t [[CC]YY]MMDDhhmm at -c job [job...] (atq | at -l) [-V] [-q x] (atrm | at -d | at -r) [-V] [-q x] job ... batch [-V] [-f file] [-m]我比较常用的还是:at -f name.sh time 有一点值的注意的是,举个例子来说,目前我想执行at -f a.sh 12:00
阅读全文
摘要:mk-table-sync是maatkit里的一个同步主从数据库的利器,执行同步过程中,会同步DELETE,REPLACE,INSERT,UPDATE语句,mk-table-sync把包含前面几个的语句都执行一遍,举个例子来说,主从库上都有:a表,主库上的数据如下:id name1 aa2 bb3 cc4 dd5 ee6 ff从库上的数据如下:id name1 aa2 bb3 hh4 gg5 ee那么mk-table-sync会执行3条语句,同步"6 ff"添加到从库,更新"3 cc","4 gg"到从库,一共3条语句,而不是我们
阅读全文
摘要:有一些应用程序需要存放一些临时数据,这时候临时表似乎是一个很好的选择,但是内存表在主从数据库上表现却不那么好。 原因很简单,无论是基于STATEMENT还是基于ROW复制,都要在二进制日志中包含改变的数据。这就要求在主从机上数据必须一致。当重启从库的时候,你就会丢失内存表的数据,复制中断。 我们该怎么办呢?1.使用Innodb表代替innodb表非常快,能满足我们对性能的需求。2.在复制中忽略内存表如果不是非常有必要的话,忽略复制内存表,使用这个选项replicate-ignore-table=db.memory_table。我们需要注意的是:STATEMENT复制,不要使用insert ..
阅读全文
摘要:“内存表”顾名思义创建在内存中的表,真是这样吗?其实不然,MySQL的内存表,表结构创建在磁盘上,数据存放在内存中,所以当MySQL启动着的时候,这个表是存在的,数据也是存在的,如果用户有查看这个表的权限,在所有会话里面,都可以访问这个内存表的数据;当MySQL重启后,数据消失,结构还存在。内存表的创建:CREATE TABLE test( id int(10), num int(10)) ENGINE=MEMORY DEFAULT CHARSET=utf8;查看是否创建成功:show tables;使用完内存表后,如果我们想释放掉占用掉的内存,可以有两种方法:-- 删除数据delete f.
阅读全文
摘要:在不知道mysqlcheck之前,移动了一台服务器上的数据库,到另一台服务器上,想看看哪个表被损坏了,不想在命令行一个一个执行,下面是我写的脚本#!/bin/bashpass="123456" #root's passworddata_path="/home/mysql" #mysql's datadircd $data_pathfor f1 in $(ls)do if [ -d $f1 ];then if [ "mysql" != "$f1" -a "test" != &quo
阅读全文
摘要:从昨天开始,我开始对MySQL进行监控,发现时不时的会出现感觉很奇怪,MySQL的配置文件里,配置禁止域名解析了--skip-name-resolve,详情查看mysql是怎样使用dns的,google一翻,有说这是MySQL的一个bug,但是我的数据库版本不在里面说的之列,这篇文章安定了我的心。“unauthenticated user”的意思是由一个客户端发起的连接,但是这个客户端用户还没有被认证。这种情况一般在系统负载比较高或者mysql比较繁忙的时候遇到。此外在show processlist里还有几个User用户,比较常见的就不说了1.system user它指的是没有客户端线程,由
阅读全文
摘要:1.单个key_buffer的大小不能超过4G,如果设置超过4G,就有可能遇到下面3个bug:http://bugs.mysql.com/bug.php?id=29446http://bugs.mysql.com/bug.php?id=29419http://bugs.mysql.com/bug.php?id=57312.建议key_buffer设置为物理内存的1/4(针对MyISAM引擎),甚至是物理内存的30%~40%,如果key_buffer_size设置太大,系统就会频繁的换页,降低系统性能。因为MySQL使用操作系统的缓存来缓存数据,所以我们得为系统留够足够的内存;在很多情况下数据要
阅读全文
摘要:当WEB服务器负载高的时候,经常会出现这种错误,原因:MySQL默认connect_timeout是5秒,超过了这个时间MySQL的server端就会返回“Bad handshake”。解决办法:1.大多数时候设置"set global connect_timeout=60"是可以解决问题的;我们可以通过执行“SHOW STATUS LIKE 'aborted%'”,可以观察到Variable_nameValue Aborted_clients6Aborted_connects15010觉得是否要增加connect_timeout的时间,"Abor
阅读全文
摘要:自从做dba以来,每次在生产环境做什么操作都是检查了再检查,害怕一时的疏忽,给网站造成影响,头一天晚上执行完总是第二天看到运行正常才把心放下。可是就在昨天,不知道怎么回事,在配置tmp_table_size = 128M的时候,居然在'128'和'M'多了一个空格,导致网站的所有数据库都启动失败,中断了6个小时都没发现。 记下,以留纪念,勉励自己以后要小心小心再小心,谨慎谨慎再谨慎。
阅读全文
摘要:转自老王的博客前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸。如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新MyISAM表,那么发生损坏的概率就比较大。今天我要说的是另一种情况:频繁的打开关闭MyISAM表文件造成MyISAM表损坏。什么时候会出现频繁的打开关闭MyISAM表文件的情况呢?先查看当前系统的table_cache设置,它的作用就是缓存表文件描述符,降低打开关闭表的频率,如果这个参数设置得过小,那么很快就会被占满,再有新请求过来的时候,就不得不关闭一些已打开的表以便为新请求腾出空间,从而
阅读全文
摘要:在我们的意识里,通常增大table_cache,尽量使打开的表句柄在缓存中,mysql能更快地响应操作,但是当我增大table_cache后,cpu增大了很多,查资料发现,table_cache并不是越大越好,因为mysql只有一个全局锁来控制打开和关闭表,也就是说无论有多少个线程在并行执行,只有一个线程可以打开或关闭表,这也就会出现很多死锁,别的线程等待那个全局锁,相应地增加了cpu的消耗,延长了其他链接线程执行sql的时间,降低系统性能,所以在保证table_cache够用的情况下,尽量保持table_cache足够小,但是这个度怎么把握,我也没有一定的尺度,还得再学习。参考资料:关于t.
阅读全文
摘要:磁盘扇区默认是512Byte,想要验证的话,在命令行下执行:fdisk -l
阅读全文

浙公网安备 33010602011771号