タグ

ブックマーク / sh2.hatenablog.jp (5)

  • MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記

    MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。日はそれを無停止、オンラインのままでできないかという話題です。 基的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

    MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記
  • MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記

    データベースの運用で避けられないのが、ロック競合によって起こるシステムトラブルへの対応です。「2時までに終わるはずのバッチ処理が朝になっても終わっていない」とか「負荷が高いわけでもないのにシステムが無応答になっている」といったトラブルが発生したとき、DBエンジニアはそれがロック競合によるものなのかどうかを切り分けて、適切に対処しなければなりません。 これまでInnoDBはロック競合に対してほとんど打つ手がなかったのですが、最近ようやく対処方法がでてきました。今日はその手順を確認していきたいと思います。 前提 今回ご紹介する手順は、MySQLの以下のバージョンを対象にしています。 MySQL 5.1+InnoDB Plugin 1.0 MySQL 5.4 いきなりハードルを上げてしまって申し訳ありませんが、バージョン5.0以下や素の5.1では使えませんのでご注意ください。以降の実行例はすべて

    MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記
  • DBD::drizzleでMySQLに接続してみる - SH2の日記

    DrizzleのクライアントをCentOS 5.3に入れてPerl DBIでMySQL 5.1につないでみた日記。Drizzleって何?って方はIntroducing the Drizzle Projectをご覧ください。 Drizzle Client & Protocol LibraryからDownloadsと書いてあるリンクをたどって、libdrizzle-0.3.tar.gzをダウンロードする。libdrizzleのビルドは何事もない感じ。 $ tar xvzf libdrizzle-0.3.tar.gz $ cd libdrizzle-0.3 $ ./configure $ make $ sudo make installCPANからDBD-drizzle-0.100.tar.gzをダウンロードする。ところがビルドしようと素でperl Makefile.PLを叩くと失敗する。 $

    DBD::drizzleでMySQLに接続してみる - SH2の日記
  • perl-DBD-MySQL 3.0007-2.el5でハマった件 - SH2の日記

    Perl DBIのプログラムを書いていて、CentOS 5.3付属のDBD::mysqlをそのまま使ったら困ったという話です。 再現ケース 動く例です。 $sth = $dbh->prepare_cached('select ename from emp where empno = ?'); $sth->bind_param(1, 7788, SQL_INTEGER); $sth->execute(); 動かない例です。bind_param()の引数を7788から-7788にしています。 $sth = $dbh->prepare_cached('select ename from emp where empno = ?'); $sth->bind_param(1, -7788, SQL_INTEGER); $sth->execute(); すると以下のようなエラーメッセージが出力され、SQ

    perl-DBD-MySQL 3.0007-2.el5でハマった件 - SH2の日記
  • MySQL 5.1.31リリース、Montyが独立 - SH2の日記

    MySQL 5.1.31出ました。今回はなんと100個以上のバグが修正されています。読むだけでも大変な上に結構痛いバグがたくさんあるようですので、5.1.30を早速使っているチャレンジャーな方はすぐにアップグレードすることをおすすめします。GAでいよいよ大勢の顧客が5.1を使い始めたことがよく分かりますね。また、5.0のときは3桁目が奇数のものがCommunity版、偶数のものがEnterprise版だったのですが、5.1は今のところ区別されていないようです。 MySQLの生みの親、MontyことMichael Widenius氏がSun Microsystemsを退社し新たに会社を立ち上げたそうです(人のブログ、@ITの記事)。以前紹介したエントリからもやめそうな雰囲気がただよっていたのですが、やはりという感じでしょうか。仕事MySQLを触っている立場としては、 開発が停滞してしまわ

    MySQL 5.1.31リリース、Montyが独立 - SH2の日記
  • 1