Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? とあるSESの現場では本番リリースの時期が近づいてきており、僕を含めた数人のエンジニアは間に合いそうもない残作業の開発を進めたり、本番で使うためのデータの整備を本番サーバー内で行ったりしていた。ほとんどがその案件のために集められたメンバーだったため特に和気あいあいとするでもなく、エアコンの風の音が響く小さなオフィスの片隅で静かに作業をしていた。 業務上のやりとりもRedmineで行われており、声を発するのもたまにメンバー同士で話をしたり、クライアントから電話がかかってきた時だけ。その日もメールで通知が届いてきており、確認してみるとRed

MySQLの予約語がかなり多かったので予約語だけ抜粋してまとめてみました。MySQLは予約語多いですね~!! 一目でわかりやすいように、8.0以降で追加されたり予約語になったものはアンダーラインを入れておきます。 何度か見直したつもりですが、間違いがあった時はすみません ( ..)φDB名、テーブル名、カラム名の識別子を付ける祭は予約語は使わないようにしましょう! もし、バージョンUP前に使用されていて回避策で使用するのであれば、バッククォート「` `」で囲めば大丈夫です。 予約語とは 予約語とは言語の仕様で使い方が決められている単語のことです。 出典 MySQL 8.0のキーワードと予約語 A ~C A B C C

この記事は、MySQL Casual Advent Calendar 2017の20日目の記事です。 煽り気味のタイトルですがみなさん SHOW ENGINE INNODB STATUS 読んでますか? SHOW ENGINE INNODB STATUS \G 見づらいのなんとかならんのか。— そーだい@初代ALF (@soudai1025) 2016年12月20日 わかる。でもMySQLの振る舞いを知る中でSHOW ENGINE INNODB STATUSを読まざる得ない場面はそこそこあります。 どんな時に必要になるのでしょうか? そこでSHOW ENGINE INNODB STATUSにまつわる話を書きます。 SHOW ENGINE INNODB STATUS をまず読みやすくする まず末尾に \G を付けましょう。 これで3倍読みやすくなります。 次に pager less -S を
事前にデータ投入をしたMySQLDocker イメージが必要になり,最初は「Dockerfile で頑張る感じかなぁ...」なんて考えながら調査をしていたら,公式のMySQLDocker イメージに「カスタムスクリプトを実行する機能」が用意されていることを知って,全て解決した.今までもMySQL をDocker で動かす場面はあったけど,今回の機能は知らなくて勉強になった. CI で使うためにマイグレーション実行済のMySQLDocker イメージを用意しても良いし,新メンバーのために開発用の初期データを投入したMySQLDocker イメージを用意しても良いし,ハンズオンイベントのためにテストデータを投入したMySQLDocker イメージを用意しても良いと思う.今回の仕組みを知っておくと便利な場面は多そう. 公式のDockerfile とdocker-ent

docker-composeを使うと連携する複数のコンテナを割と簡単に構築できます。 アプリケーションコンテナや開発用コンテナからデータベースコンテナを扱う際に気になったことをまとめてみます。 ✗TOC データベースの永続化 redismysql postgres mongo データベースを参照する方法 portの指定 データベースの永続化 データベース内のデータは永続化しないと消えてしまうので、残したい場合は明示的に永続化させておく必要があります。 公式のイメージの設定例(redis,mysql, postgres, mongo)を書きます、ホストのディレクトリにマウントする方法(data volume)を採用しています。データコンテナを使う方法は書いていません。 redisDocker Hub /dataをマウントすると良いようです。docker-compose.ymlに以下のよ
どこまで出来るか?!やれるところまでやってやるぜ!!と、威勢が良いのは若い間だけの話。オトナのオトコは、攻めるときはとことん攻めるが自らの限界もわきまえて賢く振る舞うのがスマートってものである。というわけで、今日はMySQLのいろいろな限界についてまとめてみる。皆さんも是非MySQLの限界を知り、MySQLをもっとスマートに使って頂きたい。SQL文の最大長MySQLサーバーが実行出来るSQL文の最大長は、max_allowed_packetシステム変数で表される。max_allowed_packetの最大値は1GBである。max_allowed_packetの値はセッションごとにも設定可能なので、デフォルトではそこそこの値(16MBなど)に設定しておいて、必要に応じて大きな対を使うと良いだろう。 データベースの個数 データベースオブジェクトの個数に制限はない。データベースオブジェクトは

