Home > ソフトウェア

ソフトウェア Archive

Windows 7 先行予約キャンペーン中(7月5日まで)

規定数販売次第終了らしいですが。

Windows 7 オンライン先行予約

対象はHome PremiumとProfessionalのアップグレード版のみ。ちなみにエディション比較はこちら

圧倒的に安いので、エディションにそこまでこだわりない人はHome Premiumとか買っておくといいんじゃないでしょうか。あ、仕事PCとか、XP mode使いたい場合はProfessionalか。

個人的にはリストア結構するのと、結構暗号化とかバックアップ系使ったりすることがあるのでエディションも決めかねてるし、x64通常版DSPのどれか、って感じなので今回はスルーかなぁ。

CentOS5インストール時にソフトウェアRAID1構築

絵描きすぎでこっちがお留守に。

先日Atom 330マザーで1台組んだことは書きましたが、気軽に自宅サーバにエントリーしやすい、ACアダプタなど静音なベアボーンとかキューブはHDD2台積めない(電源も少ないし)。ってコトで、PCIスロット1基搭載で、拡張カード次第で多少何とかなるD945GCLF2を使って構築。(よーするにShuttle X27の不満点を何とかしたかったワケだ、特にCPUと耐障害性)

当初の予定ではRAIDカード差して、とやるつもりだったんですが(SATAポートが2つなので、光学ドライブ積むとポートが足りなくなるから)、前からソフトウェアRAIDを試したかったし、安いRAIDカード使うのって信頼性的に結局どうなの?というコトで、とりあえず不満が出たらRAIDカードを買うことにして、ソフトウェアRAID採用。mdadmでRAIDを組みます。

ここでSATA光学ドライブを使うとポートが足りないのですが、IDEもちゃんとあるので、あえて光学ドライブをIDE、HDDをSATAに接続。

今回は組むところからだったので、インストール時のAnacondaでのRAID1構築になります。

SSがないのでアレですが、OSインストール先ドライブ選択画面で、「パーティション割り当て詳細を表示(細かい文句は忘れた)」にチェックしておくと、自動で割り当てられたパーティションの状態が表示されます。が、ここではRAID用に構築しなおすので、リセットを押して一旦クリア。手動でパーティションを作っていきます。

基本的には

  • 必要なパーティションを片方のディスクに作る
  • 同じ容量や構成でもう一方にも作る
  • 「RAID」ボタンでミラーするパーティションの対応づけを行う

という感じになります。とりあえず、今回は必要最小限のものだけ作るので、/boot と swap と / 領域だけ作成することにします。bootは100MB、swapは物理メモリの倍とる、残りをすべて/という基本構成で。ディスクはSATAなので、sda、sdbとします。

  1. まず「新規」でパーティションを作成します。各パーティションの役割はRAIDボリュームが出来てから決めていくので、マウントポイントは空欄のまま、ファイルシステムタイプでsoftware RAIDを選択します。
    使用可能なドライブではsdaだけにチェックを入れます。
    最初の領域を/bootにするので、ここでは容量を100MB、容量オプションで固定容量を選択。「プライマリパーティションにする」チェックを忘れないでください。OKで元の画面に戻ると領域が作成されています。
  2. 同様に新規→software RAID→sdaのみを選択→搭載メモリの倍の容量(1GBなら2048と入力)を入力、固定容量を選択。
    ここはswap領域なので、「プライマリパーティションにする」のチェックは外しておいてください。
  3. 同様に新規→software RAID→sdaのみを選択→容量を飛ばし、容量オプションで「最大許容量まで使用」を選択→「プライマリパーティションにする」は外す。これで、残りの領域がすべて/に割り当てられ、sda側の設定が終了します。
  4. 1~3と同じことを、「使用可能なドライブ」のチェックをsdaでなくsdbに読み替えて行います(つまりsdbにもsdaとまったく同じパーティション構成をつくる)。
  5. 最後にRAIDボタンをクリックし、「RAIDデバイスを作成」を選択。ここで、パーティション同士のミラーボリュームを組んでいきます。
    ここでマウントポイントに/boot、ファイルシステムはお好きなの…普通はext3を選択。RAIDデバイスでmd0を選択、RAIDレベル1を選択。
    sda1とsdb1が、それぞれboot用に確保された容量100MBの領域になっているハズですので、この二つにチェックを入れます。スペア数は0のままで。OKを押すとRAIDボリュームが作成されます。
  6. これを、swap、/でも行っていきます。
    マウントポイントやファイルシステムは作成する環境によって変わってきますが、5でやったのと同様に設定し、パーティションが1つ増えるごとにRAIDデバイスをmd1、md2と増やしていきます(これがOSが認識する実際のデバイス名になります)。もっと細かくパーティションを区切っている場合でも、基本的に作業は同じことを繰り返していく形になります。

