PostgreSQLでのデータベースのダンプとリストア
- 2009.04.24 (金) 11:17
- SQL
- PostgreSQL
PostgreSQLでデータのダンプとリストアの方法を勉強しました。
データのダンプ(pg_dump)
| 1 | pg_dump -U <user_name> -W -f <dump_filename> -F t <database_name> | 
「-F t」オプションは、ダンプしたデータをpg_restoreでリストアできるファイルフォーマットでダンプするように指定する設定です。
データのリストア(pg_restore)
| 1 | pg_restore -U <user_name> -W -a -d <database_name> <dumpfile_name> | 
「-a」オプションは、データのみのリストアを行う時に使用するオプションです。
このオプションを指定しなければデータ以外も全て復元されます。
「-c」オプションを使用すると、リストア前にデータベースをDROPして新しく作成してくれます。
きれいな復元をしたい場合にはつけた方がよさそう。 
PostgreSQLでのpsqlの使用方法
- 2009.04.24 (金) 10:23
- SQL
- PostgreSQL
仕事でPostgreSQLを使用することになったので対話型インターフェースの使い方のお勉強です。
ログイン方法:
| 1 | psql -U <user_name> -W <databasename> | 
-Wオプションは、データベースへの接続時にパスワードを尋ねてくるようにするオプションです。
CakePHPでNot Foundになってしまった場合
symfony、codeigniterなどのPHPフレームワークを使用したことがあったけど、CakePHPは使用したことがなかった。
symfonyを最近は仕事で使っていてなんか大規模システムを構築するのにあってそうなイメージを感じた。
今度、CakePHPで仕事をする可能性があるので勉強します。
でとりあえず動かそうとしたとき
「http://192.168.106.10/hashizume/cake/」でシステムにアクセスしたら
404 Not Foundが表示された・・・ どおして。
どおして。
調べていると.htaccessのRewriteBaseが「/」であることが前提となっているみたいなので修正しました。
修正箇所はRewriteBaseの行を追加しました。
| 1 2 3 4 5 6 | <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /hashizume/cake/ RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> | 
| 1 2 3 4 5 6 | 
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase    /hashizume/cake/app/
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule> | 
| 1 2 3 4 5 6 7 | 
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /hashizume/cake/app/webroot/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule> | 
これでNotFoundがなくなりました。
CentOSのSetup Agentを再実行するには
CentOSをインストールしたときに起動する初期設定の「Setup Agent」を実行する方法です。
Authentication
| 1 | /usr/sbin/authconfig-tui | 
Firewall Configuration
| 1 | /usr/bin/system-config-securitylevel-tui | 
Network Configuration
| 1 | /usr/sbin/system-config-network-tui | 
これで、再度実行することができます。
mysqlでレプリケーションできなかった理由 bind-address
MySQLでレプリケーションを試していてなぜか、Slaveから接続を試みると
| 1 | Apr 20 10:04:21 ubuntu-be02 mysqld[4355]: 090420 10:04:21 [ERROR] Slave I/O thread: error connecting TO master 'repl@192.168.133.200:3306': Error: 'Lost connection to MySQL server at 'reading initial communication packet', system error: 111' errno: 2013 retry-time: 60 retries: 86400 | 
syslogに上記ログが出力されていた・・・うまくレプリケーション出来ない。
色々と調べたらMaster側のmy.cnfの設定項目で「bind-address」を設定しているのよくなかったみたい。
これは、TCP接続できるアドレスをかかないといけないみたい。ここがデフォルトでは
| 1 | bind-address = 127.0.0.1 | 
ローカルホストのみとなっているのでコメントアウトする。
でSlaveをスタートしてみると・・・見事接続成功

| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | mysql> SHOW slave STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting FOR master TO send event Master_Host: 192.168.133.200 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000006 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 1 row IN SET (0.00 sec) | 
無事、レプリケーションされました。

 
