mysqld_multi stop failed + fabricのsudoユーザーでのコマンド回避策

mysqld_multi stopが出来ない。。。
設定の問題の可能性はあるけど。(設定の問題でした。)
start reportは正常でstopだけ出来ないというのは・・・

http://serverfault.com/questions/400182/mysqld-multi-stop-doesnt-seem-to-work

同様の人がいるようなので諦めてmysqladminで

mysqladmin -h 127.0.0.1 -P 29016 -uroot -p shutdown

と思ったのですが、/etc/my.cnfや~/.my.cnfのmysqld_multiの設定 user passwordのところがおかしかっただけのようで

mysqld_multi –defaults-file=/home/sample/app/conf/mysql/wordpress_master.cnf –log=/home/sample/log/my/mysqld-sample-master.log stop

で start stop report問題なく出来ました。

fabricから他ユーザーで実行したときの挙動がいまいちだったので。いろいろ試した。

mysqlはanyusernameというユーザー名の人が実行している場合。

fab -H localhost -p pass stop_mysql

local(‘sudo -u anyusername mysqld_multi –defaults-file=%s –verbose –user=root –log=%s %s’ % ( mycnf, errorlog, cmd ))

とりあえず、これでstopまで問題なく行けたが。

with settings(sudo_user=”anyusername”):
sudo(‘mysqld_multi –defaults-file=%s –verbose –user=root –log=%s %s’ % ( mycnf, errorlog, cmd ))

sudo( … , user=2222 ) #ユーザーID指定
run(‘sudo -u anyusername …
の3つは失敗する

run(‘mysqladmin -u root -h 127.0.0.1 -P 29016 shutdown’)
は余裕で成功。mysqld_multiの中でmysqladmin呼んでるだけだろうけど、このやり方で良いのか謎。

# fabricでlocalでしか成功しないので。

@hosts(‘localhost’)
def local_control_mysql(cmd,mycnf,errorlog):
 local(‘id’)
 local(‘mysqld_multi –defaults-file=%s –verbose –user=root –log=%s %s’ % ( mycnf, errorlog, cmd ))

def control_mysql( cmd=’start’, type=’default’, dbrole=’slave’ ):
 mycnf = ”
 errorlog = ”
 with settings(sudo_user=env.config_app_name):
   with cd( env.config_app_dirs['app'] ):
     sudo(‘fab local_control_mysql:cmd=%s,mycnf=”%s”,errorlog=”%s”‘ % ( cmd, mycnf, errorlog ))

sudo_user=ユーザー名(上の例で言うとanyusername)でwithしそのまま localhostのfabコマンドを実行する。

とりあえずこれで完成。

This entry was posted on 日曜日, 12月 9th, 2012 at 3:18 AM and is filed under mysql. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。