免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: baiyaj
打印 上一主题 下一主题

【讨论中】mysql启动脚本mysqld_safe的疑惑 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-12-04 11:07 |只看该作者
回复 9# baiyaj

嗯,不要激动。

你是说读入到$PLUGIN_DIR,而拼接用的是$plugin_dir,并且从$PLUGIN_DIR设置$plugin_dir是在读入之前?
越来越复杂。

既然使用mysqld直接获取没有问题,说明问题还在mysqld_safe上。

另外我看你的my_print_defaults mysqld server输出中没有获取到配置文件中的plugin_dir,这是怎么回事?
   

论坛徽章:
0
12 [报告]
发表于 2012-12-04 11:25 |只看该作者
回复 11# lk-2010


    那是因为在配置文件里把plugin_dir注掉了,加上后执行:
[mysql@localhost bin]$ my_print_defaults --loose-verbose mysqld server
--user=mysql
--character-set-server=utf8
--basedir=/web/mysql/mysqlc/
--datadir=/web/mysql/mysqld_data/
--plugin_dir=/web/mysql/mysqlc/lib/plugin
--pid-file=mysqld.pid
--socket=/web/mysql/mysqld_data/mysql.sock
--port=3306
--skip_name_resolve
--ndb-cluster-connection-pool=2
--ndbcluster=1
--ndb-connectstring=192.168.21.51:1186
--ndb-force-send=1
--ndb-use-exact-count=0
--ndb-extra-logging=1
--ndb-batch-size=24M
--ndb-autoincrement-prefetch-sz=1024
--engine-condition-pushdown=1
--default-storage-engine=ndbcluster
--server-id=1
--log-error=error.log
--key_buffer_size=256M
--max_allowed_packet=16M
--sort_buffer_size=512K
--read_buffer_size=256K
--read_rnd_buffer_size=512K
--myisam_sort_buffer_size=8M
--memlock=0
--skip_name_resolve
--sysdate_is_now=1
--max-connections=500
--thread-cache-size=128
--query_cache_type=0
--query_cache_size=0
--table_open_cache=1024
--lower-case-table-names=0
这里读的应该只是配置文件,而不是实际运行时的状态

论坛徽章:
0
13 [报告]
发表于 2012-12-04 11:50 |只看该作者
回复 12# baiyaj

注释掉了,那就没问题。
另外LZ的mysqld_safe是系统自带的吗?要么把代码贴出来,我怀疑是mysqld_safe读入、赋值、缺省值、或者先后处理的问题。

我的没有设置plugin_dir相关的:
root@lost:/tmp# grep -i plugin /usr/bin/mysqld_safe
root@lost:/tmp#
   

论坛徽章:
0
14 [报告]
发表于 2012-12-04 11:56 |只看该作者
回复 13# lk-2010


    mysqld_safe是系统自带的,代码太多,本来不想贴的,上传个附件吧,文件来自mysql-cluster-gpl-7.2.9-linux2.6-x86_64.tar.gz
mysqld_safe.rar (7.75 KB, 下载次数: 10)

非常感谢

论坛徽章:
0
15 [报告]
发表于 2012-12-04 14:20 |只看该作者
前后仔细查看了几遍,有几个疑问:
1. mysqld_safe设置plugin参数时顺序是这样的:设置plugin_dir->读入到PLUGIN_DIR->使用plugin_dir
因为在设置plugin_dir时,PLUGIN_DIR为空, 因此得到的plugin_dir必为缺省值。
这样可以看到从配置文件和/或命令行读入的值没有用上。所以造成了传递给mysqld的不是配置文件中的值,而是缺省值。

2. 对照MY_BASEDIR_VERSION,DATADIR的使用方式(与PLUGIN_DIR一样都是大写变量名),前两种都是设置、读入、使用的一致,因此没有问题。
而PLUGIN_DIR却很奇怪,不知道脚本这样用有什么特殊的用意?

总之还是觉得脚本使用变量的顺序很奇怪,不知是哪里漏掉没注意到?

论坛徽章:
0
16 [报告]
发表于 2012-12-04 14:48 |只看该作者
回复 15# lk-2010


   感谢楼上的辛勤劳动对于mysqld_safe使用PLUGIN_DIR读取变量,最后又使用plugin_dir拼接命令,本来没有问题,问题出在没有将非空的PLUGIN_DIR赋给plugin_dir,最后使得plugin_dir没有得到预期的值,疑问就在这里,不知道是另有玄机,还是确实是脚本的bug

论坛徽章:
0
17 [报告]
发表于 2012-12-06 15:31 |只看该作者
临时解决的办法,在mysqld_safe脚本的变量声明部分,加上一句:
PLUGIN_DIR=/web/mysql/mysqlc/lib/plugin
目前,先这样测试,起码服务的参数都是正确的了

论坛徽章:
0
18 [报告]
发表于 2012-12-11 19:08 |只看该作者
这种问题,先用strace 跟踪一下,就知道在那出了问题啊,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP