Chinaunix首页 | 论坛 | 博客
  • 博客访问: 489881
  • 博文数量: 99
  • 博客积分: 3621
  • 博客等级: 中校
  • 技术积分: 1089
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 16:29
文章存档

2012年(21)

2011年(28)

2010年(50)

分类: Mysql/postgreSQL

2011-05-20 10:57:54

昨天才第一次知道还有tuning-primer.sh这么个参数调优的脚本,然后和小周进行了分享,早上收到邮件他说这个脚本的数据不是很准确。于是就查看了它的代码,解析如下:

1:运行这个脚本可以看到花花绿绿的文字颜色的,就是在这里定义的
  1. export black='\033[0m'
  2. export boldblack='\033[1;0m'
  3. export red='\033[31m'
  4. 。。。。。。。。
2:打印报告信息的头。
  1. print_banner ()
3:检查socket,如果第一次配置后保存到了~/my.cnf,那么就直接去~/my.cnf取,要么就用/var/lib/mysql/mysql.sock 或者/var/run/mysqld/mysqld.sock或者/tmp/mysql.sock。如果都没有,那就报个错出来
  1. check_for_socket ()
4:检查用户密码
  1. check_for_plesk_passwords ()
5:用户登录
  1. check_mysql_login ()

6:中间还有几个函数,不说了,下面看下2个关键函数
  1. #########################################################################
  2. # #
  3. # Function to pull MySQL status variable #
  4. # #
  5. # Call using : #
  6. # mysql_status \'Mysql_status_variable\' bash_dest_variable #
  7. # #
  8. #########################################################################

  9. mysql_status () {
  10. local status=$($mysql -Bse "show /*!50000 global */ status like $1" | awk '{ print $2 }')
  11. export "$2"=$status
  12. }

  13. #########################################################################
  14. # #
  15. # Function to pull MySQL server runtime variable #
  16. # #
  17. # Call using : #
  18. # mysql_variable \'Mysql_server_variable\' bash_dest_variable #
  19. # - OR - #
  20. # mysql_variableTSV \'Mysql_server_variable\' bash_dest_variable #
  21. # #
  22. #########################################################################

  23. mysql_variable () {
  24. local variable=$($mysql -Bse "show /*!50000 global */ variables like $1" | awk '{ print $2 }')
  25. export "$2"=$variable
  26. }
mysql_status:获取全局状态的函数。mysql_variable:获取全局变量的函数。

7:获取到的状态和参数值,应用在每个参数分析里面,下面举个完整的例子
  1. check_used_connections () {

  2. ## -- Used Connections -- ##
 
## --获取参数值和状态值
  1. mysql_variable \'max_connections\' max_connections
  2. mysql_status \'Max_used_connections\' max_used_connections
  3. mysql_status \'Threads_connected\' threads_connected

## --计算使用率了
  1. connections_ratio=$(($max_used_connections*100/$max_connections))

## --打印当前参数设置的值和状态值
  1. cecho "MAX CONNECTIONS" boldblue
  2. cecho "Current max_connections = $max_connections"
  3. cecho "Current threads_connected = $threads_connected"
  4. cecho "Historic max_used_connections = $max_used_connections"
  5. cechon "The number of used connections is "

## 在这里进行分析了,算法就就在这里,我们也可以自己改,什么值显示什么颜色啥的。
  1. if [ $connections_ratio -ge 85 ] ; then
  2. txt_color=red
  3. error=1
  4. elif [ $connections_ratio -le 10 ] ; then
  5. txt_color=red
  6. error=2
  7. else
  8. txt_color=green
  9. error=0
  10. fi

## --打印分析结果了
  1. # cechon "$max_used_connections " $txt_color
  2. # cechon "which is "
  3. cechon "$connections_ratio% " $txt_color
  4. cecho "of the configured maximum."

##  打印建议信息
  1. if [ $error -eq 1 ] ; then
  2. cecho "You should raise max_connections" $txt_color
  3. elif [ $error -eq 2 ] ; then
  4. cecho "You are using less than 10% of your configured max_connections." $txt_color
  5. cecho "Lowering max_connections could help to avoid an over-allocation of memory" $txt_color
  6. cecho "See \"MEMORY USAGE\" section to make sure you are not over-allocating" $txt_color
  7. else
  8. cecho "Your max_connections variable seems to be fine." $txt_color
  9. fi
  10. unset txt_color
  11. }
check_used_connections只是个典型的例子,其他参数的处理方式都一样。

从上面的分析可以看出来,这个脚本的计算是准确的。它给出的建议信息,应该也是比较符合大众的,如果有特性要求,可以修改对应的算法。

有这么个东西就不需要一个个参数去计算了。VERY GOOD。


阅读(904) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

9094133352011-05-25 16:53:02

注意到tuning-primer用户登录的时候,密码是明文显示的,留下了安全隐患。
修改登录部分代码,关闭了密码输入时的回显,如下:

read -p "Do you have your login handy ? [y/N] : " REPLY
        case $REPLY in
                yes | y | Y | YES)
                answer1='yes'
                read -p "User: " user