2014年2月28日金曜日

(FreeBSD 上での)PostgreSQL のメジャーアップデートの仕方のメモ

FreeBSD 上で PostgreSQL を使ったデータベースを運用してるが, 今回,PostgreSQL のメジャーアップデートを行ったので,そのメモを残しておこうと思った。

 そもそも PostgreSQL のメジャーアップデートとは何か? PostgreSQL のバージョンは,PostgreSQL 9.3.3 のように3つの数字で表される。 ここで,9.3 がメジャーバージョンを表し,最後の 3 がマイナーバージョンを表してる。 PostgreSQL のドキュメントにも書いてあるが,マイナーバージョンレベルでのアップデートは, 単に,運用されている PostgreSQL を止め,アプリケーションのコードを更新してから PostgreSQL を起動しなおせばいい。 データの構造が変わることはまずないので,単にアプリケーションソフト自体のみを更新すればいいらしい。

 しかし,メジャーバージョンが変わるアップデートの場合には,データ構造に変更がある場合もあるので,工夫が必要らしい。 備忘録として,以下にまとめてみた。

1. database のデータの dump を作っておく(dump を経由してデータを移行する)(PostgreSQL は動かしたままで行う)
 # /usr/local/bin/pg_dump -U pgsql -E UNICODE testdb > testdb.dump.2014xxxx

2. 古いデータベースを念の為に削除(postgresql はまだ動かしたまま)
 # dropdb -U pgsql testdb

2014年2月20日木曜日

エプソンのネットワークプリンターアダプター PA-TCU1 の設定変更で手間取った件

最近,家のネットワーク環境が少し変わったため,無線LANルーターを新しいものに更新した。 その際,家で運用しているサーバーなどの IP アドレスの設定変更でごたごたしたのだが, 最後にプリンターで手間取ってしまった,という話。

 1個まえの投稿でも書いたのだが,家のネットワークが 100Mbps から 1Gbps へと更新された。 それに伴って,無線LANルーターも 1Gbps 対応のものに入れ替えた。 その際,これまで無線LANルーターにもたせていた local IP アドレスが使えなかった。 どうもブリッジ接続用に予約されてしまったみたい。 そこで,仕方なく別の番号を無線LANルーターのローカルな IP アドレスに指定した。 そうなると,家で使っているコンピュータ類の設定をいじらないといけないものが出てきた。 その一つが家で運用しているサーバーの設定。 resolv.conf や default router などの設定をいじらないといけなかった。 それらの設定でも結構時間を取られたのだが,プリンターの設定までは気が回っていなかった。

 家にあるプリンターはエプソンのインクジェットプリンターなのだが, ネットワーク上に置いておきたいと思ったので,ネットワークプリンターアダプターなる機器を介して,プリンターをネットワークにつなげている。 ネットワークプリンターアダプターは,EPSON の PA-TCU1 という機種。 プリンターは PA-TCU1 とは USB ケーブルで接続されている。 この PA-TCU1 は有線でも無線でもプリンターをネットワークにつなげるというもので,結構便利に使わせてもらっている。 しかし,この PA-TCU1 を介してつないでいるプリンターで印刷ができない,という事態が発生した。 最初は「プリンターで印刷できへん」という苦情だった。 仕方なくプリンターユーティリティで様子を探ろうとしてみたが,どうもプリンターにつながらないみたいだった。 無線LANルーターを更新した際に,プリンターが IP を取得できていないのかもしれない,と思って, エプソンのネットワーク用のユーティリティ(ネットワーク上にある EPSON のネットワークプリンターアダプターを探して設定できるソフト)である EpsonNet Config V4 をインストールしてみた。 しかし,EpsonNet Config V4 を起動後,何度最新情報に更新してみてもアダプターが現れない。 うちは家用は Macintosh なのだが,Windows のノート型パソコンもあるのでそちらで調べたりしてみたが,それでも同じだった。

 そこで,今度は無線LANルーターの設定を見なおしてみた。 MAC アドレスでの接続制限をして,DHCP では固定アドレスをプリンターに与えているのだが,その辺りの設定ミスを疑ってみた。 しかし,無線LANルーターの設定を見なおしてみてもおかしな感じは見受けられなかった。

 そこで,仕方ないのでプリンターと PA-TCU1 を見なおしてみることにした。 PA-TCU1 の背面にはスイッチが2個ある。そのうちの上側の1個を押してみた。 すると,ネットワークに関する情報の一覧みたいなのがプリンターで印刷された。 それを見ると,どうも以前の無線LANルーターの SSID を記憶していて,その SSID の無線LAN につなごうとしているみたいだった。 それはつながらないわ,と思った。

 仕方ないので,PA-TCU1 を初期設定に戻す作業をしてみた。 具体的には,PA-TCU1 の背面にある上の方のスイッチを20秒以上押し続けていると,初期設定に戻るということだった。 実際にやってみると,20秒ほど経つと,正面の LED(上)が,赤→橙→緑の順に点灯し始めた。 これは初期化が始まったということみたい。 その後,ネットワーク情報を打ち出してみると,確かに SSID は EPSON net となって,初期化されたみたいだった。 しかし,その後もすぐにはつながらなかった。 ローカルネットワーク上から EPSON のネットワーク用ユーティリティ EpsonNet Config で PA-TCU1 を探すのだが,見つからない。 どうも,最初の設定時には有線でやるか,Baffalo の AOSS などを使わないといけないみたいだった。 うちの無線LANルーターは Baffalo じゃないので,AOSS は使えない。 仕方ないので,ノートコンピュータを PA-TCU1 のそばに持って行って,有線でつないでみた。 すると,ちゃんと EpsonNet Config 上に PA-TCU1 にが現れた。 そこで,設定をしてやると,無事に無線LANルーターを通して PA-TCU1 と通信することができた。

