Skip to content

Initial State

bianchiidentity edited this page Oct 10, 2026 · 1 revision

初期状態と復旧

接続URL・Home · サーバー運用

基準点

initial-stateタグ を性能改善前の基準点として保存した。 タグが指すコミットは f21608b9cac9e1dbc6316561ea10c6f5264cc870。 このサーバーで観測したファイルの保存であり、競技当日の未変更AMIやライブDB全体のバックアップではない。

保存対象

全言語のアプリ、ロックファイル、SQLスキーマ・初期化処理、静的ファイル、 ベンチ・データ生成ソース、ベンチ検証JSONを保存した。 nginx / MySQL / Redis / systemd / sysctl / limits / hostsの設定と、 関連シンボリックリンクの対応、パッケージ・サービス・実効設定も保存している。

初期SQLite 100個と初期SQL 90_data.sql は圧縮して baseline/data/ に48MiB単位で分割。 合計101ファイルの展開後SHA-256一致を確認済み。 個々の設定・除外一覧は リポジトリREADME を参照。

初期データだけを展開する

cd /home/isucon/isucon12
./scripts/restore-initial-data.sh /tmp/isucon12-restore-check

新規ディレクトリを指定する。分割ファイルと展開後のSHA-256を検証し、既存ファイルは上書きしない。 展開先に initial_data/*.db と webapp/sql/admin/90_data.sql が作られる。 このスクリプトはMySQLへの投入やサービス操作を行わない。 /tmp/isucon12-baseline-verify は導入時の検証に使用済みなので、再利用すると上書き拒否になる。

webapp/sql/init.sh は稼働DBを変更する処理。 ベンチから呼ばれる通常の初期化と、保存データからの完全なDB復旧は区別する。 復旧時は対象サーバー、サービス停止、DB投入、所有権、起動後の検証まで確認して進める。

初期ソースや設定を比較する

cd /home/isucon/isucon12
git diff initial-state -- webapp/go
git show initial-state:baseline/config/etc/nginx/sites-available/isuports.conf

baseline/files.sha256 は初期保存ファイルのチェックサム。 改善で変更した作業ツリー全体の検査には使わず、初期タグのクローン・展開を検証するために使う。 hostsやsystemdにはサーバー固有のパスがあるため、別サーバーへ無確認で一括適用しない。

Gitに含まないファイル

SSH / AWS / GitHub認証情報、TLS・JWT秘密鍵、実行ログ、可変のテナントDBを除外した。 blackauth はこのサーバーにソースがなく、バイナリに秘密鍵が埋め込まれていたため除外した。 復旧では元サーバーから安全に引き継ぐか、公式ソースから再構築する。 TLS鍵 /etc/nginx/tls/key.pem とJWT署名鍵も安全な別経路で用意する。

pprotein導入直前のGoバイナリ・main.go・nginxサイト設定は /home/isucon/tools/pprotein/backup/ にローカル保存済み。 初期タグとこのローカルバックアップは用途が異なる。

保存対象を選んだ根拠

Clone this wiki locally