Archive for the ‘mysql’ Category

 

mysql buckup | mysqlhotcopy or mysqldump

1月 12th, 2012

http://dev.mysql.com/doc/refman/5.5/en/backup-methods.html
http://dev.mysql.com/doc/refman/5.5/en/mysqlhotcopy.html
mysqlhotcopyしようと思ったらinnodbでは使えないとのこと。

#!/bin/sh

SRC_IP=’000.000.000.000′
SRC_DIR=”/home/bkup/data/bkup/mysql”
TO_IP=’1.1.1.1′
TO_DIR=”/home/bkup/data/${SRC_IP}/mysql”

DATESTR=`date ‘+%Y%m%d%H%M%S’`
MYSQL_NAME=’wordpress’

# test touch /home/bkup/data/bkup/mysql/db.$DATESTR
# touch /home/bkup/data/bkup/mysql/db.${DATESTR}

mkdir -p ${SRC_DIR}

# mysqldump -u root –all-databases > ${SRC_DIR}/${MYSQL_NAME}.${DATESTR}
# gzip ${SRC_DIR}/${MYSQL_NAME}.${DATESTR}

ssh ${TO_IP} mkdir -p ${TO_DIR}
CMD_STR=”rsync -auz ${SRC_DIR}/${MYSQL_NAME}.${DATESTR}.gz ${TO_IP}:${TO_DIR}/${MYSQL_NAME}.${DATESTR}”
$CMD_STR

こんな感じで。dumpしてrsync

Read full article | コメントは受け付けていません。

PDOのdsnにcharset が必要だった。|mysql php

12月 26th, 2011

mysql:host=slave.mysql.tranode.com;dbname=tranode;port=99999;charset=utf8;
みたいな。
charsetを指定しないと文字化けした。phpからだけ見てるとわからないけど
mysqlから直接見ると文字化けしてたので、文字コードが間違えて入ってるっぽい。

Read full article | コメントは受け付けていません。

skip slave sql error | mysql

12月 15th, 2011

slaveでsqlエラーが出ると
mysql > show slave status;

Slave_IO_Running: Yes
Slave_SQL_Running: No

Last_Errno:
Last_Error: Error ‘xxx’