2014年2月11日火曜日

FreeBSD named で managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found というエラーがでた

 バイクの写真を載せるのに FreeBSD のサーバーを運用している。 家の中の private network 内にサーバーを置き,mydns と無線LANルーターの port mapping 機能を使って外部からのアクセスに対応している。

 最近,家のネットワークの入口に設置している無線LANルーターを入替えた。 理由は,ネットワークを 100Mbps タイプから 1Gbps タイプにしたから。 あまり通信速度が速くなった感がないから 1Gbps にした意味があったかどうかは不明だが…。

 その際,これまで使っていたいくつかの private IP が予約されたみたいで,指定できなくなっていた。 一番困ったのが無線LANルーター自身の IP アドレス。 以前は無線LANルーター自身のアドレスは,デフォルトだと 192.168.0.1 だったのだが, それって普通すぎるからと思って,3桁目を違う数字にしていた。しかし,その番号が使えなくなってしまった。 そこで,仕方なく,無線LANルーターの LAN 側の IP をデフォルトの IP のままで使うことにしてみた。 となると,DHCP にしてないサーバーでは,DNS 指定や,default router の設定値を変更しないといけない。 プライベート用に named も運用しているのだが,その設定もいじらないといけなかった。 named の事はここには詳しいことは書かないが,今回は極力 named の設定ファイルをいじらずに済ませ,named を再起動してみた。

 すると,何故か named がエラーをいっぱい吐いてきた。 幾つかはコメントアウトに「;」を使うべきところでついつい「#」を使ってしまうなどの単純なタイプミスだったのだが,不明だったのが以下のエラーだった。
managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found
どうやら「managed-keys.bind」というファイルが無い,と言っているみたい。 そんなこと言われても,以前からそんな名前のファイルはなかったと思うのだが…。

 仕方ないのでネットで検索してみた。 すると,「ファイルがないのなら,managed-keys.bind という名前の empty ファイルを作ればいい」という記述があった。 それは簡単,だと思ったのだが,問題はファイルを置く場所。 普通なら named.conf のある場所だろう,と思って,とりあえず named.conf のある場所に置いてみた。 具体的には「/etc/named/」の下。 私の使っている FreeBSD では /var/named/etc/named/ が /etc/named/ にリンクされているので,その下に置いてみた。 しかし…,エラーは消えなかった

 仕方ないので,英語のサイトも含めて調べてみた。 すると「working directory に置け」という記載を見つけた。 そういえば,/etc/named/ の下には,master/,slave/,dynamic/ 以外に working/ というディレクトリがある。 named.conf を見てみると,option 設定の中に,
        directory       "/etc/namedb/working";
と書いてあった。 どうやら,/etc/named/working/ (/var/named/etc/named/working/) が working directory みたいだった。 そこで,/etc/named/working/ の下に managed-keys.bind を置いてみた。 中身が何もない empty ファイルなので,
> touch managed-keys.bind
として作ってみた。

 するとエラーは消えた。なんかよくわからないが,エラーが消えたからよしとしよう。