「ディスパッチベース」のロゴ画像

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

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 を無視する。

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

▲ページ先頭に戻る

MySQL/PostgreSQL

 

MySQL/PostgreSQLでWEBシステムを運用する際の便利な技を公開しています。

-
記事公開日: