MySQLとPostgreSQLのバックアップ・リストア

MySQL/PostgreSQL

 
MySQL/PostgreSQLWEBシステムを構築する際の便利な技を公開しています。

-


オススメサイト

 
 
ページ更新日:2007/03/05

 

MySQLの場合

バックアップ

# mysqldump --default-character-set=encode -u user_name -p db_name > filename

リストア

# mysql --default-character-set=encode -u user_name -p db_name < filename

補足

  1. --default-character-set で文字化けを防ぐ。
  2. -p でパスワードが必要なことを明示する。

PostgreSQL7の場合

バックアップ

# pg_dump -R -O -x -U user_name -f filename db_name

補足

レンタルサーバーでは、ユーザー名の変更・権限割り当てができない為、以下のオプションが必要。

  1. -R で接続コマンドを無視する。
  2. -O で権限コマンドを無視する。
  3. -x で grant/revoke を無視する。

リストア

# psql db_name user_name
Password: ******                            ←パスワードを入力
Welcome to psql 7.x.xx, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit
username=> \encoding encode          ←エンコード指定
username=> \i filename                    ←リストア
username=> \q

補足

PostgreSQL7ではバックアップ時、文字エンコードの指定をできない為、psqlからコマンドを打つ。

  1. psql でデータベースに接続。
  2. \encoding でバックアップファイルの文字エンコードを指定。

PostgreSQL8(Windows)の場合

バックアップ

# pg_dump -E encode -O -x -U user_name -f filename db_name

リストア

# psql -f filename db_name user_name

補足

レンタルサーバーでは、ユーザー名の変更・権限割り当てができない為、以下のオプションが必要。

  1. -E で文字化けを防ぐ。
  2. -O で権限コマンドを無視する。
  3. -x で grant/revoke を無視する。

執筆時点、PostgreSQL8pg_restorepg_dump のファイルが valid できないというバグ(?)があったので、psqlコマンドを使用した。

-
-