Blog Archives

MySQLのバイナリーログからデータ更新過程を確認したい

CMSなどで同じ記事が何度も更新されたとして、DBにある最終形は別にして、記事が更新された過程を知りたいといことがまれにある。この過程をバイナリーログ(binlog)から復元する方法を RDS MySQL 固有の動きを中心にメモ。 環境は データベースは RDS 版 MySQL(5.6) クライアントは EC2 上の Amazon Linux バイナリーログの用途 バイナリーログはテーブルへの更新を連続的に記録するもので レプリケーション 差分バックアップ/リストア などで利用することが可能。 binlog の中を覗いてみる 次にメインの binlog を覗いてみる。 binlog を確認 MySQL に接続して show binary logs コマンドで確認する。 binlog をローカルに落とす binlog のファイル一覧を確認したところで、binlog ファイルをローカルに落として中身を確認する。 あとはファイル内のレプリケーション用SQLからお目当てのSQLを探し当てれば OK。 リカバリ目的などで生の

Tagged with: ,
Posted in database

AWS CLIを使ってマルチAZなElastiCache Redisのリードレプリカを作成する

ゴール AWS ElastiCache は RDS と同じくマルチ AZ に対応している。 Q: Does Amazon ElastiCache for Redis support Multi-AZ operation? Yes, with Amazon ElastiCache for Redis you can create a read replica in another AWS Availability Zone. Upon a failure of the primary

Tagged with: , , ,
Posted in aws, database

AWS CLIを使ってElasciCache Redisのパラメーターを変更する

通常の Redis では、パラメーターは CONFIG コマンド経由で変更する。 http://redis.io/topics/config 一方で、マネージド・サービスである AWS ElasciCache Redis では、運用にインパクトを与える CONFIG のようなコマンドは利用できないようになっている。(redis.conf で rename-command CONFIG “”のように設定すれば良い) Restricted Commands In order to deliver a managed service experience, ElastiCache restricts access to certain cache engine-specific commands that require advanced privileges. …

Tagged with: , , , ,
Posted in aws, database

Redisでアクセスランキングを実装

ニュースサイトのサイドメニューでよく見かける「アクセスの多かった記事」のようなランキングを Redis のデータ型 Sorted Set で実装する方法をメモ。 東洋経済の例 Redis の Sorted Set を使ったアクセスランクの表現 Redis のデータ型 sorted set は文字通り順序付けられた集合。 key 単位で集合を定義でき、各メンバーはスコアを持ち、スコアによって集合内で順位付けられる。 メンバーを記事、スコアをアクセス数とみなして、アクセスランクを表現する。 日別ランキングであれば下図のようになる。 週別ランキングであれば下図のようになる。 スコアの大きい順(=アクセスの多い順)に並べればアクセスランキングの完成となる。 Sorted Set の操作 次にアクセスされた時の Sorted Set の操作を考える。 キーは YYYYMMDD で持ち、アクセスされるたびに、記事のスコアを1増やす。 スコアを明示的に指定してメンバー追加するときは ZADD を使って ZADD key score member

Tagged with: , ,
Posted in database

Redisで最新更新されたN件を実装

たとえば最近更新されたN件を表示させるには 最近更新したアイテムほど上位に表示 下位にあるアイテムも、更新すれば最上位に表示 同じアイテムは重複して表示しない N件を超えると古いものから順に破棄 といったことが必要になる。 このデータ構造を Redis のデータ型 Sorted Set で実装する方法をメモ。 Sorted Set を少し触ってみる Redis のデータ型 sorted set は文字通り順序付けられた集合で Z で始まるコマンドを使ってデータを操作する。 ZADD key score member のシンタックスで集合のメンバーを追加 計算量は O(log(N)) myzset 集合のメンバーを score でソート メンバー baz のスコアを3から1に変更 myzset 集合のメンバーを score のランキング順で再ソート

Tagged with: ,
Posted in database

PostgreSQL9.3をカラム指向ストレージ(cstore_fdw)に対応させる

分析向けデータベースを展開している CitusDB が PostgreSQL を列指向ストレージ対応させる foreign data wrapper(cstore_fdw) をオープンソース化したので、とりあえずインストールしてみた。 cstore_fdw の特徴 github の cstore_fdw に特徴がまとめられている。 http://citusdata.github.io/cstore_fdw/ 箇条書きすると Faster Analytics – Reduce analytics query disk and memory use by 10x Lower Storage – Compress data by 3x Easy Setup – Deploy

Tagged with: , , , , , ,
Posted in database

MySQLのauto_incrementについてメモ

MySQL には Oracle/PostgreSQL の sequence にあたるものがないので、自動採番するときはカラムを auto_increment にする。 http://dev.mysql.com/doc/refman/5.6/en/example-auto-increment.html auto_increment の指定 初期値の指定 デフォルトでは 1 から採番される。 ALTER TABLE で AUTO_INCREMENT の初期値を指定する AUTO_INCREMENT カラムの最大値より小さい値を指定した時は無視されるので注意が必要。 初期値は CREATE TABLE 時に指定することもできる。 初期値、増加幅を指定 Oracle/PostgreSQL は create sequence test_seq start with 5 increment by 10;とすると、初期値が 5 で

Tagged with: ,
Posted in database
Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 6 days ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 3 weeks ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 3 weeks ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 6 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 9 months ago