mysql

Mysqlを運用してきた時の、障害対応、パラメータチューニングなどを公開します。

mysql

AmazonLinux2にMariaDB10.2を入れたら【#mysql50#.rocksdb】

AmazonLinux2にMariaDB10.2系をインストールしたのですが、データベースにアクセスすると謎のテーブル【#mysql50#.rocksdb】とか言うのが増えています。削除しようとしても消えなかったり、謎です。 調べてみると、...
mysql

【CopyContentDetector】mysqlで処理が多くなりすぎて性能不足で遅くなった

CopyContentDetectorが障害気味になってしまったので、メモ。これです。 ■なんかmysqlが遅い どうも処理速度が遅かったのです。なんかPHPの処理タイムアウトも出てるし。 確認してみるとどうもmysqlが遅くなっている様子...
CentOS7

CentOS7.5にyumでmysql5.7をインストールする

CentOS7にyumでmysql5.7をインストールする方法です。 ■リポジトリを追加 suやらsudoでスーパーユーザになってから以下を実行します。 rpm -Uvh ■yumでインストール yumを利用してインストールします。 yum...
mysql

mysqldumpを使って圧縮しておいたダンプファイルから一部のデータベースのみを抜きだす

■mysqldumpの--all-databasesオプションを付けて全データバックアップしたファイルから特定のデータベースだけ切り出す 全データベースの情報を、mysqldumpを使ってファイルにバックアップしていました。こちらの記事のよ...
mysql

innodb_online_alter_log_max_size関係のエラーでALTER TABLEが止まった

■mysql5.6でオンラインDDLを流していたら途中で止まってしまった でかいテーブルに対してALTER TABLEを実行していたのですが、いきなり以下のようなエラーが出てALTERが止まってしまいました。 ERROR 1799 (HY0...
mysql

InnoDBのテーブルが突然壊れて起動しなくなったので対応

CopyContentDetctorで障害が発生したのでメモです。 ■障害メールが来る 以下のようなMysqlに接続できないメールが沢山届いて来ました。確認するとDBが停止していました。特に作業などしていなかったので突然でした。 Datab...
mysql

Mysqlでインデックスを使っていないクエリをログに残す方法

Mysqlでは時間の掛かったクエリをログに残すことができる、slow-query-logというオプションが存在します。指定した秒数以上かかった遅いクエリをログに残しておいてくれる機能です。更に、それだけではなくインデックスを利用しないで実行...
mysql

SELECT FOR UPDATEを利用するときに必ず確認すること

当然といえば当然なのですが、気をつけないといけないことを書いておきます。最近、死にかけました。CakePHPでSELECT FOR UPDATEを利用する方法はこちらでも紹介しています。 ■MyISAMでは利用できない 当然といえば、当然で...
mysql

絵文字をMysqlにInsertすると文字が途切れる現象の対応

Mysqlに文章をInsertしたときに、どうしても文章の途中でデータがバッサリ切れてしまう現象に遭遇しました。max_allow_packetに引っかかっているわけでもなく、カラムのデータ長の限界を超えているわけでもなく、エラーが出るわけ...
mysql

mysqldumpでテーブルロックを発生させない方法

オプションを何も付けずにmysqldumpでデータベースの中身をダンプしようとすると、テーブルロックがかかります。 サービス運用中のサーバからデータのダンプをするときにテーブルロックがかかってしまうと、ダンプ中はサービスが止まってしまい大変...
mysql

小規模から中規模のサイトに対応できるmysqlの設定サンプル

yumでインストールしたmysqlで最低限のmy.cnfの設定を紹介します。小規模〜中規模くらいまでなら大丈夫かと思います。 インストールしたら、mysqlを起動する前にまず設定を変更しましょう。一度でも起動してしまうと、innodb_lo...
mysql

mysqlのrootユーザのパスワードを変更する

mysqlのrootユーザのパスワード変更方法です。mysqlインストール後に必ずrootのパスワードを設定しておきましょう。mysqlコマンドで、mysqlにrootユーザでログインして以下のSQLを発行します。 SET PASSWORD...
mysql

mysqlのinnodb_log_file_sizeの設定を変更した時の対応

この記事でmysqlサーバの最低限の設定を書きました。 my.cnfのinnodb_log_file_sizeの値を変更したあと、そのままmysqlを再起動すると起動しなくなったり、起動してもselectやupdateができなくなります。以...
mysql

MysqlでNOW()を使うとキャッシュに乗らないのを解決したい

MySQLではキャッシュの機構がたくさんついています。 その中でも、クエリキャッシュを有効に使えれば、速度は早くなります。ただし、【全く同じクエリ】でなければキャッシュに乗りません。select対象のテーブルがInsertまたはUpdate...
mysql

mysqlのログファイルを削除したときの手順

CentOS のyum でインストールしたmysqlは/var/log/mysql.logにログを出力します。このログファイルですが、削除や移動を行うとログの出力がされなくなります。そんな時は以下のコマンドを実行すると、ログが再読み込みされ...
mysql

【MYSQL】GRANT文で接続ユーザを作成する方法

■MYSQLのユーザ追加のSQL mysqlのユーザの作成のSQLです。mysqlサーバの設定変更はこちらの記事を参考にmy.cnfを変更してください。mysqlサーバを起動したら、まずはユーザを作成しましょう。rootユーザでmysqlサ...
mysql

圧縮しながらmysqldump&圧縮したファイルをmysqlに戻す

mysqlを運用しているとmysqldumpでテーブルの内容をダンプすることがあると思います。このダンプしたファイルですが、テキストファイルなのでとにかく容量が大きい!というわけで、圧縮をしながらmysqldumpをすることで、ローカルディ...