DTI ServersManを借りて1週間

ServersManを借りて1週間になる。490円という低価格から提供されるVPSだが、悪くなさそうな印象だ。現在借りているのはStandardプランなのだが、評価してみることにする。

  • 速度
    時々、重くなることがあるようだ。おそらくサーバで同居する別のアカウントの影響を受けているのではないかと思われる。それがなければロードアベレージはだいたい1以下をキープしているっぽい。
  • メモリ
    Standardプランでは保証メモリ1.5GB、保証メモリ512MBなのだが、 基本的に1.5GBが使えそうな印象だ。cat /proc/meminfoで確認するとMemTotalの値が1.5GBだ。混み合ったときは512MBに落とされるのかもしれない。
  • IPアドレス
    デフォルト1個だが、無料でもう1個追加できる。複数のSSL証明書を使う予定は今のところないのだが、太っ腹な印象だ。
  • ハードディスク
    基本30GBで 、10GB105円で追加できる。追加容量の制限はないらしいので、お金さえ積めば無制限に増やすことが出来る。これもありがたい。
  • バックアップ
    最初の10GB210円、以降10GB105円で増量できるストレージサービスがあり、そこにVPSをまるごとバックアップできるっぽい。これ、VPSを使う上で結構重要。まるごとバックアップして、まるごと戻せるのはVPSならではだから。
  • OS
    CentOS、debian、ubuntuが使えて、32ビット、64ビットの選択ができる。
  • 管理ツール
    32ビット版CentOSを使うときだけ、BlueOnyxが初期インストールされる。それ以外ではサーバ管理ツールを使用したければ、自分でwebmin等をインストールする必要がある。BlueOnyxはコバルトの時代からそうだが、操作でやや癖がある(webminもそうだが・・・)。

低価格なVPSの中では相当いい方ではないかと思う。おすすめかも知れない。


共用サーバのバックアップ

共用サーバも自動で毎日バックアップを取ることにした。

今回クライアントに提供しているサーバ(VPS)のバックアップを外部サーバに自動バックアップをとるように設定したのだが、その理由は2つ。

  • サービスとしてバックアップ機能がない
    近々提供予定ということだったのだが・・・とりあえず現状バックアップの手段が提供されていない。
  • ローカルに保存するのは怖い
    やはり外部の(別の)メディアにバックアップしておきたい。

過去に何度となくトラブルに遭遇し、その都度痛い目を見ているので、今回はすごく真面目に取り組んでいる(気付くのが遅い・・・)。そしてこれを機に運用中の共用サーバもバックアップをとることにしたというわけ(サーバの停止はそのまま収入の減少にもつながるので)。

まずサーバでバックアップ用のコマンドが使えるかどうかチェック。PHPが使えるのでsystem関数を使ってパスが通っているかどうかをチェックする。

system(‘which mysqldump’);
system(‘which tar’);
system(‘which bash’);
system(‘which gzip’);
system(‘which ssh’);
system(‘which ftp’);
system(‘which expect’);
var_dump(__FILE__);

コマンドがあればパスを吐き出してくれる。うん、うん、だいたい使えそう。

MySQLはmysqldumpで吐き出す。この時、最初は-xオプションでロックをかけようとしていたのだけれど、それだとdumpできなかった。まぁ、共用サーバだからしょうがない。-xオプション無しでdump。そしてそれをパイプに渡してgzip。これでOKだ。現在使っている共用サーバは複数のMySQLデータベースを使用できるのだが、それらのユーザ情報は共通にしてあるので、–all-databasesオプションを使えば一発で全てのDBをdumpできる。

次にファイル。HTMLとかPHPとか画像とか。これはtarで固めてgzip。ただしバックアップファイルの保存先を上手く指定してやらないといけない。あとメールデータとかゴミとか不要なのはデータ領域の無駄なのでバックアップしない。そのためシェルスクリプトを組んで、バックアップをとるデータのリストを作成し、それを引数としてtarに渡すことにした。これでファイルのバックアップもOK。

上記の二つはcronで1日1回処理。これを外部サーバに転送する。上記二つの処理は一つのシェルスクリプト内で記述しているのでそこで完結させたいのだが、外部サーバのログイン情報を共有サーバに保存しておいておくのはとてもイヤ。だからやむなく外部サーバから共有サーバをつつくことになる。今回はFTPにした(しかも非暗号化・・・)。FTPSでコマンドラインでのアクセス方法がわからなかったので仕方なかった。

もうひとつの方法として、共有サーバで圧縮したファイルの保存先を共有SSL領域にしておいて、そこに対して外部サーバからwgetというのも考えた。これでベーシック認証かけてIPアドレスではじいておけば、こちらのほうがベターかも知れない。それはそれで今後の課題とする。

何はともあれ、root権有りサーバも、root権無しサーバも、自動バックアップが出来るようになった。あとは・・・もうちょっと手を加えれば完了。

いつの間にか外部キー制約が可能に

2011/04/11 | SQLite

普段はあまり使わないSQLiteだったけど、最近ちょっとしたデータ格納手段として使っている(SQLでデータの検索ができるのが便利)。HTML5ではローカルの保存領域として使えるようになったということもあり、これからはSQLiteを使う機会が増えるのは間違いなさそう。

で、SQLiteの外部キー制約。以前は使えなかった(というか定義しても無意味だった)はずだが、3.6.19から使えるようになったとのこと(2009年10月リリースって・・・気づかなさすぎ・・・)。

FireFoxのアドオンSQLite Managerで確認してみた。サーバ上でPHPで作られたSQLiteデータベースをダウンロードして確認。

PRAGMA foreign_keys;

0

どうやらデフォルトでは対応していないらしい。そこで以下のコマンド。

PRAGMA foreign_keys=ON;
PRAGMA foreign_keys;

1

おぉ、これで使えるようになったらしい。

でも、phpinfo()で調べてみると、サーバのPHPで使用しているSQLiteのライブラリのバージョンは3.3.6となっていた。OSはCentOS5.5。標準のRPMパッケージではNGなようだ。うちで借りているVPSやら専用サーバやらは基本的に全てCentOSで、パッケージ管理はyum、標準のリポジトリに頼っている。つまり・・・使えないってことか。あ、共有サーバなら対応してるかも・・・。

PostgreSQLのバックアップ

2011/04/10 | PostgreSQL

PostgreSQLの自動バックアップのメモ。

PostgreSQLのバックアップ用ユーザを追加しておく(Linuxユーザをbackupとして作っておいて同じ名前にする)。その際superuser権限を与えておく。ユーザ作成はpostgresになってから。

createuser backup

pg_hba.confでbackupユーザをlocalhostからパスワードなしでログイン出来るよう設定する。具体的には以下の行を追加する。

local all backup trust

これで以下のコマンドでバックアップできるようになる。

pg_dumpall -U backup > dump.sql

MySQLのバックアップ

2011/04/09 | MySQL

MySQLのバックアップも自動化してしまいたい。ということで、まずbackupユーザに権限を与え、パスワードなしでログイン出来るようにする。ちょっと危険なような気もするが・・・。MySQLのバックアップには、全ての特権を与える必要はない。今回は以下のように特権を与えた。

grant FILE, SELECT, LOCK TABLES, SHOW VIEW, RELOAD on *.* to backup@localhost;

localhostからのアクセスだけ。ということでご容赦願おう。でもって、実際のバックアップコマンドはこちら。

mysqldump -u backup -x –all-databases > all.dump.sql

-xオプションは全データベースをロックという意味。

実際には、パイプ処理でtarに渡し、さらにgzipして・・・最後はリモートサーバへsshで転送。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net