後は通常のインストールと変わりません。インストールが終了したら再起動します。

この後、OS起動後、ミラーボリュームがビルドされるまで、暫くmdadmのシンク作業が続きます(topなどで見ると激しく動いています)。どのくらい時間が掛かるかはマシンパワーや容量によりますが、ミラーボリュームの構築が終わるまではしばらく負荷の掛かった状態が続きます。
ちなみにAtom330、メモリ1GBでやった自分の場合では、Load Averageが1.5程度の状態が続いていた感じです(ずっと見ていたワケではないですが)。構築が終了すると、Load Averageは通常に戻ります。インストール後、すぐヘビーに使い倒せるワケではないのでご注意を。

CPUとSATAの性質上、アクセスや負荷が高めの場合は結構IO時にCPUパワーを食うので、余裕を持って運用したい方には、省電力CPU+ソフトウェアRAID(しかもSATA)は正直オススメできませんのでご注意を。自分の場合はそんなに負荷がかかる用途もなかったので…。Atom 220とかだと若干キツイかも?しれないですね。

ちなみに思いついただけでやってはいませんが、eSATAカードを挿すなりなんなりして、スマートなAtomベアボーンの外にハードディスクケースに入れたHDD(電源容量によってはACアダプタがほしいところ)をつないでおいてソフトウェアRAIDを組んでしまう、というのも手軽かな、と。静かな上に手軽だし。

あーあと、パーツ探し中に、ACアダプタ180W出力、2系統接続して360Wまで対応できる製品がありました。静音にACアダプタ電源はかなりオススメ(Shuttle X27で経験済み)なのですが、電源容量に不満がある人でもこれだけ容量があれば、ACアダプタという選択肢が広がるのはイイですね。

しばらくWACOM BAMBOO CTE-650+SAIで作業した感想

明日早朝出勤。まさに1個前の投稿と同じ状況になろうとしております。デジャヴュ。

さて

ペンタブ買ってから結構楽しくて何枚も描いたりしてんですが、絵って描くときに想像する≒頭使うから、いらんコト考えないで純粋に楽しいです(慣れてくると簡単な塗り中とかは考え事してたりするんだけど)。「絵描けたらいいなぁ」という人は結構多いと思うのですが、安いペンタブなら1万以下で買えるし、割とオススメ。

最初は実際に絵が描かれる場所と手を動かす場所が違うってんで、上手く描けんのかねぇ?的半信半疑でしたが、慣れてくると鉛筆ツールでもエアブラシでも筆でも、割と自然な感覚でゴリゴリ描いたり塗ったりしてます。おぁコレすごくね?発明した人すごくね?