となりました。
(原因はいろいろですが、単純な場合は、slave側でstart slaveの前に何かsqlを実行してそれが邪魔しているとか
飛ばしても良いエラーの場合は、

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
start slave;

でスキップします。
====
データがある状態からstart slaveするときは。
master のポジションを確認

FLUSH TABLES WITH READ LOCK; // マスターの書き込みを停止。& dump & copy

show master status; // file positionを確認
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | [...]

Read full article | コメントは受け付けていません。

can not use current_timestamp on 2 timestamp columns | mysql

12月 14th, 2011

create table でこれがエラーになる。

`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

http://dev.mysql.com/doc/refman/5.5/en/timestamp.html
あってそうだけど、2個 timestamp型にCURRENT_TIMESTAMPを使えないらしい。

テーブル内の1つの TIMESTAMP カラムに対して、現在のタイムスタンプをデフォルト値と自動更新値として指定する事ができます。現在のタイムスタンプを、カラムを初期化するデフォルト値にする事、または自動更新のデフォルト値にする事、またはその両方にする事が可能です。現在のタイムスタンプを、1つのカラムを初期化するデフォルト値にし、別のカラムの自動更新のデフォルト値にする事は不可能です。

ということで。

`created_at` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00′,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

instert into で NOW() を入れてみる。

mysql> select * from users;
+———+——–+——+———-+———————+———————+
| id | authid | mail | [...]

Read full article | コメントは受け付けていません。

generate id by procedure | mysql

12月 14th, 2011

作成時は、delimiter // で ; を変えておく必要があります。
autoincrementのIDを作成して返します。

mysql > delimiter //
CREATE PROCEDURE check_user (IN s_id VARCHAR(255), OUT r_id INT(11))
BEGIN
SELECT id INTO r_id FROM users WHERE authid=s_id;
IF r_id is NULL THEN
INSERT INTO users( authid ) values( s_id );
SELECT id INTO r_id [...]

Read full article | コメントは受け付けていません。

mysqld_multi で複数起動&レプリケーション mysql_safe | mysql 5.5

12月 13th, 2011

とりあえず、2つ動かして、master-slaveをテスト環境で作る。
適当に入れて適当に起動したら。
まだ作ってませんがTRANODEもよろしくお願いします。
user tranodeで動かします。
/etc/my.cnf

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user=root

~/.my.cnf

[mysqld1]
datadir = /home/tranode/data/my/data1
socket = /home/tranode/data/my/mysql1.sock
pid-file = /home/tranode/data/my/mysqld1.pid
port = 50431
server-id=1
log-error=/home/tranode/log/my/mysqld1.log
sync_binlog=1
log-bin=mysql-bin
log-bin-index=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin

# slave
[mysqld2]
datadir = /home/tranode/data/my/data2
socket = /home/tranode/data/my/mysql2.sock
pid-file = /home/tranode/data/my/mysqld2.pid
port = 50432
server-id=2
master-host=127.0.0.1
master-port=50432
master-user=tranode
master-password=********
log-error=/home/tranode/log/my/mysqld2.log
read_only
log-slave-updates
log-bin=mysql-bin
log-bin-index=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin

$ mysqld_multi start –log=/home/tranode/log/my/multi.log

* root以外で実行する場合logを指定しないとエラーが出る。
WARNING: Log file disabled. Maybe directory or file isn’t writable?

111213 19:21:17 [Note] Plugin ‘FEDERATED’ is disabled.
/usr/libexec/mysqld: Table ‘mysql.plugin’ doesn’t exist
111213 19:21:17 [ERROR] Can’t open the [...]

Read full article | コメントは受け付けていません。

mysql error | Error message file ‘/usr/share/mysql/english/errmsg.sys’ had only 480 error messages

5月 13th, 2011

remiをいれたり、i386が入ってしまったりするとエラーになるので、いったん削除して入れなおす。

#yum remove mysql*
#yum –enablerepo=remi install php-mysql mysql-server

起動できないときは、エラーの内容によっていかを試す。
http://dev.mysql.com/doc/refman/5.1/ja/installation-programs.html
* mysql_install_db
* mysql_upgrade

110513 19:16:13 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it

Read full article | コメントは受け付けていません。

httpdプロセスがとまる件2

1月 4th, 2010

httpdプロセスが停まってしまう件
を書きましたが、残念ながらたまり続けます。。。
close_waitについては、ちゃんと消えているのですが、httpdプロセスが消えてくれません。
yahooやgoogleのcrawlerが多かったのですが、特に相手が悪いわけではなく原因は少しわかってきました。
タイムアウトするリクエストのタイムアウトを待たずにリトライして別プロセスで新しいものを取得すると・・・発生するようです。
とりあえずもう少し処理を修正してタイムアウトがちょっとでも起きないようにして行きたいと思います。
MySQLとの接続関連の何かがプロセスを切らせない何かがあるようです。
しかし slowqueryもないのでわからない。。。

Read full article | コメントは受け付けていません。

Mysql Union 複数テーブルから結果を取得

11月 6th, 2009

where句も2つの結果の並べ替えもOKのようです。
mysql> (select title from bid where match(title,description) against(”*W1:3,2:1 DVD” in boolean mode) limit 2) UNION ( select title from bid_0910 where match(title,description) against(”*W1:3,2:1 high” in boolean mode) limit 2) order by title\G;
*************************** 1. row ***************************
title: amazonの中古最低価格より安い!新品「TOEFL GrammarWorkbook」T
*************************** 2. row ***************************
title: 人気の一体型 DESKPOWER LX50M●CelD 2.9G 512M 300G Sマルチ
*************************** 3. row ***************************
title: $動作品☆Lavie ☆LT/Pm1,6G/512MB/100GB/DVD-S$Wlan/TV
*************************** 4. row ***************************
title: [...]

Read full article | コメントは受け付けていません。

mysql : copy teble

11月 6th, 2009

テーブルをコピーしてみます。
table_a を table_b にコピー
mysql> create table table_b like table_a;
Query OK, 0 rows affected (0.32 sec)
mysql> show create table table_b\G;
*************************** 1. row ***************************
Table: table_b
Create Table: CREATE TABLE `table_b` (
`id` varchar(32) NOT NULL,
`url` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`description` text NOT NULL,
`created_at` [...]

Read full article | コメントは受け付けていません。