Hatena::Groupasakura

浅倉卓司@blog風味? このページをアンテナに追加 RSSフィード

Error : RSSが取得できませんでした。

2012-05-17(Thu)

mysql-master-haでのREPLICATION SLAVE priv.チェックの修正

|  mysql-master-haでのREPLICATION SLAVE priv.チェックの修正 - 浅倉卓司@blog風味? を含むブックマーク  mysql-master-haでのREPLICATION SLAVE priv.チェックの修正 - 浅倉卓司@blog風味? のブックマークコメント

 mysql-master-haをちょっと触っていたところ、MHAの管理ユーザーがmysql.userテーブルをSELECTしていたのがちょっと気持ち悪かったので修正してみました:

--- lib/MHA/Server.pm.old	2012-01-09 00:06:53.000000000 +0900
+++ lib/MHA/Server.pm	2012-05-17 18:34:30.000000000 +0900
@@ -377,7 +377,7 @@
   $log = $self->{logger} unless ($log);
   if ( !$self->{no_master} && $self->{log_bin} && !$self->{not_slave} ) {
     my $dbhelper = $self->{dbhelper};
-    unless ( $dbhelper->has_repl_priv( $self->{repl_user} ) ) {
+    unless ( $dbhelper->has_repl_priv( $self->{repl_user}, $self->{repl_password}, $self->{hostname}, $self->{port} ) ) {
       $log->error(
         sprintf(
 "%s: User %s does not exist or does not have REPLICATION SLAVE privilege! Other slaves can not start replication from this host.",


--- lib/MHA/DBHelper.pm.old	2012-01-09 00:06:43.000000000 +0900
+++ lib/MHA/DBHelper.pm	2012-05-17 18:33:15.000000000 +0900
@@ -103,6 +103,7 @@
 use constant Unlock_Tables_SQL               => "UNLOCK TABLES";
 use constant Repl_User_SQL =>
   "SELECT Repl_slave_priv AS Value FROM mysql.user WHERE user = ?";
+use constant Show_Grants_SQL => "SHOW GRANTS";
 
 sub new {
   my $class = shift;
@@ -218,17 +219,26 @@
 sub has_repl_priv {
   my $self = shift;
   my $user = shift;
-  my $sth  = $self->{dbh}->prepare(Repl_User_SQL);
-  my $ret  = $sth->execute($user);
-  if ( !defined($ret) ) {
+  my $password = shift;
+  my $host = shift;
+  my $port = shift;
+
+  my $res = eval {
+    my $dbh = connect_util( $host, $port, $user, $password );
+    my $sth = $dbh->prepare(Show_Grants_SQL);
+    $sth->execute() or die;
+    my $values = $sth->fetchrow_arrayref;
+    foreach my $value (@$values) {
+      return 1 if $value =~ /\WREPLICATION SLAVE\W/;
+    }
+    return 0;
+  };
+  if ($@) {
     croak
 "Got MySQL error when checking replication privilege. $DBI::err: $DBI::errstr query:"
-      . Repl_User_SQL . "\n";
+      . Show_Grants_SQL . "\n";
   }
-  my $href  = $sth->fetchrow_hashref;
-  my $value = $href->{Value};
-  return 1 if ( defined($value) && $value eq "Y" );
-  return 0;
+  return $res;
 }
 
 sub is_binlog_enabled($) {

 repl_userで接続してSHOW GRANTSすれば権限を確認できるはず、ということで上記のような修正になっています。

 この修正をした場合はconfigにrepl_passwordが必須になると思います*1


mha管理ユーザーで必要な権限

 GRANT RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'mha';

――でいいのかな?

*1:repl_userにパスワードを設定している場合は。……あれ、通常でも必須なんだっけ?

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20120517

2012-05-15(Tue)

MySQLのレプリケーションでマスターを差し替える場合

|  MySQLのレプリケーションでマスターを差し替える場合 - 浅倉卓司@blog風味? を含むブックマーク  MySQLのレプリケーションでマスターを差し替える場合 - 浅倉卓司@blog風味? のブックマークコメント

 MySQLのレプリケーションでマスターを変えるには以下の感じでいいんでしょうかね?

master_old:
  FLUSH TABLES WITH READ LOCK;		-- 書き込み停止
  SHOW MASTER STATUS;		-- SELECT master_pos_wait() で使う

master_new:
  SELECT MASTER_POS_WAIT('master_old-log_name', master_old-log_pos);	-- 追いつくまで待つ
  SHOW MASTER STATUS;		-- CHANGE MASTER TO で使う

slave*:
  SELECT MASTER_POS_WAIT('master_old-log_name', master_old-log_pos);	-- 追いつくまで待つ
  STOP SLAVE;
  CHANGE MASTER TO
      MASTER_USER = 'user_name', MASTER_PASSWORD = 'password', 
      MASTER_HOST = 'master_new', MASTER_LOG_FILE = 'master_new-log_name', MASTER_LOG_POS = master_new-log_pos;
  START SLAVE;

master_old:
  UNLOCK TABLES;		-- 書き込み再開

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20120515

2012-05-03(Thu)

無料のウェブ漫画を単行本の収益で回収できるの?

| 無料のウェブ漫画を単行本の収益で回収できるの? - 浅倉卓司@blog風味? を含むブックマーク 無料のウェブ漫画を単行本の収益で回収できるの? - 浅倉卓司@blog風味? のブックマークコメント

 いちおう漫画雑誌がウェブに移行しない理由の補足になります。

(またウェブ漫画に限らず、描き下ろしなり雑誌連載にも関係するネタでもあります)


前提条件

  • 160ページ
    • 32ページ連載×5ヶ月
    • 販売時には色々ページが増えて*1168か176ページになるでしょう
  • 原稿料はページ1万円
  • 定価500円
    • 出版社収入は7掛けとして350円
  • 初版1万部*2

 典型的なケースを想定してみましたが、実際にはどうでしょうね。


初版収支

  • 漫画家の収入 210万円
    • 原稿料 160万円(160ページ×1万円)
    • 印税 50万円
  • 印刷代 50万円
  • 出版社の収入 ~350万円(350円×~1万部)
    • 固定費の260万円を回収するには実売率が75%(7500部)を越える必要がある
  • 出版社利益 ~90万円
    • 5ヶ月の連載で割ると~18万円/月

 これだけ見るとまるで儲かりそうにありません。


増刷3千部

  • 漫画家の収入 15万円(印税のみ)
  • 印刷代 15万円
  • 出版社の収入 ~105万円(350円×~3千部)
    • 増刷分の実売率が30%(900部)を越えれば固定費が回収できる
  • 出版社利益 ~75万円

 ザックリと追加で千部以上売れそうなら増刷しそうな感じですし、それでようやく利益が出そうです。


出版社の経費について

  • 5作品で90万円/月をまかなえそう
    • 5作品あれば毎月単行本も出せる
  • 休載の可能性を考えると6作品以上欲しい
  • 連載ページ数が少ない場合はさらに作品数が必要

 これから考えると、担当編集1人で6作品以上担当してる可能性が高そうです。


感想

  • 初版1万部程度だと完売しても厳しい
    • 初版2万部が堅い作品が1作品くらいないとキツそう
    • 雑誌で収入があればその分を出版社の経費に回せるので、初版1万部でもなんとかなりそう
  • 上記の試算では1万部売れた場合の売上の4割強が漫画家の収入なので、それなりに優遇されているとも言える(出版社はそれなりに投資している)
  • 原稿料がもうちょっと安ければ出版社的には楽、高いと厳しい*3
    • 裏サンデーは原稿料が安いんじゃないのかな?とは思ってる*4
  • 4コマ系の単行本のように112ページ700円程度なら回収しやすい*5
    • ただし普通の単行本より売れない可能性が高い
    • また単行本の出る頻度が減るため沢山作品を抱える必要がある

 まあこんなところでしょうか。全然儲かりそうにないですね。

 とはいえヒット作が出れば一気に収益が改善されるはずです。が、ヒット作が出るまで相当な投資が必要だと思われます*6

 また、最近は定価が600円くらいの単行本もありますので、その場合ならもうちょっとなんとかなりそうです。

*1:中表紙とか目次とか奥付とか色々あるからね。

*2:標準的な初版部数は知らないので、妥当かは分かりません。

*3:初版2万部が堅くないと原稿料を上げるのは難しいと予想。

*4:上記でも分かるとおり、連載を増やさないのは原稿料を出すのが大変だからだし。

*5:ちゃんと計算した方がよい?

*6:運良く最初にヒット作が出れば別ですが。

トラックバック - http://asakura.g.hatena.ne.jp/asakura-t/20120503
2004 | 01 | 02 | 03 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2008 | 02 | 03 | 04 | 06 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 02 | 03 | 04 | 05 | 07 | 08 | 10 | 11 | 12 |
2013 | 01 | 05 | 07 |
2014 | 01 | 02 |
2016 | 01 |
2017 | 01 | 05 |