オープンソースカンファレンス 2013 Tokyo/Spring での講演。研究所名義だけどほとんど友の会の内容。ビジネス版コマンドを少し使用。
若干それますが、あまりに対応するのもどうかと思いますが、ディレクターや顧客が「あのデータ手が滑って削除にしちゃったんだけど、やっぱり戻せない??」っていうのを無視するのはどうかと思いますし、開発時とか運用当初はいまいち要件も定まっていないことが多いはずなので、そういう観点からもしっかりそのほかの手法も組み合わせるべきですよね? 実際の組み合わせ 運用状況に応じて以下のように組み合わせるのが一般的ではないでしょうか? [Web型]mysqldump系 + bin-log + レプリケーション [Web型]mysqldump系 + レプリケーション [どうでもいい系,α版]mysqldump系 + bin-log [バッチシステム]mysqldump系 バッチの場合は楽ですね。で、今回はたいしてお金ないんだけど、まぁしっかりバックアップっぽいことをやりたいケースへの対応として最低限の「mysq
久々にXtraBackupの話題です。 以前に紹介した基本手順では、tarアーカイブをgzip圧縮していました。 実はこれよりもっと速い方法がありまして、データサイズが大きくなると必須になってくるのではないかと思います。その、計測内容と結果について紹介していきたいと思います。 リンク 本件に関係ありそうなドキュメントのリンクになります。 The xtrabackup Option Reference Streaming and Compressing Backups The xbstream Binary Accelerating with –parallel copy and –compress-threads Making a Compressed Backup (qpress) 本家ブログのベンチマークもあります。 Compression for InnoDB backup – My
XtraBackupシリーズで今回はテーブル単位のデータ抽出&リストアです。 通常は全データベースを対象としますが、テスト用とかで部分的に本番データが欲しい時などに利用できます。用意されている2種類の方法を紹介します。 利用条件 どちらの方法も、バックアップ/リストアの両サーバにおいて innodb_file_per_table 設定が有効な必要があります。 部分的なバックアップ Partial Backups より。 正規表現指定 –tables 通常のバックアップと基本は同じで、–tables オプションを指定することで特定のテーブルのみを抽出できます。この例では sbtestデータベースの、test* テーブルのみ取り出しており、sbtestテーブルがスキップされていることがわかります。 # xtrabackup --backup --datadir=/fio/mysql/ --ta
PerconaといえばXtraBackup!! といっても過言ではないこの機能。 バックアップ手法はいくつかあれど、少なくともmysqldumpを使うくらいならXtraBackupを使っとけばいいと思います。手始めに、簡単な使い方から紹介していきます。 はじめに インストールについては前にまとめてあり、単にパッケージインストールするだけになっています。 バージョンは必ず最新を使ってください。だいぶ安定してきたとはいえ、バグフィックスは常にされており、特に v2.0.0 では8GBを超えるデータの際にエラーが起こるため、修正されています(参照:Announcing Percona XtraBackup 2.0.1)。 XtraBackupはmysqldumpと比べると、バックアップ作成速度が遅くなったり、データ容量が大きくなったりする場合がありますが、その代わりに以下のようなメリットがありま
チームでgitを使うときは個人の公開リポジトリから適宜pullする、なんてことはせずにsvnのように中央集権的なbareリポジトリを作ることになると思います。 で、そのリポジトリが吹っ飛んだときとかは、分散型の特性を生かして個人のリポジトリをドラゴンボールみたいに寄せ集めて願い事を唱えながらmergeをしてbareリポジトリを蘇らせるというナメック式バックアップを取ることもできますが、やはりここは宇宙人のなかでもダントツでかしこいとされる地球人らしさを見せておきたいわけであります。 というわけでbareリポジトリのバックアップをとりたいのです。 ベタにrsyncとかscpでリポジトリまるごと日次バックアップというのもいいのですが、その場合バックアップ時刻からリポジトリが吹っ飛んだ瞬間の間にpushされていた変更は失われてしまうわけです。失われた分をわざわざpushするのは地球人らしくありま
XtraBackupとは Percona社 が開発しているオープンソースのMySQLのバックアップツールです。InnoDB, XtraDBとMyISAMストレージエンジンをブロックすることなくバックアップをする事が出来ます。ライセンスはGPLv2で無料で使えます。 MySQLのバックアップ方法としてよく使われているmysqldumpというツールが有りますが、 大量のデータを保存しているデータベースからダンプしたデータをリストア(復旧)する時に非常に時間が掛かってしまうという欠点があります。 ここでは、mysqldumpとXtraBackupを使ってバックアップを取り、両者のバックアップとリストアのスピードの違いを比較してみます。 使用するサーバは以下の通りです サーバ さくらのクラウド プラン8 CPU仮想4コア メモリ24GB HDD100GB OS CentOS 5.7 64bit M
「ニフティクラウドユーザーブログ」は、移転しました。 自動でページを移動しない場合は、下記のリンクをクリックし、 新しい「ニフティクラウドユーザーブログ」をご覧ください。 今後とも「ニフティクラウドユーザーブログ」をよろしくお願いいたします。 > ニフティクラウドユーザーブログ
xtrabackupにはinnobackupexというラッパースクリプトが付属していて、MySQLのプロセスを止めることなくバックアップを取れて便利なんですが、innobackupexでバックアップ取ると以下の点が不満だったりする。 --slave-infoで生成されるCHANGE MASTER文が不完全なのでslaveの複製が面倒 InnoDBとMyISAMのファイルしかバックアップされない tritonnでsennaのインデックスファイルがバックアップされなくて困る そこで、innobackupexはPerlで書かれてるので直接書き換えてmaster.infoとsennaのインデックスファイルも一緒にバックアップするようにしたらslave簡単に複製できるようになって便利ですよ!
MySQLのslaveサーバからcronで一日一回ダンプファイルを取得してて、 そのダンプファイルを使ってどこかのサーバにリストアした場合、 新しくレプリケーションを開始する際に発行するCHANGE MASTER TOコマンドは一体何を指定したらいいんだろう? 例えばmasterサーバでダンプを取得する場合、mysqldumpコマンドのオプションとして 「--master-data=2」を指定してやると、dumpファイル中にCHANGE MASTERコマンドが付加される。 これは非常に便利なんだけど、あくまでshow master statusの値を取っているので slaveサーバでこれつけてもまったく意味がない。 slaveでダンプとるときも、こんな便利オプションないかなーと思ってたんですが、 MySQL 5.5から--dump-slaveってのが追加されるようです。 --dump-sl
Amazon S3 は利用量の上限がないですし、費用も割と安いので、バックアップ用のオンラインストレージとしては結構便利だと思います。SCP などの今まで使い慣れていたデータ転送の仕組みを使えないのが少し面倒に感じるかもしれませんが、それもシェルスクリプトなどで一度自動化してしまえば問題ありません。S3 へのデータ転送にはRuby 製のs3sync を使っていますが、これに関しては他に詳しい記事がございますのでそちらを参照してください。 S3sync について S3Sync.net - S3Sync Wiki Amazon EC2/S3を使ってみた - 8.EC2とS3のデータを同期させる(S3Syncを使う) バックアップを自動化 基本的に直近2ヶ月間は毎時バックアップを残し、それ以前は月初のデータだけ永続的に残すというポリシーで運用しようと思いますので、今回は以下の作業を自動化しました
を考えてみました。どうでしょう。 サービスは止めずに(だいたい)整合性のあるスナップショットを取ります。 そもそも分散DBだから厳密なのは難しいんですよね? 各サーバの時計はほとんどずれていない前提。 全体バックアップ [スナップショット時刻]を設定してdeploy put/delete時に updated_at < [スナップショット時刻] かつ [スナップショット時刻] <= 現時刻 なら [変更前のEntity]をシリアライズして保存する(Entity内でも別Entityでも。子にすればいいかも) [全Entity]をダウンロード [スナップショット時刻]の設定を解除してdeploy 保存しておいた[変更前のEntity]をダウンロード [全Entity]+[変更前のEntity]から「updated_at < [スナップショット時刻]」なデータを抽出 差分バックアップ 『[全Ent
2009/11/05追記ひがさんより指摘を頂いて、30秒制限に関する補足を本文中に青字で追記しました。いつもありがとうございます、助かります>ひがさん ここから本文 タイトルの処理について、いくつかノウハウを書いておきます。ポイントは以下の2点。 全てのエンティティにスキーマバージョンを保持する ローカル環境からデプロイ環境へ直結してバッチ処理を実行する事で、30秒制限なんて無視してしまう 実例をもとに説明してみます。最近、appengine java night用のまとめページとかに使おうとしているサイトを運営していて、そこに「TwitterでAppEngine関連についてつぶやかれた内容を収集する」という機能を実装しました。しかし、つぶやきを保存する際の投稿者の情報として「Name」を保持しているものの「ScreenName」を保持しておらず、投稿者のタイムラインページへのリンクを作成
スナップショットを使えばとある瞬間のディスクやファイルシステムのデータをいつでも後から参照することができる。しかもスナップショットの作成は一瞬だ。スナップショット機能を活用すれば最強のオンラインバックアップソリューションが出来るだろう。 しかし、スナップショットでバックアップを取るなんて危険な操作じゃないのか?!と不安に思われる方もいらっしゃるかも知れない。MySQL Serverが稼働中にいきなりデータだけをとってくるのだから、そのような疑問を持たれるのは頷ける。しかし仕組みさえ分かればスナップショットによるバックアップは怖くないということが分かるはずだ。そこで、まずはスナップショットによるバックアップの仕組みについて説明する。スナップショットを取る際の要件は次の通りである。 全てのデータを単一のボリュームに置くこと。つまり、一回のスナップショット操作でバックアップが取れることだ。 ディ
Tritonn のホットバックアップ環境を構築しようと思って調査。結論から言うと 漢(オトコ)のコンピュータ道: MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup の「MyISAMをスナップショットでバックアップ」でよさそう。 確認したこととしては、 Tritonn の全文検索データは FLUSH TABLES しても fsync されない つまり sync (1) の呼び出しが必須 linux の場合 sync (1) は1回呼べば十分だと man に書いてある POSIX 的には何回呼んでも書き込みが完了してる保証はない ってあたり。実際に、FLUSH TABLES WITH READ LOCK して sync 3回呼んでから LVM snapshot とって、myisamchk と sennachk してみたけど、myisamchk
2009年06月11日00:17 MySQL DBをバックアップからリカバリする手順 DBが壊れたときに、バックアップを使ってリカバリする手順を考えてみました。こんな感じでいけるかな〜っと。実際には試して無いんですけどね。。。 前提条件 ・レプリケーションについては考慮していない。あくまでも1台のリストアのみ ・mysqldumpを使って、毎週日曜午前1時にオンラインバックアップを取っている ・バイナリログを保存するようにしている(my.cnf に log-bin の指定がある) ん?バックアップなんてしてないよって人はまさかいないだろうね・・いやまさk ( ゚д゚)エ??シテナイノ?? (( ;゚д゚))アワワワワ (((( ;゚Д゚)))ガクガクブルブル (((((((( ;゚Д゚)))))))ガクガクブルブルガタガタブルガタガクガクガクガクガク 本当
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く