AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

MySQL

行き先を失ったプロセスを kill して平和を取り戻す

アプリケーション側で実行流量の制御をしておらず、人力で大量にアクセスすると死ぬ機能がリリースされてしまい、無事に死亡する事案に遭遇していた。 タイムアウト時間を超えた MySQL 内プロセスを kill する 対象を抽出する 以下のようにすると、カンマ区…

docker(-compose) で MySQL を組み込む時の注意

久しぶりにゼロから docker-compose.yml 書いててハマったので。 常日頃から触ってないとわすれがちなの、トシを感じる。 ホスト側から MySQL CLI でコンテナ側の MySQL server へログインするとき ホスト名は localhost を使用せずに 127.0.0.1 を指定する…

HomeBrew のアップデートで MySQL 8.1.0 がインストールされて俺の Rails が壊れた

俺の、って書いておかないとマサカリ飛んできそうなので。

MySQL のリリースが変わるらしい

https://blogs.oracle.com/mysql/post/introducing-mysql-innovation-and-longterm-support-lts-versions Innovation Release と LTS Release がメインになって、 Major は単純に二年ごとに増える、みたいな気持ちでよさそう。 Innovation Release の最終バ…

ERROR 1038 (HY001): Out of sort memory, consider increasing server sort buffer size

掲題のエラーで悩んでいるチームがあったので、ヒュッと「MySQL のバグじゃねっすかね?」とだけ Slack で投げていたんだけど、ちゃんと確認することにした。

MySQL の AUTO INCREMENT の値を改ざんする

データ全部消したので 1 から始めてぇ!って時にやる。 ALTER TABLE ${TABLE_NAME} AUTO_INCREMENT = 1; 参考 notepad-blog.com

RDS で mysqldump すると FLUSH TABLES WITH READ LOCK

単体で動作させている RDS だと、以前書いたような以下のようなお作法で一貫性のある SQL ダンプが取得できる。 donbulinux.hatenablog.jp これをこのままマルチ AZ な RDS 環境で実行すると以下のエラーになる。 mysqldump: Couldn't execute 'FLUSH TABLES…

MySQL にタイムゾーンを追加する

ロケ地 MySQL 8.0.31 macOS Ventura 先日の Unbale ... の記事でも書いた通り、インストール直後の MySQL は Asia/Tokyo をタイムゾーンに指定するとエラーを返します。 ゆるせねえよ……、わからせてやる! しかしこの手の話題、 OS とか物理筐体移行する際に…

ERROR! The server quit without updating PID file

macOS が一番お目にかかるんじゃないすかねー、 brew でインストールしていざ起動したらこれ。 よく言われている pid ファイルの不在と MySQL の data-dir 権限を対応しても動かない時は。 一度 mysql 系のプロセスを全部消すか、OS ごと再起動する mysql --…

MySQL の予約語

groups というテーブルがあるんだけど、SELECT を投げようとして syntax error になった。 mysql> SELECT * FROM groups; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for …

MySQL8 時代の GRANT

GRANT ALL PRIVILEGES ON example_database.* TO example_user@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES; 長らくこの MySQL 5.x 世代の「ユーザ作成と同時に権限も設定する」というヤツになれすぎて、 MySQL8 世代のユーザ作ってから GRANT し…

RDS で MySQL 5.7.3x を動かしている環境で日本語入力ができない

タイトルのとおり。 RDS で MySQL 5.7.3x 系エンジンの環境で、年次更新みたいな処理でデータベースメンテナンスをしていたのだけど、 mysql コマンドで RDS に接続時 SELECT や UPDATE 発行時に日本語入力しても消える (コピペしても消える) 状態だった。 m…

ERROR 3678 (HY000): Schema directory './example_development' already exists. This must be resolved manually (e.g. by moving the schema directory to another location).

タイトルの通り。 DROP DATABASE example_development; したらなんか残ってしまい、 rails db: 系コマンドも通らなくなった。 原因は、 mysql_data 以下のディレクトリにデータベース名のディレクトリが残ってしまっているので。 削除する /usr/local/var/my…

いい加減 8 に以降しろ! と言われそうだけど、メンテナンスが必要な環境でまだ動いているので。 GPG キー yum update を実行したところ、 MySQL Community 版のリポジトリ読み込みでエラーが出た。 The GPG keys listed for the "MySQL 5.7 Community Serve…

令和最新型の MySQL 5.7 インストール方法

RHEL 7 系の環境にちょっと古い Rails 環境を作る必要が出てきて、確認したら Rails 5.0.x かつ mysql2 0.4.5 だった。 ので、これは MySQL 8.0.x 使えないなと、 5.7.x を調達することになったのだけど、ちょっと悩んだのでメモしておく。 yum 経由でインス…

