TL;DR
- MySQL 8.0.16 についに CHECK制約 が実装された
-
NOT ENFORCEDなんてオプションが “MySQLっぽい” - ちなみにCHECK制約の追加はオンラインDDL不可、引っぺがすのはできる
最初のFeature Requestから15年、ついにMySQL 8.0.16にCHECK制約が実装された。
アルファベットしか入ってほしくない val カラムに対して、ひらがなの “さん”
とかが入力されるのを制限できる、みたいなヤーツ。 …
TL;DR
NOT ENFORCED なんてオプションが “MySQLっぽい”
最初のFeature Requestから15年、ついにMySQL 8.0.16にCHECK制約が実装された。
アルファベットしか入ってほしくない val カラムに対して、ひらがなの “さん”
とかが入力されるのを制限できる、みたいなヤーツ。 …
TL;DR
SET GLOBAL, SET PERSIST
には値をセットするためのバリデーター(各サーバー変数ごとにある)が用意されているが、 SET
PERSIST_ONLY はそのバリデーターを通らないため、不正な値を突っ込んでもエラーになってくれない
mysqld を再起動しようとした時に、 mysqld-auto.cnf
( SET PERSIST, SET PERSIST_ONLY
の保管先)に不正な値が突っ込んであるとそれを適用できなくて mysqld が起動してくれない
TL;DR
--postpone-cut-over-flag-file でテキトーなファイルを指定する
RENAME TABLE .. (gh-ostの cut-over
フェーズ)をしても良いタイミングになったら、「指定したファイルを消す」または 「 Interactive commands の
unpostpone コマンドを放り込む」
gh-ost …
[さらに読む]
とある原稿を書いていて、トランザクションまわりをチト調べている私です。
あまり深みに入らなければ、4つのトランザクション分離レベルと、それぞれのアノーマリを説明して、はい、終わり、ということにしたいのですが、私には以前気づいてしまった以下の記事があり「あれ、四つ多くない?」を細かく調べることなく放置していたのでした。
Web開発者が知っておくべき八つの分離レベル
しかし、ここで調べなければもやもやは晴れないですし、
神林さんがシリアライズでもパフォーマンスに問題のないRDBMSの実装が終わり、
…
gh-ost には interactive-command なるものが用意されている。 これは
gh-ost を 起動しちゃった後
、後からオプションを変更したりする機能を提供しているっぽい。 デフォルトではソケットファイルのみオープンする。デフォルトのパスは
/tmp/gh-ost.<スキーマ名>.<テーブル名>.sock 。
パスを変えたかったりTCP経由も受け付けてほしい時は gh-ost
--serve-socket-file=/tmp/hoge や gh-ost
--serve-tcp-port=9999 とかで設定できる。
$ gh-ost --database=mysqlslap --table=t1 --alter="ADD KEY (intcol1)" --host=127.0.0.1 --port=21801 --user=msandbox …[さらに読む]
TL;DR
--allow-on-master )場合、
--throttle-control-replicas
myhost1.com:3306,myhost2.com:3306 で遅延監視対象を指定する
gh-ost --max-lag-millis 1000 で指定する
(デフォルト1500ミリ秒)
SHOW SLAVE STATUS は叩かず、 *_ghc
テーブルに書き込んだハートビートの行と現在時刻の差分で計算する
--test-on-replica か
--migrate-on-replica の時だけ SHOW SLAVE
STATUS するっぽい
SHOW SLAVE STATUS …
キープアライブはしばらく前から存在していましたが、それでも多くの人にとって謎です。
したがって、これはkeepalivedがMySQLでどのように機能するかを示す非常に単純な例です。
うまくいけば、これは質問がある人を助けることができます。
Simple master to slaveをセットアップします。
意味..あるイベントで2番目にフェイルオーバーしない限り、1つに書き込みます。
1日 - インストールkeepalived
#yum検索キープアライブ keepalived .x86_64:ロードバランサと高可用性サービス
名前と要約の一致のみ 。すべてを "search all"で検索してください。 #yum -y
install keepalived
これで設定ファイルができました
#ls -ltr /etc/keepalived/keepalived.conf
…
MySQLでは異なる字が等しいと見なされることがあるということを書きました。
この動きはMySQLが独自に変なことをしているわけではなく、Unicodeの規則に従っています。
MySQL 8.0 のデフォルトのCollationは Unicode 9.0.0のUnicode Collation Algorithm(UCA) に従っています。
文字にはそれぞれ Weight という値が設定されていてソートに使用されています。この値が同じなら等しい文字とみなされます。
Collation
utf8mb4 のデフォルトの Collation は utf8mb4_0900_ai_ci …
ツイッターでこういうのがあったので、便乗してMySQLで考えてみるエントリ。
AP屋さんは読むべき。-- SQL大量発行処理をいかにして高速化するか #linux #oracle https://t.co/UkAMBc7KIB @SlideShareから
— ABE Masanori (@abe_masanori) 2019年4月4日
高速化手法として#1-#10の十個がリストアップされています。
#1 SQL発行数の削減 その?
…