首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道5.0.X中当前的日志序列号

问如何知道5.0.X中当前的日志序列号
EN

Database Administration用户
提问于 2012-11-11 09:51:03
回答 1查看 6.8K关注 0票数 2

我想测试mysql上iblog文件的最佳值,即5.0.77,我在mysqlperformance中找到了以下过程:http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/

代码语言:javascript
复制
mysql> pager grep sequence
PAGER set to 'grep sequence'

mysql> show engine innodb status\G select sleep(60); show engine innodb status\G
Log sequence number 84 3836410803
1 row in set (0.06 sec)
1 row in set (1 min 0.00 sec)
Log sequence number 84 3838334638
1 row in set (0.05 sec)

mysql> select (3838334638 - 3836410803) / 1024 / 1024 as MB_per_min;
+------------+
| MB_per_min |
+------------+
| 1.83471203 | 
+------------+

但是,在MySQL5.0.x上,我看不到输出“”下的日志序列号。请给我一个知道mysql 5.0.x中当前日志序列号的方法好吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-11-16 19:10:46

我其实是在2012年8月27日写过这篇文章:使用48 on的服务器上30 on表的适当调优。以下是我过去答案的摘录(在题为Log File Size的一节):

节选

5MB是诺姆b的默认大小。Percona的mysqperformanceblog.com给出了两篇关于为特定MySQL实例计算适当大小的优秀文章:

基本上,博客建议测量一个小时内写入InnoDB日志文件的字节数。这就是我想弄清楚的

代码语言:javascript
复制
SET @TimeInterval = 3600;
SELECT variable_value INTO @num1 FROM information_schema.global_status
WHERE variable_name = 'Innodb_os_log_written';
SELECT SLEEP(@TimeInterval);
SELECT variable_value INTO @num2 FROM information_schema.global_status
WHERE variable_name = 'Innodb_os_log_written';
SET @ByteWrittenToLog = @num2 - @num1;
SET @KB_WL_HR = @ByteWrittenToLog / POWER(1024,1) * 3600 / @TimeInterval;
SET @MB_WL_HR = @ByteWrittenToLog / POWER(1024,2) * 3600 / @TimeInterval;
SET @GB_WL_HR = @ByteWrittenToLog / POWER(1024,3) * 3600 / @TimeInterval;
SELECT @KB_WL_HR,@MB_WL_HR,@GB_WL_HR;

节选

结束

从这里你要去哪里?

在一周内每小时运行这些命令。当您确定@MB_WL_HR的最高数字时,取其中的一半并调整innodb_log_file_size的大小:参见my 如何安全地更改MySQL innodb变量‘innodb_日志_文件_尺码?

结论

由于您可以以这种方式计算出适当的InnoDB日志文件大小,所以不需要为任何东西汇集show engine innodb status\G,特别是因为您说在MySQL 5.0中它不可用。

请记住,我的答案适用于MySQL 5.1/5.5。那么,您是如何在MySQL 5.0中这样做的呢?

这是件好事,状态变量Innodb_操作系统_日志_书面存在于MySQL 5.0中。

回顾过去,这是你最初的问题:

代码语言:javascript
复制
mysql> pager grep sequence
PAGER set to 'grep sequence'

mysql> show engine innodb status\G select sleep(60); show engine innodb status\G
Log sequence number 84 3836410803
1 row in set (0.06 sec)
1 row in set (1 min 0.00 sec)
Log sequence number 84 3838334638
1 row in set (0.05 sec)

mysql> select (3838334638 - 3836410803) / 1024 / 1024 as MB_per_min;
+------------+
| MB_per_min |
+------------+
| 1.83471203 | 
+------------+

在MySQL 5.0中,您必须这样做:

代码语言:javascript
复制
mysql> show global status like 'Innodb_os_log_written'; select sleep(60); show global status like 'Innodb_os_log_written';

然后像你以前做的那样减法和乘:

代码语言:javascript
复制
mysql> show global status like 'Innodb_os_log_written'; select sleep(60); show global status like 'Innodb_os_log_written';
+-----------------------+--------------+
| Variable_name         | Value        |
+-----------------------+--------------+
| Innodb_os_log_written | 500034464256 |
+-----------------------+--------------+
1 row in set (0.01 sec)

+-----------+
| sleep(60) |
+-----------+
|         0 |
+-----------+
1 row in set (1 min 0.01 sec)

+-----------------------+--------------+
| Variable_name         | Value        |
+-----------------------+--------------+
| Innodb_os_log_written | 500047017984 |
+-----------------------+--------------+
1 row in set (0.01 sec)

mysql> select (500047017984 - 500034464256) / 1024 / 1024 as MB_per_min;
+-------------+
| MB_per_min  |
+-------------+
| 11.97216797 |
+-------------+
1 row in set (0.00 sec)

mysql>

试试看!!

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/28507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档