mysqlのコネクション数を数える
MySQLのコネクション数を調べる方法
1 |
mysqladmin -u root -p extended-STATUS | egrep '(Max|Threads_)' |
これでいいみたい
参考サイト:www.thinkit.co.jp/free/article/0707/2/2/
mysqlでレプリケーションできなかった理由 bind-address
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でのTIMESTAMP型
MySQLでのTIMESTAMP型がちょっと妙なので・・・
TIMESTAMP型のカラムを生成する時に
- デフォルト値にcurrent_timestampを設定できる
- レコードが更新された時に自動的に現在時刻でTIMESTAMP型のカラムを更新できる
こんなカラムの属性を設定できる
これだけを聞くととても便利なような気がするのだが、制約がある1つのテーブルで上記設定ができるは1カラムのみなのだ
例えば、テーブルを作る時に
- 登録日時
- 更新日時
- 削除日時
の3つのカラムを作成し、
- 登録日時は、デフォルト値にcurrent_timestampを設定、
- 更新日時は、デフォルト値にcurrent_timestampを設定と更新時に自動的に現在時刻で更新というような設定にしたいと思うのだが
これができない。
1カラムにしか上記属性を設定できないからだ・・・。
なんか使い辛いゾ
ということでMySQLではTIMESTAMP型を使わずにDATETIME型を使用します。
そんでもって、プログラム側で時刻を登録するようにするのが一番ベストな選択のような気がします・・・
なんの為の便利な機能なのだか分らん
更新日時だけTIMESTAMP型という選択肢もあるかと思うが全部同じ型で統一した方がわかりやすいしね