Mysqlを運用してきた時の、障害対応、パラメータチューニングなどを公開します。
AmazonLinux2にMariaDB10.2を入れたら【#mysql50#.rocksdb】
AmazonLinux2にMariaDB10.2系をインストールしたのですが、データベースにアクセスすると謎のテーブル【#mysql50#.rocksdb】とか言うのが増えています。削除しようとしても消えなかったり、謎です。 調べてみると、...
【CopyContentDetector】mysqlで処理が多くなりすぎて性能不足で遅くなった
CopyContentDetectorが障害気味になってしまったので、メモ。これです。 ■なんかmysqlが遅い どうも処理速度が遅かったのです。なんかPHPの処理タイムアウトも出てるし。 確認してみるとどうもmysqlが遅くなっている様子...
CentOS7.5にyumでmysql5.7をインストールする
CentOS7にyumでmysql5.7をインストールする方法です。 ■リポジトリを追加 suやらsudoでスーパーユーザになってから以下を実行します。 rpm -Uvh ■yumでインストール yumを利用してインストールします。 yum...
mysqldumpを使って圧縮しておいたダンプファイルから一部のデータベースのみを抜きだす
■mysqldumpの--all-databasesオプションを付けて全データバックアップしたファイルから特定のデータベースだけ切り出す 全データベースの情報を、mysqldumpを使ってファイルにバックアップしていました。こちらの記事のよ...
innodb_online_alter_log_max_size関係のエラーでALTER TABLEが止まった
■mysql5.6でオンラインDDLを流していたら途中で止まってしまった でかいテーブルに対してALTER TABLEを実行していたのですが、いきなり以下のようなエラーが出てALTERが止まってしまいました。 ERROR 1799 (HY0...
InnoDBのテーブルが突然壊れて起動しなくなったので対応
CopyContentDetctorで障害が発生したのでメモです。 ■障害メールが来る 以下のようなMysqlに接続できないメールが沢山届いて来ました。確認するとDBが停止していました。特に作業などしていなかったので突然でした。 Datab...
waiting for table metadata lock でDBが死んだ
CopyContentDetectorで障害を起こしてしまったので、メモです。 ■DBにアクセスできない 半年に一回、各テーブルのフラグメントを解消する目的で以下のSQLを実行しています。 ALTER TABLE 【テーブル名】 ENGIN...
Mysqlでインデックスを使っていないクエリをログに残す方法
Mysqlでは時間の掛かったクエリをログに残すことができる、slow-query-logというオプションが存在します。指定した秒数以上かかった遅いクエリをログに残しておいてくれる機能です。更に、それだけではなくインデックスを利用しないで実行...
SELECT FOR UPDATEを利用するときに必ず確認すること
当然といえば当然なのですが、気をつけないといけないことを書いておきます。最近、死にかけました。CakePHPでSELECT FOR UPDATEを利用する方法はこちらでも紹介しています。 ■MyISAMでは利用できない 当然といえば、当然で...
絵文字をMysqlにInsertすると文字が途切れる現象の対応
Mysqlに文章をInsertしたときに、どうしても文章の途中でデータがバッサリ切れてしまう現象に遭遇しました。max_allow_packetに引っかかっているわけでもなく、カラムのデータ長の限界を超えているわけでもなく、エラーが出るわけ...
mysqldumpでテーブルロックを発生させない方法
オプションを何も付けずにmysqldumpでデータベースの中身をダンプしようとすると、テーブルロックがかかります。 サービス運用中のサーバからデータのダンプをするときにテーブルロックがかかってしまうと、ダンプ中はサービスが止まってしまい大変...
小規模から中規模のサイトに対応できるmysqlの設定サンプル
yumでインストールしたmysqlで最低限のmy.cnfの設定を紹介します。小規模〜中規模くらいまでなら大丈夫かと思います。 インストールしたら、mysqlを起動する前にまず設定を変更しましょう。一度でも起動してしまうと、innodb_lo...
mysqlのrootユーザのパスワードを変更する
mysqlのrootユーザのパスワード変更方法です。mysqlインストール後に必ずrootのパスワードを設定しておきましょう。mysqlコマンドで、mysqlにrootユーザでログインして以下のSQLを発行します。 SET PASSWORD...
mysqlのinnodb_log_file_sizeの設定を変更した時の対応
この記事でmysqlサーバの最低限の設定を書きました。 my.cnfのinnodb_log_file_sizeの値を変更したあと、そのままmysqlを再起動すると起動しなくなったり、起動してもselectやupdateができなくなります。以...
MysqlでNOW()を使うとキャッシュに乗らないのを解決したい
MySQLではキャッシュの機構がたくさんついています。 その中でも、クエリキャッシュを有効に使えれば、速度は早くなります。ただし、【全く同じクエリ】でなければキャッシュに乗りません。select対象のテーブルがInsertまたはUpdate...
mysqlのログファイルを削除したときの手順
CentOS のyum でインストールしたmysqlは/var/log/mysql.logにログを出力します。このログファイルですが、削除や移動を行うとログの出力がされなくなります。そんな時は以下のコマンドを実行すると、ログが再読み込みされ...
【MYSQL】GRANT文で接続ユーザを作成する方法
■MYSQLのユーザ追加のSQL mysqlのユーザの作成のSQLです。mysqlサーバの設定変更はこちらの記事を参考にmy.cnfを変更してください。mysqlサーバを起動したら、まずはユーザを作成しましょう。rootユーザでmysqlサ...
圧縮しながらmysqldump&圧縮したファイルをmysqlに戻す
mysqlを運用しているとmysqldumpでテーブルの内容をダンプすることがあると思います。このダンプしたファイルですが、テキストファイルなのでとにかく容量が大きい!というわけで、圧縮をしながらmysqldumpをすることで、ローカルディ...