Archive for the ‘database’ Category

 

kyototycoon dual master & recover by ulog + mysql backup

11月 13th, 2012

http://fallabs.com/blog/promenade.cgi?id=18 dual masterはお互いにreplicationするだけで良いみたい。 ulogのコピーは最後の方法で。 終わり。 mysqlバックアップの話。 http://aws.amazon.com/jp/rds/ > 最大5分前まで、保持期間内の任意の時点に DB インスタンスを復元させることができます。自動バックアップの保持期間は、最大35日間まで設定できます。 13.5.8. InnoDB データベースのバックアップと復旧 http://dev.mysql.com/doc/refman/5.1/ja/innodb-backup.html × mysql enterprise backupってのは商用版でしか使えないそうです。 × mysqlhotcopyはisamのみinnodbではダメ ・停止してバイナリの完全バックアップ ・mysqldump ・バイナリログからの差分復旧 構成は、master – slaveにして、本番参照用slave以外に、 他システムから利用されない予備のslaveを作り、それを定期バックアップすると良い。 この状態であればサーバーを停止して完全なバックアップを取ることもできる。 予備のslaveはデータを直接見たりする管理にも使える。 slaveオプションに、log-bin log-slave-updatesが必要 http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates A -> B -> Cと書いてある部分 log-slave-updatesはAでの更新もBのバイナリログに出力 log-binはBだけのものなのでBでは両方必要 日 ・バイナリバックアップ:そのまま使えるのでリストアが速い。 ・msqldump:バイナリが壊れてる可能性があるので必須 (http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html  slave設定を停止してからdump開始。 mysql> STOP SLAVE SQL_THREAD; mysql> SHOW SLAVE STATUS; //  mysqldump […]

Read full article | コメントは受け付けていません。

mysql memoしようと思ったけど、ソーシャルゲームバックエンド全般メモ

11月 10th, 2012

ある程度想定内だと思うけど、一通り参考資料を確認。 書き込みが多いというところと課金(ポイント)も細かくされるという点(トランザクションで整合性を保ちたい)に注意して考えたいところです。 DeNA mysql ログをパーティションテーブル。 これはかなり重要、確認したかった部分でもある。時限データと永続データをしっかり分ける設計が大切。 http://engineer.dena.jp/2010/11/mysql-for-socialgame.html イベントをテーブル毎にわける考え方が良い。 http://engineer.dena.jp/2011/02/mysql-for-socialgame2.html ソーシャルゲームのためのデータベース設計:そのものずばり http://www.slideshare.net/matsunobu/ss-6584540 ドラゴンコレクション いくつかポイントの設定なども含まれている。5秒ルールなどにも触れている。 http://codezine.jp/article/detail/6336?p=3 2010 GREE ベーシックな解説でわかりやすい。課金部の思考について。 他の最近の記事と比べても見劣りしない思考。 http://codezine.jp/article/detail/5433 2012 ドラゴンクエストX : やってることはみんな同じなんだなという感じで確認用 http://gigazine.net/news/20120824-dragonquest-backstage-cedec2012/ 細かい話は、この他にもいろいろあって参考になる資料も多いので助かりますね。 どのデータをどう保存して行くかの設計が大切みたいです。 * 検討事項 Q4Mか他のキューか、他と言ってもひとつしか検討はしないけどというか 非力サーバーで運用するのにどちらが良いかを確認する。やることは同じなので、システムコストはあまり差はでないと思うけど、開発と運用コスト次第。 * クラウドの話。 やっぱりアマゾンしかないかなという感じ。 時間単価とオートスケール、スケールアップは重要事項か niftyは近い機能が使えるみたいだけど * 関係ない話。 企画、管理と開発で会社が分かれてるケースが多々あるんだなという話をいくつか聞きました。 ソーシャルゲームに限らず、某海外では日本と違って企業がシステム開発部門を持っていることが多いそうで 日本のように開発会社に開発者がまとまってるのとは少し違うようです。 開発者がまとまっている開発会社なら価値は上がって行くはずですが ただの人売りと化したり、安い仕事で潰し合いをしたりよくわからない世界ですね。

Read full article | コメントは受け付けていません。

check signal count ?

10月 5th, 2012

memcached plugableで動かしたのを止めて、みると # kchashmgr inform /var/path/to/queue.kct count: 2 size: 401152 countはsignalのようですね? ログはシリアライズした物の方が復帰しやすい気もするけど。 凄く簡単なゲームを作っているのですが想像したよりゲーム作るの大変です。。。 1週間くらいで作ろうかと思った物が3週間ほどかかりそうです。。。 まぁ1週間は無理ですが、2週間ちょっとならまずまずか・・・独り言。

Read full article | コメントは受け付けていません。

空回りsetをしたので、メモ

10月 2nd, 2012

11,921,801 回 set 7,877 秒 1,513/qpsくらいですね。 他の処理もしてるのでまったく性能比較等には使えませんが 自分の開発環境で、メモリー占有は32Mくらいでこの数字は悪くないですかね