最初は「タッチが自然だ」とか「最初にいいの買っといたほうがよくね?」みたいな評価を見てたので、intuos4買おうかと思ってましたが、師匠(…と、一方的に呼んでる、絵の上手い20前後の人。好きな画風なのでよく参考にさせては貰ってるけど、さっぱり赤の他人)が超劣悪環境&BAMBOOで貴様はプロか的な絵を描いてたのでBAMBOOにしました。なんつーか、元々上手い人がintuos使うのはいいんだろうけど、絵自体ヘタなら当分は安い方で事足りるっつーことですな。
実際、BAMBOO+SAI(ペンタブレットに特化して描きやすさを追求したソフト。下のらくがきもそれで描いた)はかなり作業がしやすいです。背景切り取りにPhotoshop Elements使うくらいです。あ、でも背景描くのにちょっとPhotoshop欲しい。ガキじゃあるめえし、そろそろ買ってもいいのかなPhotoshop…とか思う今日この頃。

らくがき
サンプルらくがき。絵じゃなくて素人でも線とか塗りとかこんな感じで出来るってのを見てってば

あ。でも、見てもらってんの意識した方が上達早いだろう理論で、結構見てもらったりしてます。絵によって、こうやって塗りとか線とか変えていけばいいんだねぇ~とか、描くたびに思うこと色々ありです。

iPhone Developer Program登録がやっと終わった

2バイトコード圏では高確率でアクティベーションが失敗しやがることで有名なIDPですが、やっと終わりました。ホントさ~、タダでさえ年1万円ほど取っとるんだから、そのへんのシステム整備はちゃんとやってほしい。(アクティベーションメール→エラーは去年のブログ記事とかでもずっと言われてるコトだし)

ちなみにキーチェーンで証明書作ってUPしてAppleからDLして(以下略)的なことをするのに非常に苦労をされている方が多いようですが、そうした人たちが提供して下さる情報のお蔭で、数時間も悩むことなく終わり、何はともあれ適当なサンプルコードを実機で動かすことができました。問題は、自分の能力が追いついてないことですが… orz

Appleとかソニーとか、特に昔のMicrosoft(IE4あたりか)とか、露骨にユーザー無視な囲い込みをする企業は「…ん~、それって長期的に見たら損じゃないの?」と思ってしまう。まーうまくやればうま味もデカイのが囲い込みですが、ソニーもウォークマンとかMDで味しめちゃったんだろうねぇ。ATRACとかUMD(あってる?)とかメモリースティックとか、もう明らかにどこも採用しないんだから、自社のファンを解放してやれよ、と思うような状態になってもやめないしね。

その中では慎重なAppleだけど、iPhone OS 3.0でやっとコピペ解禁ですよ。まあメジャーアップデートだけあって色々目玉はあるけど、コピペできるようになったことが目玉なOSってなんだって話ですよ。慎重なのはいいけど、ガチガチの状態でリリースして、徐々に緩和していくのはホント初期ユーザーがえらい目に遭うからなんとかしてほしい。

まあ、それでも売れるような、魅力的なもん作ってるから儲かってんだろうけどね(Appleの製品はわりと好きだが商売は巧いけどあまり好きじゃない)。

まー愚痴はともかく、ゆっくりやっていくかなぁ。OS3も楽しみだし。

外部アクセス可能なSVNをsubversionで

会社にゃもうリポジトリあるからね、なかなか新規に立てんのは体験できないよね、自分でやらないと。まあ移行実験でtrac入れたことはあるんだけれども、ローカル用だからSSLとかナシだったし。

とりあえず認証、暗号化、EclipseのSVNプラグインからコミット・更新確認。良きかな。

参考にしたのはSORENARI-WIKIさんですね。今回は外部のサーバにやったので、opensslとかApacheのSVN用コンパイルオプションとか、subversionの設定とかまで一通り説明があったのでやりやすかったです。外部にSVNが必要な方にはオススメかと。

あと、今回使ったサーバー、CentOSだけど最小構成でyumが無かったんですが、依存関係でパッケージ入れるのには便利だけど、ぶっちゃけ用途的にはほとんど要らなかったです。yum入れるのも割と面倒臭いので、必要なパッケージはCentOSのページ行ってパッケージ落としてきたらいいと思う。(どうしてもyumがないと…という方はnotizblock+さんが素敵)

