トランザクション管理 -テーブルをロックする際の注意点

MySQLでテーブルのロックを試していて、ちょっと理解に時間を食った箇所の覚え書き。

テーブルをロックする際の注意点

MySQLでテーブルをロックする際は、そのトランザクションで利用するすべてのテーブルをロックしなければならない。
ロックしなかったテーブルは、そのトランザクション中で利用することはできない。

コマンド

テーブルをロックする際は、以下のコマンドを実行する。

lock tables [table_name] [WRITE|READ], [table_name] [WRITE|READ],...;

テーブルのロックを解除するときは、以下のコマンドを実行する。

unlock tables;

トランザクション管理について

MySQL

MySQLではデフォルトのテーブル形式がMyISAMになっている。
MyISAMでは高速に動作する代りにトランザクション管理を行うことができないようになっている。
そこでトランザクション管理を行いたい場合は、テーブル形式をInnoDBに変更する必要がある。

設定

すでにMyISAMとして作成済みのテーブルをInnoDBに変更したい場合、以下のようにする。

alter table [table_name] engine = innodb;

新規にInnoDB型のテーブルを作成する場合は以下のようにする。

CREATE TABLE table_name (
  :
  :
) ENGINE=INNODB;

MySQLのデフォルトのテーブル形式をInnoDBに変更する場合は my.cnf の[mysqld]に以下の文を追記する。

default-storage-engine=innodb

CentOSサーバのバックアップ方法の検討

現在利用しているCentOSで「サーバ(グローバルIP)の特定のディレクトリのバックアップを取って、それをバックアップ先の外部PC(プライベートIP)から自動的に取得する。」ということをやってみた。
その覚え書き。

続きを読む