Read full article | コメントは受け付けていません。

kyototycoon /rpc/set で php curl が遅かった原因

9月 26th, 2012

追加問題発生。さてどうする。 apacheを介したときのphp+curlの挙動がおかしい問題です。 このままでは使えないので。。。いろいろ調べた結果 結論からになりますが、curl使うの辞めました〜 fsocketopenで自分でリクエストつくって流すだけです。 複雑な処理は何も無いので一瞬で完成。phpとcurlを弄った時間はムダでした。 速度には何の問題も無いです! colenc=Uの件もphp+curlの問題だったようです。BもUも速いです。 === ↓直ったと思ったら、apacheを介していると挙動が違います。 ↓php+curlのバージョンの問題とか何かの原因のようです。 結論から言うと colenc=U で urlencodeしたデータをpostしていたのが悪かったようで colenc=Bのbase64_encodeにしたら問題なくなりました。 colenc=Uで使ってみたのですが http://fallabs.com/blog-ja/promenade.cgi?id=99 を見直し、作者さんのサンプル通りにcolenc=Bに戻しました。 同じことやってるのにエンコードを変えるとcurlの挙動が変わっているようです。 curlのinfoの数値を colenc=U ["url"]=> string(34) “http://192.168.0.22:50821/rpc/set” ["content_type"]=> string(25) “text/tab-separated-values” ["http_code"]=> int(200) ["header_size"]=> int(144) ["request_size"]=> int(161) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(0) ["redirect_count"]=> int(0) ["total_time"]=> float(1.001801) ["namelookup_time"]=> float(1.9E-5) ["connect_time"]=> float(9.1E-5) ["pretransfer_time"]=> float(9.2E-5) ["size_upload"]=> float(1048) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> […]

Read full article | コメントは受け付けていません。

sqlite autoincrement

9月 13th, 2012

http://www.sqlite.org/autoinc.html のように sqliteはautoincrementですべてのテーブルにROWIDとして自動的に入っているそうです。 ので、primary key autoincrementとしなくても idは ROWID _ROWID_ OIDの3つの名前でアクセスすることが可能 INTEGER PRIMARY KEYでカラムを宣言したらそれは、ROWIDのエイリアス。だそうです。 9223372036854775807 まで増え続けるそうです。

Read full article | コメントは受け付けていません。

php kyototycoon

8月 25th, 2012

ドラクエ10でもkyototycoonを利用しているとのことで 動かないのを上げておくのもなんだなと・・・更新してみました。 https://github.com/junichi-otake/php-kyototycoon colencのところを見るように更新しました。 簡単な動きは利用出来ますので、よかったら参考にしてください。

Read full article | コメントは受け付けていません。

kyototycoon backup

8月 6th, 2012

http://fallabs.com/blog-ja/promenade.cgi?id=108 こちらを参考にbackupコマンドを書いて、syncでコマンド実行を利用してみたいと思います。 ktremotemgr sync [-host str] [-port num] [-tout num] [-swname str] [-swtime num] [-ssname str] [-ssbrd] [-db str] [-hard] [-cmd str] Synchronizes updated contents with the file and the device. コマンドスクリプトの書き方がイマイチわからないけど よくわからないので、同じ構成で試してみる。複数DBも同じなのかな ktremotemgr: DB::synchronize failed: :50321: 5: internal error: DB: 8: logical inconsistency: postprocessing failed よくわからないけどエラー。 コマンドスクリプトに実行権限がないとこのエラーがでるようです。 $ ktremotemgr sync -port 50321 -db item.0.kch […]

Read full article | コメントは受け付けていません。

github.com使ってみた。公開してみた。

7月 18th, 2012

Andreessen Horowitz、GitHubに1億ドルを出資 http://japan.cnet.com/news/business/35019055/ gitは少し使ってきてなれてきたのですが、 OSSなど、いくつかのプロジェクトがgithubで公開されているのを利用させてもらったことはありますが 個人や会社で使う理由はわかりませんが、とりあえず使ってみます。 https://help.github.com/articles/create-a-repo まずは空のリポジトリを作ると説明が出ます。 Global setup: Set up git  git config –global user.name “Your Name”  git config –global user.email junichi.otake@gmail.com Add your public key       Next steps:  mkdir hello  cd hello  git init  touch README  git add README  git commit -m ‘first commit’  git remote add origin git@github.com:junichi-otake/hello.git  git […]

Read full article | コメントは受け付けていません。

kyototycoon get_bulk 複数レコードを処理する。

7月 17th, 2012

[http://fallabs.com/kyototycoon/spex.html] /rpc/get_bulk Retrieve records at once. input: DB: (optional): the database identifier. input: atomic: (optional): to perform all operations atomically. If it is omitted, non-atomic operations are performed. input: (optional): arbitrary keys which trail “_”. output: num: the number of retrieved reocrds. output: (optional): arbitrary keys which trail the character “_”. status code: 200. 配列を渡すようにget_bulk。 […]

Read full article | コメントは受け付けていません。