rpmとかyumとか便利なんだけど、結局基本的な用途以外ではソースコンパイルが必要になってくるし、あまり依存しすぎるのもアレですね。

成功経験に依存しすぎると「新しいモノ」は作れない

最近どういうモノがウケるんだろう?という市場調査的な意味も込めてApp Storeを覗いたら、Zen Bound(※iTunesが開きます)というゲームが人気のようだ。

既存のスキームを超えたものなので、ジャンルとかどういうゲームだ、というのを言葉で表すのは難しいし、自分も実際にやってみるまではレビューを読んでもよくわからなかった。SSもたくさん紹介しておられるので、未購入の方は「AppBank:Zen Bound:待ちわびた、木を縛るiPhone緊縛プレイ。Ghost Monkeyの音楽で時間が消える。136」を参考にされると購入の参考になりやすいかな?とご紹介してみる。

評価も多くて高いので迷わず買ってみたが、やはりこれだけの市場の中で世界中に支持されるモノは、やはり「ゲームってこうでなくては」というようなジャンルとか、そういった前提となるセオリーを壊してるからこそ≒代わりになるものが他にない、創造性の高いジャンルだからこそ成功したのだろうなぁ、とつくづく思わされた。

余談ですが、ウチの会社は朝礼があるのですが、丁度当番だったので、このアプリの例を紹介して「セオリーも大事だが、その枠にとらわれないことも大事だ」というような事を言ったんですけどね。終了直後、「セオリーを踏襲した上で、その上でやらなきゃダメだよね」とマネジメントクラス二人が言ってるのが聞こえた。

下っ端の俺が思うのもなんだけど、そこが“一線”なんじゃないのかよ、と。

セオリー、定石というのは、成功経験の蓄積によって出来たものだ。だから普通はセオリーを踏襲するのが当然だ。しかし、IT業界は変わりのものがいくらでもある。成功するには、他にないオリジナリティがないと難しくなってきている。参入障壁は低いが、その分競合するものも多いからだ。

特に新規コンテンツ企画といったものは、既存のスキームに縛られた時点でアウトだ。そんなものはたぶん競合他社も作ってるだろう。ヒット作のせいで、続編でそこから抜け出せずに失敗する映画やゲームのよくあるパターンと同じだ。また、自分が成功してなくても、他人の成功談を本やなんかで読んで、それを盲信してしまう人も同様。

経済ニュースを斜め読みでもしてれば誰でも分かることだが、「ニーズ」は粗方汲み尽くされて、新しいこと・誰もやったことないことを、顧客ニーズから引っ張る以前にこちらから新しい価値として提案しよう、というタームに入っている。セオリーにとらわれた時点で終わりだ。
本当に創造力の高い人は大抵、まず作りたいもの、やりたいことをとりあえず考えてしまってから、それは可能か・やってもいいことか・穴はないか、などといった、要は現実問題を考える。一般人の我々には難しいことだが、それを知りつつも尚、最初に制限という枠組みを設けた上で、そのサンドボックスに自ら入り込んでしまった時点で、「安全だけど、最初に作った砂場のサイズを越えるもの」は絶対に作れない。より矮小なものしか作れない。実現は難しくとも、学ぶことは出来るハズだ。

セオリー通りの企業がGoogleになりえたか?むしろGoogleがセオリーをつくったではないか。Appleもそうだし、Twitterはじめ、これまでになかったものを作り出した者はみんな「自分がセオリーを作り出してきた」

上に書いたように、Webコンテンツ業界という競合の激しい業種にいる時点で、もう「ウチはもっと穏便にやります」は通用しない。否応なく世界中との競争に巻き込まれる。だからこそスピード感と創造力の双方が欠かせないのではないのか。

