[sql] update users set name = concat(‘user_’ , id), mail = replace(mail,left(mail,instr(mail,‘@’)- 1), concat(‘dummy_’,id) ); [/sql] **after** id name mail
シェルスクリプトからSQL文を実行する場合はこのようにします。 batch.sqlファイルに実行したいSQL文をあらかじめ書いておいて、 mysql -h host -u username -ppassword dbname < batch.sql (↑ -pの直後に続けてパスワードを書きます。) SQL文をインラインで書いて実行することもできます。 mysql -h host -u user -ppassword dbname -e "INSERT INTO users (id, nickname) values (1, 'DQNEO');" これを応用すれば、「データベースを初期化」→「テーブル作成」→「初期データ投入」のような作業を自動化することができます。 SQL文の中でシェル変数が使えるので非常に便利です。 以下に実際の応用例を示します。 サンプルコード db_init
※書いてあることの保障はしません。 標準入力、標準出力とは何か? echoというコマンドは、どのUNIX/Linuxの教科書にも載っているけど、なんて使えなさそうなコマンドだと、私は最初の頃思っていました。しかし、このechoこそ、UNIX/Linuxの入出力を知るのに持って来いなのです。例えば、 echo 'Hello' と打ってみましょう。 Hello とかえってくるはずです。なんだ、たいしたこと無いと思うかも知れません。このechoというコマンドは、標準入力を標準出力に返すという単純な命令をこなします。これを図示すると、こんな感じになります。 この図では、端末からechoコマンドという家の「標準入力」という名前の入口にHelloという文字が入っていって、「標準出力」という出口が端末に繋がっていて、Helloという文字が端末に帰ってくる様子を表わしています。まずはコマンドには「標準入力
ちょっと遅めの夏休みをもらって八丈島に行ってきました nakamura です!いい所すぎて危うくそのまま移住するところでした。 データベースの移行をする際みなさんどんな流れで作業しているでしょうか。コマンドラインでダンプを取って、サイズが大きかったら gzip で圧縮して、WinSCP でそれをローカルに落としてきて、それをまた別のサーバにアップロードして・・・・なんて事してたりしませんか? シェルのパイプやリダイレクトをうまく使ってあげれば、この辺りはコマンド一発でいけちゃったりするのです。今日はそんなコマンド例のご紹介です。 実際によく使うコマンドの例を箇条書きで。 とりあえずダンプの結果をそのまま圧縮する。 mysqldump -udb_user db_name -pdb_pass | gzip > db_name.dump.sql.gz 特定の文字列を置換した上で圧縮する。 MT
よくあるdumpのリストア まずはリモートサーバ側でdumpを出力します。 mysqldump --single-transaction -uuser -ppassword schema > /tmp/dump.sql ローカル側でdump.sqlをscpで取得し、リストアします。 scp ./dump.sql user@host:/tmp mysql -uuser -ppassword schema < /tmp/dump.sql 場合によってはリモートサーバでgzipするかもしれませんね。 問題点 これだとdump.sqlのファイル出力と、scpが必要になります。 dumpしたsqlのファイルサイズが10G程度になると、無駄なIOが発生して時間がかかります。 場合によっては「ディスク容量がギリギリ足りない!!」なんていう状況もあるでしょう。 ではこのIOを極力減らしてみます。 ファイル
ただ、値上げしてだいぶ敷居が高くなってしまったんですよね。プロジェクト3つで$25/monthかかり、しかもエラーが60日で消えてしまいます。 (僕は旧プランのまま$5/monthで使えていますが、これ以上プロジェクトを作れません・・・) そこで、オープンソースのAirbrakeクローン、errbitを使ってみました。 https://github.com/errbit/errbit インストール インストールはREADME通りにやれば簡単です。 Ubuntu 12.04 Server (さくらのVPS)にインストールしました。Rubyはインストール済みです。 # 依存ライブラリインストール(root) apt-get update apt-get install mongodb install libxml2 libxml2-dev libxslt-dev libcurl4-openss
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く