41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

MySQL

データを適当に作成するmysql_random_data_loadを試してみた

テストデータ作りたいな 自分で手で作るのもめんどいし、定義変わるとアレ(メンテが必要)やしな。 せや、型から適当にデータ作るツールとかないんかな? あったわ→mysql_random_data_load さすぺる!(さすがPercona!) 試してみよう use test; -- 適当な…

♡♡♡主キー大主キー♡♡♡(MySQL Casual Talks vol.11)

名言生まれる! タイトルにもある大主キーという単語がtwitterのTLに一瞬溢れました。 後日もことあるごとに大主キーという人が続出。 もうこれは今年の流行語対象 (in MySQL)といっても過言ではありません。 MySQL Casual Talksとは? もっと深く浅く、広く…

AWS Loft TokyoのMiddlewares Deep Talks行ってきました

これもあんまりまとめる感じでは無いですが、とりあえず後から追記できる程度には雑記します。 iddlewares Deep Talks(AWS Loft Tokyo) Amazonさんがありがたいことにミドルウェア関連の話≒DB系の話やってくれたんで、目黒のビルに行ってきた。 ぼくらが8.…

Oracle Code 2019最高でした!ありがとうございました!

※勢いで書いて、まとめようとしてなかったので読みにくいと思います。(伝えたいことはタイトルの一行) 今年は参加できたOracle Code。 https://www.oracle.co.jp/events/code/2019/ 毎年この時期なんやかんやあったんだけど、今年は時間取れたし、聞きたい話…

Changes in MySQL 8.0.16 (2019-04-25, General Availability) を読む(1回目)

リリースノートを読んでみる 英語の勉強もかねてちょっとずつ読んでみる。 Account Management Notes DROP ROLE権限について > Previously, users who had the DROP ROLE privilege could use the DROP ROLE statement to drop locked or unlocked accounts.…

【祝】MySQL8.0.16登場!MySQLはその先に向かう。

とうとう来ました、待望のバージョンが! 僕はdocker-composeで遊んでるのでYAMLに mysql_8.0: image: mysql:8.0.16 と書いて再起動しただけでできましたが、中の人が つ https://t.co/YFNApjZZUk— (@RKajiyama) April 25, 2019 と教えてくれたリンク先にも…

decimal(n,0)の使い道