まあ、後輩が間違ってると思うなら、面と向かって「それは違う」と言えない時点でまずマネジメントとして失格だね。マネジメントしてないんだから。
また、チャレンジャブルな企画提案を同氏に持ちかけたら「そんな甘いことは無理」と言っていた割に、更に上の上司を通して話してもらった途端、肯定に変わった。何をマネジメントしてるんですか?
本当に有能だと思う上司は、きちんと「下の子と話してるけど、やっぱり下も細かいところをちゃんと見てるんだなと思う」と言ってますね。下の我々からも学ぶところがある、と言われたほうが、遥かにその人の下で働きたいと思いませんか?

自分が正しいかどうかは分かりませんけどね。しかし、少なくとも自分の考えは「絶対間違う」ことを前提としているので、常に自己批判しながらやっていくしかないな、といったところでしょうか。

オブジェクト指向・MVC習得向き言語とフレームワークはどれだろう?

…あ、Objective-Cはやりますよ?やるけどこっちは趣味だから。

自分は今んとこサーバーとかネットワーク周りの仕事がほとんどなので、たまぁにプログラム書いてもPerlで簡単なスクリプト書いてcronで回すとかそんなもんですが、時々ちゃんとMVCとかオブジェクト指向を今のウチに習得しとかんと、年くったら吸収悪くなんぞ?という危機感はあります。

Perlで先に進むのも一つの選択肢ですが、悲しいかなOOPやWebアプリケーション開発という時流を汲んで開発(または拡張)された後続言語からすれば、Perlの実装は特殊すぎて他に使い回せねぇじゃねーか、と思うところはなくもない。こないだ少し大きめの社内用アプリをWebベースで書いてたらキレそうになった。まあ、packageの使い方がダメダメだとか能力的なものはあるけど、少なくとも素人が書いたらどうしようもなくなる言語は、そこそこの人が書いても規模が大きくなったときにほころびがより出やすいんじゃないだろうか。

もちろん、mixiなどもmod_perlで書かれてますし、キチンとコーディングルールを作った上でpackageやライブラリ化などを適切に使えるならそれでもOKなのでしょうが、それが出来ないレベルの素人(=自分)にはしんどいです、正直。フレームワークも…なぁ。

んなワケで。会社で使ってるから?という理由で同じ言語やフレームワークを使ってもイイのですが、OOPに向いてる言語、可能だけど不向きな言語とかはよく聞きますよね。ruby on railsはものすごく賞賛されていますが、概念自体はいろんな言語に取り入れられたけど、rubyで開発された大規模なシステムって(あるんだろうけど)そういえば聞かない。実行速度やソース行数(記述)などを考えると、かなり大規模なシステムでは、むしろPython使ったりとかいうケースが多いらしい。

JAVAはよくオブジェクト指向という言葉と同時に出てきたりしますが、周囲にJAVA使いがまったくいないし、故にTomcatをわざわざ入れることもないので使いません(ちょっとだけ書いてみたことはある…触りだけね)。Webアプリ+フレームワークで気軽に覚えられることを考えると、やはりLAMPでフレームワークをどうするか、って感じが一番ラクなのかねぇ(基本的に概念を掴むことが目的なので、資料が豊富な言語であればいいし)。

じゃ、フレームワークは?会社で使ってるヤツは、特性と目的が決まってて選んでるだけなので、世間的にはマイナーで資料もホントに少ない。Zend Frameworkとか、cakePHPとか、Symfonyは本屋でよく見ますね。そのへんはホント素人なのでPHPプロを見てみると、…。どうなんだろう。symfony、自動生成部分が多いということは、少なくとも初心者があまり考えずに書いても、ViewにActionほとんど書いてしまったり、ということは少ないんじゃないか、と思うのだが…。実行速度で劣るようだが、書きやすさや安定性を重視した結果そうなっているのなら、実務は知らんが学習にはいいんじゃなかろうか…。

