MySQL

dump exportとimport

mysqldump Export ↓ レコード削除 ↓ Alterテーブルでカラム追加する ↓ Import エラーなくImportできた。 # Export docker exec -i docker_mariadb_1 mysqldump -uroot <DB Name> > ./01221441.sql # Import docker exec -i docker_mariadb_1 mysql -uroot <DB Name> < ./012214</db></db>…

シャーディング時のデータ分散、ID採番戦略

データをどう分散するかに加えて、ID採番も考える必要がある データ分散の戦略 fixed mapping id % shard で求めるやつ。shard数が変わると計算結果が変わるのがネック dynamic mapping user_to_shard のようなマッピングテーブルをつくる。shardキーのカー…

シャーディング時のクエリ発行

use db1; select * from table1; 上記でもいいが、複数コネクション張っている場合、1番目と2番目の操作の間に他のコマンドがはいるかも create table test.personal(id int, name varchar(20)); insert into test.personal (id,name) VALUES (11, "abc"); s…

MySQL Scaling with Sharding

Sharding Pinterest: How we scaled our MySQL fleet - pinterest enginnering 8台の物理サーバに1つずつMySQLインスタンス。それぞれのインスタンスは master - master replicated onto a backup host in case the primary fails use master, not slave... …

GlobalDBの意義

DBシャーディングの際に、シャーディングしない GlobalDB の必要性を考えてみた。 auto_increment したい場合。 例えば foo テーブルの id (auto_increment) が bar baz など別テーブルの shard_key になるケース。この場合fooテーブル自体はシャーディング…

MySQLにおけるレプリケーション遅延の傾向と対策

レプリケーションは非同期。 漢(オトコ)のコンピュータ道: MySQLにおけるレプリケーション遅延の傾向と対策 遅延の原因 ネットワークの遅延 巨大なトランザクションを実行した スレーブの負荷が高すぎる

MySQL Sharding: Tools and Best Practices for Horizontal Scaling

MySQL Sharding: Tools and Best Practices for Horizontal Scaling from Mats Kindahl www.slideshare.net shardingの意味 Smaller index size Smaller working set working set innodb_buffer_pool_size の大きさとでも考えておけば良い。読み書き共にこの…

MySQLパーティショニング

勘違いしておりました。テーブル名の末尾に _1 とかつけるテーブル分割がパーティショニングだと思っておりました。。。 それはどちらかと言うとシャーディング(水平分割)ですね 実際には、SQL(ALTER文)だけで実行可能な機能でした。 有効なケース カー…

InnoDBで行ロック/テーブルロックになる条件

blog.livedoor.jp ユニーク制約 or インデックス が貼られているカラムで検索した場合、行ロック それ以外 のカラムで検索した場合、テーブルロック インデックスの値によってロックされる=SCANされた行はすべてロックされる qiita.com ロックには 排他ロッ…

MySQLのスレッドとか接続数とか

現在の接続数 MariaDB> show status like 'Threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 1 | +-------------------+-------+ 1 row in set (0.01 sec) 最大接続数設…

MySQLでのSlowLogの分析方法

qiita.com $ mysqldumpslow -s t ${SlowLogファイル} > ${出力先ファイル}