MySQLの数値型 整数型 (真数値)だと - INTEGER - INT - SMALLINT - TINYINT - MEDIUMINT - BIGINT 固定小数点型 (真数値)だと - DECIMAL - NUMERIC 浮動小数点型 (概数値) - FLOAT - DOUBLE ビット値型 - BIT という風になっています。 社内のDBでdecimal(31…

3つの「れいわ」がMySQLにちゃんと入るか確認しといた

https://qiita.com/tfukumori/items/959ed9c751734b73675fで上がってた話をMySQLで一応調査してみた。 やったこと https://qiita.com/tfukumori/items/959ed9c751734b73675f であがってた文字コード「U+4EE4」と「U+F9A8」、あと「U+32FF」はいずれもMySQLに…

インデックス再構築もレプリケーションされる

インデックス再構築ってレプリケーションされる? 結論としては されます! いやぁ、正直不安だったんですよね。 定義が変わるわけじゃないし、データが飛ぶわけじゃない。 でも、奥野さんのこの記事にもある通り、ALTER TABLEではテーブルコピーしてるわけ…

リストア時の「Access denied; you need (at least one of) the SUPER privilege(s) for this operation」エラー

環境構築時にハマったお話 先日、AデータベースサーバからBデータベースサーバにデータをmysqldump→mysqlコマンドでエクスポート&リストアしました。 ところが Aから取得した "aスキーマ" の一部のオブジェクトがBに正しくリストアされてないことがわかり、…

イコール(=)vs ライク(LIKE) の巻

ある日のこと 社内のHさんから質問が。 外注さんが、文字列である建物名の完全一致検索するときのSQLで `... where building like ? ...` って書いてきたので 「 `=` じゃないのは何故?」って聞いたら↓を意図したと回答がありました。 https://dev.mysq…

MySQLのギャップロックとネクストキーロック

曖昧に理解してるかもと思い、自分の振り返りのために書いてます。 先日書いた記事で作ったデータで説明します。 MySQLのロック 通常、DML実行時に取得されるロックは排他ロックと共有ロックで構成されます。 最初にトランザクションでロックをかけたほうが…

そいつの名はWindow関数

タイトルの元ネタは61巻『そいつの名はディアボロ』より Window関数がMySQL8で使えるようになりました! ワーイ♪☆彡(ノ゚▽゚)ノ☆彡ヘ(゚▽゚ヘ)☆彡(ノ゚▽゚)ノ☆彡ワーイ♪ Window関数って? 他のDBMSではおなじみ(でも、意外とWindow関数って名前は知らないで使ってるかも)の関数…

ジョジョの奇妙なWITHクエリ

(会社で書いたやつの焼き直しだったりする) ワタクシ、とてもジョジョの奇妙な冒険が好きで、今日もジョジョリオン20巻買って会社でご飯食べながら読んでたんですが、 そのジョジョの主人公達を使って、MySQLでは8から入ったCTEを試してみました。 そいつの…

Re:dashの権限設定について

以下の話はRedash 6.0.0+b8537の話です。 新しくなったら変わっててほしいところです。 ユーザーごとの権限設定したい 先に言っておくと、 画面からすべてはできません 画面からできること ユーザーを作ること グループを作ること グループとユーザーを紐づ…

AWS(EC2)上にAZまたぎでGroup Replication(MySQL5.7)作った話

今回、AZをまたいだEC2(AWS Amazon Linux2)上にMySQL5.7(.25)をインストールし、Group Replicationを構成する手順を記載します。 MySQL Shellを使って設定するので、MySQL Shell用のインスタンスを一台用意します(※)。 ※本来は3台のDB上のどれかに入れてもい…

pt-index-usageの--databasesオプションについて

pt-index-usage Percona Toolkitのpt-index-usageはとても便利で、スロークエリログから実行されたクエリを読み取り、それらがインデックスをどのように使用しているかを分析するものだ。 https://www.percona.com/doc/percona-toolkit/LATEST/pt-index-usag…

【メモ】OSC2019 MySQL ~ yoku0825 と sakaik が語る最新情報と周辺情報~

土曜日に聞いてきたOSC2019SpringのMySQL話を議事録的にメモったんでアップしてみる。 色々不足もあるかもしれないですが・・・。 MySQL ~ yoku0825 と sakaik が語る最新情報と周辺情報~ MySQLについて雑談をする会 自己紹介 坂井さん(以降S) 各地のOSC…

EC2上でPercona XtraDB Cluster構築(Galera Arbitratorは後日入れたい)

基本的には公式の手順通り 作業概要 Percona XtraDB Cluster構築を行う。 構成は以下の通り EC2×4台 Percona-XtraDB-Cluster-57-5.7.24×3 ProxySQL×1(後日) Galera Arbitrator(さらに後日)→ProxySQLと同じサーバとする 事前作業 AWS/EC2インスタンスを3台(DB…

MySQLなんでも相談会行ってみた

無料という言葉に弱い僕 最近、スマートスタイル社のセミナー何回か参加して、そこで知った「MySQLなんでも相談会」という無料コンサルティングに行ってみた。 www.s-style.co.jp このMySQLなんでも相談会ではスマートスタイル社の今までの経験を生かして、…

Error Code: 3009. Column count of mysql.user is wrong.

MySQL8.0.14でそれは起きた CREATE USER 'test1'@'%' IDENTIFIED BY "test1"; ってな感じでユーザ作成を行おうとすると、 Error Code: 3009. Column count of mysql.user is wrong. Expected 51, found 49. Created with MySQL 80011, now running 80014. Pl…

MySQL TunerでDBの健康診断

MySQL Tunerってなに? チューニングをアドバイスしてくれるツール チューニングに限らず、セキュリティ診断までしてくれる パラメータやバージョンでの問題点を洗い出してくれるツール Git Hubに上がってる(https://github.com/major/MySQLTuner-perl) Perl…

PerconaToolkitのpt-archiverを使ってみたんだが・・・。

pt-archiverとは 大きなテーブルから他のテーブルあるいはファイルにレコードをアーカイブするのにツール where句が使え、抽出条件が設定できる 出力ファイル名にDBスキーマ名、テーブル名、年月日時分秒を入れられる 抽出対象データを自動的に削除する(デフ…

セミナー行ってきた(MySQLのActive/Active型HA と 靴&ファッション通販 ロコンド様の可用性への取り組み事例紹介)

セミナー概要 2019-01-24(木)16:00 - 18:30 データベースのHAの話から、MySQL5.7から使用可能なマルチマスター型HAのMySQL InnoDB Clusterについての説明、および実運用での話をLOCONDO.jpの杉山さんから聞く。 資料については別途公開予定 イベント紹介 h…

スロークエリログを詳細化するlog_slow_extraパラメータ

log_slow_extraパラメータが8.0.14から追加された 何それ?おいしいの? スロークエリーログが有効で出力先が含まれているFILE場合、サーバーはスローファイルに関する情報を提供するログファイル行に追加のフィールドを書き込みます。セクション5.4.5「遅い…

ST_Distanceの単位パラメータ使ってみる

MySQL8.0.14からGIS関数のST_Distanceが少し改良された ST_Distance(g1、g2 [、unit])関数に3番目のオプションのパラメータを追加されました。 公式では8.0.13のころから紹介されてたんですが、やっと試せます。 新しいパラメータは、結果に使用する[単位]…

MySQL InnoDB Clusterの構築(by docker)

MySQL InnoDB Clusterさわってみたい こないだセミナーも行ったし、DBプロキシについて調査しといて―という依頼もあったりしたんで、MySQL InnoDB Cluster環境を作ってみようと考えた。 MySQL InnoDB Clusterとは 普通にサーバ立てて、構築する場合はここ(Sm…

インデックス指定時のカラムの桁数について

こんなテーブルがありました CREATE TABLE `hogehoge` ( `hoge_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'HOGEID', ・・・(略)・・・ `hoge_text` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'ほげほげ', PRIMARY KEY (`hoge_id`), …

特定の地点がテーブル内に存在するか確認する (ST_CONTAINS)

この日記は RDBMS GIS アドベントカレンダー2018の13日目向けに書きました。 昨日のノリで軽い記事ですが… ST_CONTAINS テーブル内に存在するPOINT型の地点に対し、特定の緯度経度の地点が存在するか確認するなら SELECT COUNT(*) FROM テーブル名 WHERE ST_…

整数型のカッコ「()」に入る数字は表示幅

この記事はMySQL Casual Advent Calendar 2018 13日目の記事です。 テーブル作成時 カラムの型を定義しますが、数字列に対して hoge_id` bigint(20) hoge_flag` tinyint(1) というようにカッコ()の中に数字を入れていると思いますが、この数字がそもそも省略…