以前、symfonyのデモ動画を見たら、WebアプリケーションのクセにデスクトップのIDE並みにサクサクブログとかを実装してて驚いた記憶があります。んー、ちーと入れてみたりするかなぁ。

Objective-Cを覚えたい

iPhoneアプリを開発したいのだがなぁ。

資料がまだ少ないのと、手続き型プログラムしか書かないのと、そもそも私の頭が残念な頭なのでなかなか先に進めません。

そんな中でも少しずつ資料を買い足したりしつつ、こうして覚えていくのがいいのかな、と思ったところを書いてみようと思います。
すんなり覚えちゃった人には戯言ですが、同じような状況の人には役立つところがあるかも知れません。
「プログラムとかよくわかんないけどiPhoneアプリつくりてぇ」という人がイキナリ「詳解 Objective-C」とか、Apple公式ドキュメントにいくと、まず挫折すると思う。

  • なんかプログラム書いた経験があったほうがいいし、ないなら書いてみるといい。手続き型でいいから。今からどうせやるなら、Objective-Cにも生かせるCとか。最近は解説書も易しいし多いし大丈夫。ひとつ言語をやってれば、大抵の言語では基本的な要素は共通してるから、他の言語でもOK。でも、難しいところまで覚えなくていい。
  • 基本的なプログラミングを覚えたら、次はオブジェクト指向でプログラムを書いてみるとか、書き直してみる。もし慣れた言語があるなら、それで覚えるといいと思う。本とかで意味や概念を知ってても、普段オブジェクト指向で実際にコード書いてみないと理解できない
    ただ、オブジェクト指向に弱い言語もあるから注意。最初にCから入ったなら、せっかくだしそのままObjective-Cにいってもいいかも(ネット上探せば資料あるし)。Javaとかやってる人はいいですよね。
  • Xcodeとか、Cocoa Touchはその後使い方覚えればいいと思う。一緒に解説してるのはどうも言語の解説が薄くなりがちだし、そもそもこれらを使いはじめるのは、オブジェクト指向プログラムを書き始めるよりも何倍もとっつきやすい。あとは、複雑な機能は順々に覚えていけると思います。

んな感じかなぁ。
オブジェクト指向ってとっつきにくいんですよね。大概の高級言語は書き方やクセに違いはあれど、基本的な構文とかはそんなに大差ないし、次の言語へのつなぎとして覚えるだけならそんなに難しくはない(プログラムで難しいのは言語そのものじゃなくて、処理とかだから)。
でも、オブジェクト指向は言語を覚えた上で、現実にはない独特の概念に沿ってプログラムを書くと色々いいですよー、というメソッドなので、いきなり言語すっとばしても覚えられないと思う。普通の人は。だから別に集中してやったほうがいいと思う。

あとは

  • コードは実際に書いて動かす(とりあえず写すだけでも何となく『ココでこうしてるんだ』と気づいたりすることもあるし、何より書かないと覚えられない)
  • 本や資料はケチらない。個人的に、1冊でなんとか覚えようとしてわからなくても、同様の本を数冊持っていると、書き方のクセとか表現の仕方が著者によって違うので、わからない部分を読み比べてるうちに分かってきたりすることがあります。
  • 「○○日で分かる」とかはあくまで基礎習得が○○日なだけです。特に、1週間とかでゲームプログラミングとか高度なことやってる本とか、やたら薄い本とかは、大抵大事な部分をすっとばしているだけで、実際にその本だけ読んでゲームが作れる、とかはまずないです。
    本当に覚えたいのなら、そういう本を読んで挫折するよりも、ある程度分厚くて「うわ…」と思うくらいの本のほうがいいです。そのほうが少しずつ進んでいくので、途中でわからなくなることが少ない。

まあ本選びは向き不向きもありますが、最初にどれ買ったらいいかわかんない、というときは、ケチらずに気になった本は数冊買っておくといいと思います。最初に買ったときワケがわからなくても、後でスキルアップしたときにすごく重宝したりするので。