REPLACE INTOが実はINSERT + DELETEだった(INSERTが先で後から消す) 間違ってました。。 「INSERT .. ON DUPLICATE KEY UPDATE ..でクエリを投げているけど、99%くらいはUPDATEになっている」 「UPDATEを直接投げた方が速かったりする?」 「極端にパフォーマンス違うんだったら、UPDATEが転けてからINSERTする方式も考える」 とか聞かれたのでINSERT .. ON DUPLICATE KEY UPDATEについて調べてたんですが、 ソース読んでたら豆知識に出会ったのでメモ。 5.6.10のsql/sql_insert.ccの中でゴニョゴニョしている気配があるけど、write_record関数の中で table->file->ha_write_row(table->record[0]してみる。 ⇒何もないINSE
10/26リリースでアナウンスされていた5.7.9が、10/22にGAとしてリポジトリに登録されたのでインストール。 CentOS6に新規インストールして、5.7.8RC2で試していた内容を再確認。 インストール&起動 http://dev.mysql.com/downloads/repo/yum/ からリポジトリファイルを取得してインストール # rpm -ivhmysql57-community-release-el6-7.noarch.rpm 準備中... ########################################### [100%] 1:mysql57-community-relea########################################### [100%] # yum installmysql-community-client \

RDB v.s KVS KVS触っていて、「RESTAPIがあるのっていいなー」とは思う。複雑なクエリは出せないけど、curlコマンド一発でアクセスできる。だったら複雑ではないクエリなら、mysqlにそういうRESTのかぶせものがあってもいい。mysql-to-restは nodeで使える、mysqlにREST をかぶせるライブラリ 以下、mysql-to-restを使ったサンプルソース。依存モジュールはmysql-to-restのREADMEにしたがって入れてください。手元にポケモンGOのポケモンの出現情報をためたテーブルがあるのでそれを取得してみた。 varmysql = require('mysql'); var connection =mysql.createConnection({ host : 'localhost', user : 'root', password :

こんにちは、管理課でありながらエンジニア(?)のtetsuです。MySQLでrootパスワードを紛失したり、またはパスワードが行方不明になったりしたとき、MySQLへの接続が出来なくなったら冷や汗ものですよね? よくこんなエラーに遭遇します。ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 今回は、このような場合でも、MySQLのrootのパスワードをリセットする方法を紹介します。 サーバの環境はCentOS、MySQL上での説明になります。 サーバへ接続 まずはサーバへSSH接続をします。これを行えないと話が始まりません。笑 SSH接続については省略します。 起動しているMySQLを停止MySQLサービスを下記のコマンドで一旦停止させます。 service mysq

ユーザ名や接続許可するネットワークなどは適宜変更してください New Relic Platform Installerのインストール New RelicのPluginsを簡単に導入することができるインストーラーです。通称npiと云います npiのインストールにはNew Relicのライセンスキーが必要です 各プラットフォームごとにインストーラーが用意されていますので、こちらのページから監視エージェントを稼働させるサーバに適したものを選択してください https://discuss.newrelic.com/t/getting-started-with-the-platform-installer/842 下記はRed Hat/CentOSのx64でのインストール例です YOUR_KEY_HEREにあなたのNew Relicのライセンスキーに置き換えてください デフォルトでは**$HOME*

New Relicについて New Relicは、SaaS型の性能監視サービスです。 ・New Relic https://newrelic.com/ 少し古いですが、このブログでもNew Relicを紹介しました。 ・性能監視サービスNew Relicについて https://inaba-serverdesign.jp/blog/20130912/newrelic.html New Relicは、サーバーにエージェントをインストールすることで自動的に監視データをNew Relicのサーバーに収集するので、簡単な設定で性能監視情報を可視化することができます。 Datadogや、はてなのMackerelと同様のサービスです。 New RelicMySQL Pluginについて New RelicMySQL Pluginは、DBサーバーに接続してSHOW STATUS, SHOW INNO

あまりにも処理に時間がかかるようなSQLを実行してしまい、MySQLがうんともすんとも言わなくなってしまうような状況、よくありますよね。っていうか、まぁそんな状況あってはならないんですが、時たまあります。そんな時、問題となっているクエリの処理を止めたいわけです。 特定のクエリを止める方法MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 こちらを見てもらえればやり方は分かります。単純にMySQLに入って、show processlist;で問題のあるクエリを発見し、プロセスIDを kill するだけ。とても簡単。 複数のクエリを一括で止める方法 今回は問題のあるクエリが100個あったらどうする…?的なのを解決するエントリーです。まぁ、問題あるクエリ100個ある状況は、アプリ的に問題あるんじゃね?っていうレベルですが。 1個ずつプロセスIDをコピペして…なんてやってられないです

スナップショットを使えばとある瞬間のディスクやファイルシステムのデータをいつでも後から参照することができる。しかもスナップショットの作成は一瞬だ。スナップショット機能を活用すれば最強のオンラインバックアップソリューションが出来るだろう。 しかし、スナップショットでバックアップを取るなんて危険な操作じゃないのか?!と不安に思われる方もいらっしゃるかも知れない。MySQL Serverが稼働中にいきなりデータだけをとってくるのだから、そのような疑問を持たれるのは頷ける。しかし仕組みさえ分かればスナップショットによるバックアップは怖くないということが分かるはずだ。そこで、まずはスナップショットによるバックアップの仕組みについて説明する。スナップショットを取る際の要件は次の通りである。 全てのデータを単一のボリュームに置くこと。つまり、一回のスナップショット操作でバックアップが取れることだ。 ディ

この記事はMySQL Casual Advent Calendar 2013 on Zusaarの19日目です。 yokuさんの記事「日々の覚書: あなたのMySQL 5.6トレンド力をチェックする15の質問」を見て、新しく加わったオプティマイザのことをちゃんと調べていなかったと思いまして、改めて調べてみました。 まず、どういう種類があるでしょうか。例として、ひとまず5つあるようです。 Index Condition Pushdown(ICP)の追加 BKA-Joinの追加 Multi-Range Read(MRR)の追加 FROM句サブクエリーの最適化 Optimizer Traceの追加 これら、Block Nested-Loop(BNLJ)やBKA、ICPetcに関して、nippondanjiさんの記事がわかりやすく説明してくださっています。 ここでは、第一弾(?)としてICPを改

最新の開発版であるMySQL 5.6.3-m6がリリースされた。清く正しいMySQLerの皆さんはすでにダウンロードして、評価を楽しんでくれていることだろう。はっきり言ってこのバージョンは凄い。明らかに前バージョンのMySQL 5.6.2から搭載されている新機能の数は膨大である。それはMySQL 5.6.3のリリースノートを見てもらえば一目瞭然だ。凄いボリュームだからだ。 今回はそんな膨大な新機能を搭載したMySQL 5.6.3について、要点を解説しようと思う。MySQL 5.6.3は開発版なので今直ぐ本番環境へ投入したい!というはやる気持ちはグッと我慢して頂きたいが、ぜひ評価はしていただきたいと思う。 パラレルSQLスレッドMySQLのレプリケーションでは、大量のクエリを実行すると何かとスレーブが遅れがちであった。スレーブでは単一のSQLスレッドだけがクエリを実行するからである。その問題

概要 http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html マニュアルでは以下のように説明されている。 変数名 意味 Sort_range レンジを使用して行われたソートの回数。 Sort_scan テーブルをスキャンすることによって行われたソートの回数。 Sort_merge_passes ソートアルゴリズムが必要としたマージパスの数。この値が大きい場合、システム変数のsort_buffer_sizeの値を増やすことを検討すべきです。 Sort_rows ソートされた行数。 ステータス変数の実体 変数名 実体 Sort_range STATUS_VAR.filesort_range_count Sort_scan STATUS_VAR.filesort_scan_count Sort_merge_passe
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く