新しいブログに移動しました。
9ensanのLifeHack
こちらの記事も必要に応じて新しいブログに移動させる予定です。
今後ともよろしくお願い致します。

HOME > 

mysql

mysqlのコネクション数を数える

  • 2009.07.15 (水) 22:48
  • SQL

MySQLのコネクション数を調べる方法

1
mysqladmin -u root -p extended-STATUS | egrep '(Max|Threads_)'

これでいいみたい

参考サイト:www.thinkit.co.jp/free/article/0707/2/2/

 

mysqlでレプリケーションできなかった理由 bind-address

  • 2009.04.20 (月) 10:27
  • SQL,設定

MySQLでレプリケーションを試していてなぜか、Slaveから接続を試みると

1
Apr 20 10:04:21 ubuntu-be02 mysqld[4355]: 090420 10:04:21 [ERROR] Slave I/O thread: error connecting TO master 'repl@192.168.133.200:3306': Error: 'Lost connection to MySQL server at 'reading initial communication packet', system error: 111'  errno: 2013  retry-time: 60  retries: 86400

syslogに上記ログが出力されていた・・・うまくレプリケーション出来ない。

色々と調べたらMaster側のmy.cnfの設定項目で「bind-address」を設定しているのよくなかったみたい。

これは、TCP接続できるアドレスをかかないといけないみたい。ここがデフォルトでは

1
bind-address           = 127.0.0.1

ローカルホストのみとなっているのでコメントアウトする。

でSlaveをスタートしてみると・・・見事接続成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> SHOW slave STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting FOR master TO send event
                Master_Host: 192.168.133.200
                Master_User: repl
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000004
        Read_Master_Log_Pos: 98
             Relay_Log_File: mysqld-relay-bin.000006
              Relay_Log_Pos: 235
      Relay_Master_Log_File: mysql-bin.000004
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 98
            Relay_Log_Space: 235
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 0
1 row IN SET (0.00 sec)

無事、レプリケーションされました。

 

 

 

MySQLで既存のテーブルからCREATE文を生成する方法

  • 2009.03.11 (水) 18:07
  • SQL

MySQLでテーブル定義書を作るのが面倒で、phpMyAdminで直接、データベースを生成しているとテストサーバーから本番サーバーにデータの移行する時や、念のためにバックアップを取っておきたい時などに

CREATE文が欲しくなるときがあります。

そんなときMySQLでは便利なSQLがあったので紹介します。

1
SHOW CREATE TABLE テーブル名

これで以下のように対象テーブルのCREATE文が生成されます

show-create-table-mysql

こりゃめちゃくちゃ便利ですね~

これをうまく使って便利なデータ移行ツールが作れそうです。

 

MySQLでのTIMESTAMP型

  • 2009.02.22 (日) 17:36
  • SQL

MySQLでのTIMESTAMP型がちょっと妙なので・・・

TIMESTAMP型のカラムを生成する時に

  1. デフォルト値にcurrent_timestampを設定できる
  2. レコードが更新された時に自動的に現在時刻でTIMESTAMP型のカラムを更新できる

こんなカラムの属性を設定できる

これだけを聞くととても便利なような気がするのだが、制約がある1つのテーブルで上記設定ができるは1カラムのみなのだ

例えば、テーブルを作る時に

  • 登録日時
  • 更新日時
  • 削除日時

の3つのカラムを作成し、

  • 登録日時は、デフォルト値にcurrent_timestampを設定、
  • 更新日時は、デフォルト値にcurrent_timestampを設定と更新時に自動的に現在時刻で更新というような設定にしたいと思うのだが

これができない。

1カラムにしか上記属性を設定できないからだ・・・。

なんか使い辛いゾ

ということでMySQLではTIMESTAMP型を使わずにDATETIME型を使用します。
そんでもって、プログラム側で時刻を登録するようにするのが一番ベストな選択のような気がします・・・

なんの為の便利な機能なのだか分らん

更新日時だけTIMESTAMP型という選択肢もあるかと思うが全部同じ型で統一した方がわかりやすいしね

お薦めのレンタルサーバー
広告
お薦めの書籍
HOME > 

mysql