最後に、細かい言語解説とかは他に譲りますが、Objective-CってイキナリXcode上でなんかアプリケーション作りだしたり、とにかくワケわからん資料も多いので、こちらを参考にObjective-C版のHello Worldに、コメントつけてみました。オブジェクト指向がおぼろげに分かりだしたら、上記サイトとあわせて見てもらうと「なんだ簡単じゃん」ってなると思います。

あ、ちなみに私はLinux上でコンパイルしてますが、MaxOS Xのgccコンパイラ(Xcodeの中身みたいなもんなので、ターミナルから使えます)でもできるはず。以下のコードを書いて

gcc ファイル名 -lobjc

とやれば、a.outというファイルができると思います(ファイル名はtest.mとかで)。それを

./a.out

で実行してあげると、文字列が表示されるプログラムです。
Objective-C HelloWorld
んでは、私も含めてがんばって覚えましょう。

MySQL5.0.xのレプリケーション

とりあえず通常のMySQL動作環境の構築まで終了してると仮定しまして。

◆レプリケーション用ユーザー追加
普通のユーザーでやってしまうと、コケたときにレプリケーションが原因なのか、そうでないのか切り分けにくくなります。また、レプリケーションのみのユーザー権限もあります。このあたりは適宜用途に応じて作成してください。

◆DBを停止
MySQLでスナップショットをとるには商用ソリューションが必要になるし割と複雑なようです。今回は停止するほうで。現在まで稼動していたマスタを停止、スレーブのほうも止めておきます。
これは、次のコピー作業が「双方の内容を同一にする」ために行うものなのですが、コピー中に変更があると内容に食い違いが生じるためです。

◆DBの内容をコピー
rsyncなどで、マスタDBのMySQLデータベースをまるごとコピーします(標準なら/var/lib/mysql以下ですな)。DBまるごとレプリケーションする場合は、一旦スレーブ側をカラにしてから

# rsync -a /path/to/dbm /path/to/dbs

でOK。

◆レプリケーション設定
各サーバのmy.confにレプリケーション設定を追加します。マスタ側で必要なのは

log-bin
server-id=100

の2行。上がバイナリログを吐く設定、下がサーバーidです。idはDBサーバー毎にユニークでないといけないので、スレーブ側ではここと被らないように注意。

スレーブ側で必要なのは

server-id=101
slave-skip-errors=1062
skip-slave-start

あたりですかね。
idは前述のとおり、レプリケーションしている他のサーバーと違う番号を振ります。
2行目は「指定した番号のエラーが発生してもスキップしてレプリケーションを続ける」という指定です。通常、エラーが発生するとレプリケーションは停止します。しかし、エラーの内容によっては、システムによっては問題のないものであったり、MySQLのバグであったりします(エラーナンバーのうち幾つかは将来回避される予定だそうですし)。
この場合は公式をそのまま引用すると、

Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY)
Message: ‘%s’ は key %d において重複しています

環境によって異なるので、どれをスキップするかはご自分の環境で検証してください。allも指定可能です。

3行目は、再起動時にレプリケーションを自動的に開始するな、という指定で、これは公式に推奨されているオプションです。DBにエラーが発生・再起動時は、正常にレプリケーションが行われていない可能性があるので、データの食い違いや破損による二次障害が発生しかねないためです。停止した場合はログなどから原因を突き止めた上で問題がなければ手動で再開しましょう…。

◆起動、の前に…
レプリケーション開始設定のためにMySQLサーバの起動が必要なのですが、プログラムやcronなど、DBを更新する可能性のあるものはすべて停止してください。起動後に更新が発生すると、内容が食い違ってしまって再度コピーからやり直しになってしまいます。

確認ができたら、まずマスタのMySQLサーバを再起動し、mysqlコマンドで接続します。ここで

> show master status;