mysql-shell を入れてみる

浅学にして mysql-shell なるものを知らなかった (mysql-client についてくる CLI のことだと思ってた) ので入れてみた。 brew install MySQL って Cask 扱いでしたっけ? もう覚えてないワ。MySQL 利用している brew 環境下ならそのままインストールできる…

MySQL の用語置き換え

8.0.26 のお知らせ見てたら出てたので。 どう変わった とりあえずここだけ抑えておけば良さそう。 dev.mysql.com Incompatible Change: From MySQL 8.0.26, new aliases or replacement names are provided for most remaining identifiers that contain the…

MySQL 8 でのバイナリログの無効化

MySQL 8.0.x ではバイナリログが標準で有効化されている。 ので、無効化する。 [mysqld] disable-log-bin これでヨイ。 本当はローテートするようにして、ログを無効化しない方が良いのだけれど、開発環境だったり、定点バックアップ毎にしかデータ保証しな…

mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

なん……何? (ここ数年 RDS ばかり使っていたので、生 MySQL を久しぶりに使った顔 ロケ地 CentOS7 MySQL 8.0.22 community edition 該当ユーザの権限 GRANT ALL PRIVILEGES ${データベース名}.* ON ${ユーザ名}@localhost; PROCESS 権限が足りない mysqldump…

MySQL の root パスワードが設定されている

ロケ地 macos 11 Big Sur Homebrew MySQL 8.0.22_1 ${USER} は自分のユーザ名に相当します

MySQL のデータ移行前後で、データの正当性を担保できるのか?!

できるのか? その謎を解き明かすためスタッフはアマゾンのお口へと向かった……。 関係ないけど MacBook Air 2020 出ましたね。

mysql_secure_installation: [ERROR] unknown variable 'default-character-set=utf8mb4'.

なして? と思ったけど、インストール後プロセス起動前に以下を入れてたのが問題だった。 mysql_secure_installation は latin1 以外許さないとかそういうアレなの? キマリなのかしら。 /etc/my.cnf [client] default-character-set=utf8mb

RDS の必要最低限なパラメータグループ ( MySQL 8 世代 ) 設定

MySQL 5.6/5.7 世代で絵文字とかハハパパあたりに苦しめられた人多い問題。 UTF8MB4 を利用する innodb_file_format innodb_large_prefix は ON Barracuda が取り込まれたので、項目が存在しなくなった フレームワークなどからのアクセスで時刻補正されると…

RDS の必要最低限なパラメータグループ ( MySQL 5.6/5.7 世代 ) 設定

いーっつも忘れて過去の手順書を確認するので、ここに記載する! 新しいパラメータグループ作った後に最低限設定するのは以下。 UTF8MB4 を利用する InnoDB のカラム幅を 3072 だか 3074 いっぱいまで拡張する フレームワークなどからのアクセスで時刻補正さ…

RDS から mysqldump するときのお作法

GTID とかついてきて、そのまま他の環境に持ち込もうとするとうまく行かず。 「イラァ」としないためのメモ。 mysqldump -u ${ユーザ名} -p -h ${エンドポイント} --quick --single-transaction --skip-triggers --set-gtid-purged=OFF ${DB名} > ${ファイル…

Errno 1872

Last_Error: Slave failed to initialize relay log info structure from the repository stop slave して reset slave して change master to で stop slave した時点のログを指定すればオッケーでした。 復帰できない場合は、mysqldump かなんかでログの位…

MySQL のロケールを JST にする

AWS 上で RDS 使ってて「UTC やんけ JST にしたろ!」みたいな記事は見るけど、生の MySQL ってそういえばどうなん?ってなったので、インストールから一式試してみました。 ロケ地:EC2@t2.micro MySQL 5.7.16 準備 [root@ip-172-31-25-109 ~]# yum update …

innodb_log_file_sizeを変更してもMySQLが文句を言わなくなった

まじかよ知らなかったすげえっていう周回遅れの情報。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.5.7 InnoDB ログファイルの数またはサイズの変更、および InnoDB テーブルスペースのサイズの変更 MySQL 5.6.8 の時点では、InnoDB ログファイルの数…

The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node X to connect.

タイトル長いけどエラー全文貼るとググラビリティ上がるかもしれないから許してクレメンス。 1000日(位?)以上連続稼働で無停止の MySQL Cluster をメンテした時の話 ということで。確か 1100 日位動いてたと思うけどもしかしたらオイラの勘違いでまだ 100…