我们即将在我们的生产数据库上设置MySQL主从复制。 我们打算从奴隶运行备份(当我们的主人每天延迟15分钟,同时备份运行,使我们的网站离线)。
我如何估计bin日志会增长多快? 还需要其他什么信息?
我们的MySQL主数据库服务器目前在RAID 10中有4个15k SAS磁盘。
我应该考虑添加一个单独的RAID 1(2个磁盘)arrays来容纳bin日志吗? 我担心写入bin日志会减慢读写主mysql数据存储。
有两种方法可以解决这个问题
假设二进制日志定义如下:
[mysqld] log-bin=mysql-bin
进入操作系统,执行此操作:
cd /var/lib/mysql ls -lt --time=access --time-style=+"%s" mysql-bin.* | awk '{print $7,$6}'
这将向您显示二进制日志及其各自的UNIX时间戳
简单地从前一个减去一个时间戳
ls -l mysql-bin.0* -rw-rw---- 1 mysql mysql 1073754057 Mar 25 18:27 mysql-bin.000630 -rw-rw---- 1 mysql mysql 1074289363 Mar 25 22:16 mysql-bin.000631 -rw-rw---- 1 mysql mysql 1073746572 Mar 26 07:20 mysql-bin.000632 -rw-rw---- 1 mysql mysql 747478886 Mar 26 11:31 mysql-bin.000633 ls -l --time=access --time-style=+"%s" mysql-bin.* | awk '{print $7,$6}' mysql-bin.000630 1364250429 mysql-bin.000631 1364264182 mysql-bin.000632 1364296842 mysql-bin.000633 1364311833
你能计算什么?
你将不得不为每个二进制日志编写脚本。
如果你只想检查二进制日志,你可以这样做:
mysqlbinlog mysql-bin.000632 > binlogsql.txt T1=`head -20 binlogsql.txt | grep "SET TIMESTAMP" | head -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'` T2=`tail -20 binlogsql.txt | grep "SET TIMESTAMP" | tail -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'` (( TT = T2 - T1 )) echo ${TT}
看看它做了什么:
[root@*** mysql]# mysqlbinlog mysql-bin.000632 > binlogsql.txt [root@*** mysql]# T1=`head -20 binlogsql.txt | grep "SET TIMESTAMP" | head -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'` [root@*** mysql]# T2=`tail -20 binlogsql.txt | grep "SET TIMESTAMP" | tail -1 | sed 's/=/ /' | sed 's/\// /' | awk '{print $3}'` [root@*** mysql]# (( TT = T2 - T1 )) [root@*** mysql]# echo ${TT} 32660 [root@*** mysql]#
你可以计算每个二进制日志生成的秒数,并从那里进行你的数字处理
试一试 !!!