と入力すると、テーブルが表示されて、File、Positionなどが表示されますが、この2つをメモしておいてください。Fileは同期するバイナリログ、Positionはそのログのどこから同期するかの位置を指定するものですので、これが間違っていると失敗する重要なところです。ちなみに更新されるとPositionは変化していくので、上のコマンドを何度か叩いて変化があるようなら、DBを更新するようなプログラムなどが動いてしまっているということになります。その場合はファイルコピーからやり直しになります。

さて、特に問題なければスレーブ側で最後の設定を行います。ここでは上で調べた同期開始位置をスレーブ側にも教えてあげて、レプリケーションを実行します。

> CHANGE MASTER TO MASTER_HOST=’マスタのIPアドレス’, MASTER_USER =’レプリケーション用ユーザ名’, MASTER_PASSWORD=’パスワード’,MASTER_LOG_FILE=’上で調べたファイル名’, MASTER_LOG_POS=上で調べた位置;

この後、

> slave start;

で同期が開始されます。

◆レプリケーションの確認
特にエラーなどが起きなければ、そのままスレーブで

> show slave status\G

と入力し、レプリケーション状況を確認します。エラーなどがなければ同期ができているはずですので、データベースやテーブル、レコードをマスタ側で追加してスレーブ側で確認するなどしてみましょう。また、データが更新されていけば、上記コマンドで確認できる、バイナリログの位置が徐々に変わっていくのが確認できるはずです。

設定だけなら、結構簡単ですね。運用するとなるとまた別ですが…。
とりあえずMRTGやcactiやNagiosなどでリソース監視はしておきましょう。

MacBook購入、色々やりたいことはありますが

久々の更新になりました。
Seagateの対応、いつまで経っても最悪でしたね。HDD不具合は割と多くのHDDメーカーが経験はあるようですが、対応のマズさ的には今後Seagateはないですな。日立HGSTあたりかな、次は。

さて、ブログを放置してる間にアルミモノボディMacBookを買いました。元々パケット監視時とかにささっと持ち運べるノートが欲しいなーと、最初はネットブックを考えてたんですが、iPhoneを切っ掛けに最近のMacやアプリ開発なんかも気になっていたり、今回のアルミモノボディMacBookの出来が評判も良かったということで、折角だからMacにしちゃいました。

MacはOS8.5くらい?Xの最初頃使ってたんですが、ExposeとかDashboardSpotlightTimemachineiLifeはその頃なかったし、MobileMeもまだ.Macがあったくらいで今ほどネットとの連携も盛んではなかったし、iPhoneもなかったし…などなど、久々に使うと新機能ガッツリでなかなか楽しめます。

買った時期的に、手数料のみでiLife ‘09 Up-to-date対象だったのですが、なかなか遊べるなあiLife。iPhotoだけでも、同じ写真なのに見てて面白い(タグづけとかGPSとか顔認識とか、スライドショーのビデオ書き出しとか…)。そのうちiWorkも体験版を試してみたいところです。

しかし、まだMacとなるとウジウジ粘着する人は多いですね。ウチは技術者と、あとなぜかアンチアップルが多いので特にそうなのか?

個人的にはWindowsが一番長くメインで使ってて、仕事はWindowsとLinux。OSの有名どころは大体使ってるワケで(WindowsMobileもPalmOSもZaurusも…BSDも)、むしろ普段からBluetoothキーボードだのLinuxサーバーだの買いまくってるようなハードウェアオタクなわけですよ。
それが話題のiPhoneとついでにMacに手ェ出すという、ハードヲタ的にはごく自然なことをしただけで、急にマカーだアップル信者だゴタゴタわめきだすアンタらこそ、なんかMacとかAppleに過剰反応しすぎじゃないの?と思うワケですが。

…ということが、割とあります。なんなんだあれ。めんどくさいなぁ。

ホーム > ソフトウェア

Search
Link
Feeds
Meta

Return to page top