使用SHOW binlog events查看binlog内容
有时程序员需要跟踪sql来查找问题时,我经常会使用mysqlbinlog命令行查看binlog,觉得比较麻烦,今天突然发现原来mysql有个命令可以直接查看。SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] 用于在二进制日志中显示事件。如果您不指定'log_name',则显示第一个二进制日志。 LIMIT子句和SELECT语句具有相同的语法。[@more@]
MySQL从库切换成主库后的relay-bin问题
有一个数据库,之前是从库,后来切换成主库了,my.cnf中的关于主库的配置已经注释掉,show slave status结果是也空的,但一直发现每天用mysqldump备份(带--flush-logs)之后会产生一个relay-bin.xxxxxx,删除了relay-bin.*之后,还是会继续产生,怎么回事呢?还是求助google吧,终于找到原因。http://bugs.mysql.com/bug.php?id=6178原来从库切换主库之后,需要执行一下RESET SLAVE命令,不然主库配置还是会缓存在master.info文件中,执行RESET SLAVE后,会将master.info和relay-log.info删除。[@more@]
Perl CPAN安装报错CPAN::Modulelist的解决办法
今天用CPAN安装Term::ReadLine,报了个这样的错误Going to read /root/.cpan/sources/modules/03modlist.data.gzCan't locate object method "data" via package "CPAN::Modulelist" (perhaps you forgot to load "CPAN::Modulelist"?) at (eval 31) line 1.at /usr/lib/perl5/5.8.5/CPAN.pm line 3406CPAN::Index::rd_modlist('CPAN::Index', '/root/.cpan/sources/modules/03modlist.data.gz') called at /usr/lib/perl5/5.8.5/CPAN.pm line 3129CPAN::Index::reload('CPAN::Index') called at /usr/lib/
计算mysql buffer的命中率及使用率
MyISAM Key buffer命中率:100 - ( (Key_reads * 100) / Key_read_requests )MyISAM Key buffer的使用率:100 - ( (Key_blocks_unused * key_cache_block_size) * 100 / key_buffer_size ) InnoDB Buffer Pool 的命中率(Innodb_buffer_pool_read_requests - Innodb_buffer_pool_reads) / Innodb_buffer_pool_read_requests * 100%[@more@]
MySQL复制的奇怪问题
最近机房那边中毒,网络经常不正常,经常导致MySQL的复制中断,前几次都是报Got fatal error 1236: 'error reading log entry' from master when reading data from binary log的错误,今天却出现一个奇怪的现象,从库上show slave status一切正常,主库上却没有了slave i/o的连接,从库日志中也没发现异常。因此我crontab中定期检查slave status的任务也检查不到错误了,没办法stop slave;start slave;复制恢复正常。。。。[@more@]
(转)从对数据访问扭曲的适应性评价PostgreSQL与InnoDB
原文作者:风轻扬出处:http://wangyuanzju.blog.163.com/blog/static/1302920070245344752/前两篇文章中已经通过介绍Falcon的架构和对面向Web 2.0的存储引擎的讨论引出数据访问扭曲这一话题,对于我接触更多,也是最为流行的两大开源DBMS:PostgreSQL和MySQL,自然忍不住按它 来比较一把了。由于这一问题只与DBMS的存储系统有关,因此这里实际上比较的是PostgreSQL与MySQL的事务型存储引擎InnoDB。PostgreSQL与InnoDB都采用多版本并发控制技术,但两者在存储的实现机制上仍然有以下两个重大差别:PostgreSQL用堆存储记录,而InnoDB用按
学习笔记:InnoDB表和索引结构(二)
4、 自适应的哈希索引 如果一个表几乎完全缓存在主内存中,在其上执行查询最快的方法就是使用哈希索引。InnoDB有一个自动机制,它监视对为一个表定义的索引的索引搜索。如果InnoDB注意到查询会从建立一个哈希索引中获益,它会自动地这么做。 注意,哈希索引总是基于表上已存在的B树索引来建立。根据InnoDB对B树索引观察的搜索方式,InnoDB会在为该B树定义的任何长度的键的一个前缀上建立哈希索引。 哈希索引可以是部分的:它不要求整个B树索引被缓存在缓冲池。InnoDB根据需要对被经常访问的索引的那些页面建立哈希索引。 在某种
学习笔记:InnoDB表和索引结构(一)
MySQL把表的数据词典信息以.frm文件的形式存在数据库目录里,所有MySQL存储引擎都是这样的。但是每个InnoDB表在表空间内的InnoDB内部数据词典里也有它自己的条目。当MySQL移除表或数据库,它不得不删除.frm文件和InnoDB数据词典内的相应条目。这就是为什么你不能在数据库之间简单地移动.frm文件来移动InnoDB表。 [@more@]1、聚集索引和第二索引 每个InnoDB有一个叫聚集索引(clustered index)的特殊索引,行的数据被存于其中。如果你的表定义了主键,主键的索引就是聚集索引。 如果你的表没有主键,MySQL就选择第一个不可为空的唯
学习笔记:InnoDB存储结构及多版本实现
因为InnoDB是多版本化的数据库存储引擎, 它必须在表空间中保存关于旧版本数据行的信息。这个信息被存在名为rollback segment(类似于Oracle中的回滚段)的数据结构中。[@more@]在内部,InnoDB给数据库中的每一行添加三个域。一个是6字节的DB_TRX_ID域,用来说明插入或更新该行的最后一个事务的事务识别符。同时,删除操作也被内部处理为更新操作,其中行中一个特殊的位被设置用来标注该行已删除。每一行也包含一个称为回滚指针的7字节DB_ROLL_PTR域。回滚指针指向一个写在回滚段中的撤销日志记录。如果该行被更新,撤销日志记录包含重
sqlplus登陆环境设置(glogin.sql)
$ vi $ORACLE_HOME/sqlplus/admin/glogin.sql (登陆sqlplus后会自动执行) 或 $ vi ~/login.sql (登陆sqlplus后会自动执行) 或 $ vi ~/.login.sql (登陆sqlplus后得手工执行) 增加以下内容,sqlplus登陆时会自动读取 [@more@]----------------------------------------------------------------------------------- --定义缓冲编辑器为vi define_editor=vi --使DBMS_OUTPUT有效,并设置成最大buffer,并防止"吃掉"最前面的空格 set serveroutput on size 1000000 format wrapped --设置一行可以
Oracle监听器的静态注册与动态注册,以及DB_DOMAIN问题
从Oracle8i开始,Oracle可以不需要在监听器SID_LIST中配置需要监听的Oracle实例,PMON会自动动态注册到监听器,当然,这是有条件限制的,如:监听器使用缺省名称或在local_listener、remote_listener中配置,端口1521,TCP协议。另外,如想使用动态注册,请注意检查/etc/hosts中的机器名及IP是否正确。如果你设置了DB_DOMAIN,需要注意以下几点:[@more@]1、静态注册时,GLOBAL_NAME应该是SERVICE_NAMES+DB_DOMAIN。如下 (SID_DESC = (GLOBAL_NAME = oradb.com) (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(转)Oracle DBA在新环境下必须了解的事情
转载自IT168 [ http://www.it168.com/ ] 本文链接:http://tech.it168.com/a2009/0525/576/000000576908.shtml 作者:IT168 Toms_zhang面对一个全新的环境,作为一个Oracle DBA,首先应该了解什么?[@more@] 在这里,不谈那些大的方面,比如了解整个IT环境整体情况,假设你已经知道了这些,接下来需要面对的就是这些一个个活生生的database了.这里总结了一些一般的思路来面对一个全先的database,从而快速了解你面对的环境概要. 这也不是教科书,只是一些心得和体会,对于这种问题,每个人的认识的角度是不一样的.欢迎大家继续补充完善.
使用sysbench做oltp测试
sysbench是一款开源的性能测试工具,可以对多种数据库的性能进行测试,包括用来对MySQL,ORACLE,POSTGRESQL进行性能测试。 sysbench按照指定的数量开启线程,每个线程与MySQL建立一个连接,每个线程不停地进行事务操作,打开事务,然后进行一些查询、更新、插入操作,提交事务,再开始新的事务;所有的SQL只访问一个表sbtest,是由sysbench的prepare命令建好的。其中的记录数,也是在prepare时指定好并创建的。测试结束,会有一个统计结果,包括例如每秒事务数、平均响应时间等等。下面是一个sysbench调用调用存储过程的例子:[@more@]sys
关于MySQL游标的嵌套使用
前几天群里有人问MySQL的游标能不能嵌套使用,想当然地以为不能,后来试了下,居然可以,唉,不能随便想当然啊。例子如下:[@more@]CREATE PROCEDURE curdemo() NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ''BEGIN declare done1,done2 int default 0; declare name1,name2 varchar(20); declare id1,id2 int; declare cur1 cursor for select id,name from test1; declare continue handler for not found set done1 = 1; open cur1; repeat fetch cur1 into id1, name1; if not done1 then
MySQL多主一从的实现
大型的系统,数据库往往会根据业务逻辑分隔放在多台机上,但统计的时候又经常需要互相关联,MySQL理论上是不支持多个主库同步到一个从库上的,那么如果实现多主一从以方便统计查询呢?我试着利用MyISAM的简单文件存储的特点来实现,过程如下:[@more@] 1设置主库,启用Binlog,建议复制帐号。具体过程跟一主多从设置一样。 2设置从库,在从库使用mysqld_multi启动多库实例,每个实例对应一个主库,并分别设置好主从复制。需要注意的是,1、从库只安装MyISAM引擎,这样不管主库是用什么引擎,从库都使用MyISAM。2、从库的几个实例的数据目