5時間モノの alter table が Lost connection to MySQL server during query したんだけど show processlist するとまだ動いてるっぽいから放置しとけば完遂するのかなと思ってるんだけど大丈夫だろうか、、、 2015-03-30 16:47:05 via Twitter for iPhone とりあえず show processlist してまだ動いてるっぽかったら、datadir 配下で #sql-xxxx_xxxxx.ibd な名前のファイルが育っているかどうか確認する。 タイムスタンプが更新されていればテンポラリテーブルへのデータコピーが生きてるということになるので、あとは show processlist を監視して終わるのを待てば良い。 で、終わったっぽかったら show create table を確認して変更が
あまりにも処理に時間がかかるようなSQLを実行してしまい、MySQLがうんともすんとも言わなくなってしまうような状況、よくありますよね。っていうか、まぁそんな状況あってはならないんですが、時たまあります。そんな時、問題となっているクエリの処理を止めたいわけです。 特定のクエリを止める方法 MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 こちらを見てもらえればやり方は分かります。単純にMySQLに入って、show processlist;で問題のあるクエリを発見し、プロセスIDを kill するだけ。とても簡単。 複数のクエリを一括で止める方法 今回は問題のあるクエリが100個あったらどうする…?的なのを解決するエントリーです。まぁ、問題あるクエリ100個ある状況は、アプリ的に問題あるんじゃね?っていうレベルですが。 1個ずつプロセスIDをコピペして…なんてやってられないです
あまりぐぐっても出てこなかったので簡単に書いてみる。 MySQL5.5のmy.cnfをそのまま流用してMySQL5.6を起動すると以下のようなメッセージがエラーログファイルに出力される。長いので改行していますが実際は一行。 121104 22:29:57 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).こちらはMySQL 5.6.6から追加されたexplicit_defaults_for_timestampによるもの。 booleanでデフォルトはFALSE(0)。動的変更は不可となります。公式Doc とりあえずFALSEの
MySQL は、次のような変な日時を DATETIME に挿入出来てしまいます。 create table tt (dd datetime); insert into tt value (0); /* 0000-00-00 00:00:00 */ insert into tt value (''); /* 0000-00-00 00:00:00 */ insert into tt value ('9999-99-99 99:99:99'); /* 0000-00-00 00:00:00 */ insert into tt value ('2000-04-31 00:00:00'); /* 0000-00-00 00:00:00 */ insert into tt value ('2000-00-00 00:00:00'); /* 2000-00-00 00:00:00 */ あまり訓練され
掲題のMySQL5.6の新機能で遊んでみたメモ。 InnoDBバッファプールの内容をファイルに書き出しておくことが出来る機能が追加された。 書き出すタイミングは正常終了時(SET GLOBALまたはmy.cnfでinnodb_buffer_pool_dump_at_shutdown = 1を設定)または 任意のタイミングで即時書き出し(SET GLOBAL innodb_buffer_pool_dump_now = 1;) 読み出すタイミングは起動時(my.cnfにinnodb_buffer_pool_load_at_startup = 1)または 任意のタイミングで即時読み込み(SET GLOBAL innodb_buffer_pool_load_now = 1;) これで、mysqldを再起動してバッファプールが空っぽになっても 素早くウォームアップできるぞ、ということらしい。 特に何
MySQLにはStrict Modeってのがあることを知ったのでメモ。 Strict ModeってのはSTRICT_TRANS_TABLES、STRICT_ALL_TABLESのどちらかが有効になってる状態の事。 設定方法はmy.cnfに書くんですが、そもそもStrict Modeって何って話からですね。 Strict Modeとは この設定はカラムに不正な値を入れた場合に警告じゃなくてエラーを返すというもの。 例えばcharのカラムに"1"という文字列を入れたい時、Strict Modeがoffの場合はダブルコーテーションを付けないとエラーになる。Strict Modeがoffだとうまいことやってくれる。 細かい挙動もオプションで制御可能。 例えばStrict Modeをonにした状態でDateのカラムに"2012-04-31"と入れるとエラーになる。 だけどALLOW_INVALID_
いやまあ、マニュアルに書いてあるけど。 http://dev.mysql.com/doc/refman/5.6/en/option-files.html Linuxで公式MySQL、--defaults-file, --defaults-extra-fileを指定しない場合は、 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf SYSCONFDIR/my.cnfのこと。 公式のバイナリーはSYSCONFDIR== /usr/local/mysql/etc。cmakeのオプションで変えられる。 MariaDBはこいつが設定されていないっぽい。 /usr/local/mysql/my.cnf $MYSQL_HOME/my.cnfのこと。 basedirを設定してれば$MYSQL_HOME== basedirになる。 /home/
もう寒の入りを過ぎましたね。DBAのたなかです。 GAからもうすぐ1年、社内ではもう相当カジュアルにMySQL 5.6をインストールしています。今までは新規サービス(や、新規機能)での導入がほとんどだった5.6を、このたびトラフィックガンガンのサービスにアップグレードで導入しました(と、偉そうに言っていますが私でない別のDBA氏が主担当のサービスです) 主な理由はInnoDB Compressedを使っていたのでその性能アップに期待…というところだったんですが、弊社DBAが神代の時代より試行錯誤を重ねたどり着いた究極のmy.cnf(?)、いわゆる秘伝のタレが 残 念 な が ら 腐 っ て お り 夜を徹してアップグレード作業をしていた担当DBA氏が青い顔(推定。チャットだった)で ス ロ ー ク エ リ ー が 1 0 倍 く ら い に な っ た ん だ け ど … と訴え、彼はその
しわっす!DBA 兼オペレーションエンジニア兼タスクマネージャやってる riywo です。何のネタを書こうかなぁと考えたのですが、正直ネタを仕込む時間もなかったので僕がいつもやってることをさらっと紹介するということで勘弁して下さい>< MySQL がおかしい! 03:14 hidek: なんかエラー出まくってるんだけど! 03:14 zigorou: MySQL と通信してるとこっぽい 03:15 riywo: 見ます こんなやりとりは皆さん日常茶飯事ですよね?ね?ね?こんな時に、DB に責任を持つものとして真っ先に対応するのが僕らの仕事です。でも、じゃあ具体的にこのあと何をしましょう?既にサービスはエラーだらけで一刻を争う状態です。 (対応開始) まずはエラーメッセージ 今回の様な場合はアプリのエラーログにどばっと MySQL に関するエラーが出ているでしょう。まずはそれを見ることが始ま
FROM句にサブクエリを使う時の順番を書いたので、 今度はWHERE句に使う時(相関サブクエリ)の順番も考察してみる。 毎度の投げ遣りサンプルテーブルはFROM句サブクエリの時と一緒。 あと、今回はt1テーブルをまるっとtt1テーブルにもコピーして2つにしておく。 取り敢えずこんなサブクエリは如何だろうか。 mysql> SELECT * FROM t1 WHERE val IN (SELECT val FROM tt1 WHERE num BETWEEN 1 AND 10); +-----+----------------------------------+ | num | val | +-----+----------------------------------+ | 1 | c4ca4238a0b923820dcc5
公式Facebookページでセッション情報、講師情報を公開 be a Database Tongalist 〜とんがったデータベースエンジニアになれ〜 セッション セッションスケジュール *セッションボックスをクリックすると、講師情報、セッション概要がご覧いただけます *セッションスケジュール・内容は変更される場合がございます *セッションは予約制ではございません。満室の場合は入室いただけない場合がございます *セッションルームの定員は、 各部屋70名となっております *外国人講師のセッションは、英語となります 11月13日(水) Opening Session: 10:00 – 10:45 A11:Opening Database Tongalistが切り開く、データベース技術の未来小幡一郎 Session2: 11:00 – 11:45 A12:Oracle Trouble-s
松信さんが作った Replication Booster for MySQL をデータサイズが大きいデータベースに対して使ってみました。 Yoshinori Matsunobu’s blog: Making slave pre-fetching work better with SSD github - yoshinorim/replication-booster-for-mysql Replication Booster for MySQL をものすごく簡単に説明すると、以下のようになるでしょうか。 MySQL でレプリケーションを設定した場合、マスターのバイナリログをIOスレッドが読み取り、relay-logへ記録します。そしてSQLスレッドがrelay-logから読み取ってテーブルを更新して行きます。Replication Booster を実行するとrelay-logを読み取り、更
April 8, 2013 MySQL Casual Talks vol.4で話してみて ってmyfinderさんからお声がけしてもらって、SQL周りノータッチで生きてきて 今色々勉強しだしてるけど、正直当日までに有用な話ができる気がしてない。 再来週のオレが今のオレよりもう少し有意義な情報を持ち合わせているようにしたい。 この前tweets.zipをMySQLに突っ込んでSQLを学ぶ(導入編)というのを書いて ホッテントリー入ったねとか、何回もブクマ数数えたでしょ?とか コンテンツ力高いとか、正直中身ないでしょアレとか。色々言われたんだけど SQLをはじめて作成するにあたって勉強になったので、その時のメモ 参考: MySQL 5.1 リファレンスマニュアル :: 10 データタイプ :: 10.1 データタイプ概要 :: 10.1.4 データタイプデフォルト値 TEXTタイプではNOT
追記:記事の文中で5.6のsql_modeデフォルト値について若干実際の挙動と異なる表記をしていました。rpmでinstallすると/usr/my.cnfというのがひょっこりいて、この中に [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES という記述があり、これを/etc/my.cnfと合わせて設定している様です。で、デフォルト値については5.6.6以降はデフォルト値が「The default SQL mode in MySQL 5.6.6 and later is NO_ENGINE_SUBSTITUTION;」でそれ以前のデフォルト値は「MySQL 5.6.5 and earlier, it was empty (no modes set)」となっているようですね。 詳しくは http://yoku0825.blo
1 Copyright 2009 Sun Microsystems inc The World’s Most Popular Open Source Database Linux/MySQLサーバーの パフォーマンスチューニング 松信 嘉範 (MATSUNOBU Yoshinori) http://twitter.com/matsunobu http://opendatabaselife.blogspot.com 2 Copyright 2009 Sun Microsystems inc The World’s Most Popular Open Source Database 自己紹介 • Sun Microsystems所属 MySQLコンサルタント • 2006年9月からMySQLコンサルタント として勤務 • パフォーマンスチューニング、 HA環境の構築、DBAトレーニング等 お気
使ってみたりBugsに色々上がったりしているのを見たのでメモ。 ネタ元はOracle公式のここ。 MySQL Server 5.6 defaults changes ・binlog_checksum ⇒5.6からの新規パラメータ。 暗黙のデフォルトはcrc32だが、 マスターが5.6、スレーブが5.5以下の(定石を無視した)環境ではnoneでないとI/O Threadが転ける。 ・innodb_buffer_pool_instances ⇒5.5ではデフォルト1が、デフォルトautosized8に。 autosizedではinnodb_buffer_pool_sizeが1300M以上の時はinnodb_buffer_pool_size/128Mに設定されるらしい。 木下さんが昔「5.5では1から動かさない方が良いよ」って書いていたけれど、 Dimitriさんが5.6でやったやつを見ると使い
Viva Developer! Oracle ACEってどんな人?世界基準のトップエンジニアにインタビュー 《第11回:平塚 貞夫氏》 MySQL のことを正しく伝えたい 2012年、MySQLの分野で新たなOracle ACE が誕生しました。今回新たに認定された平塚貞夫氏にOracle ACE 認定の感想を伺いました。MySQL の技術情報を正しく伝えるために平塚氏がとった行動とは(編集部) ■MySQL との出会い Oracle ACE 平塚 貞夫氏 NTTコムウェア株式会社で、データベースエンジニアとしてOracle DatabaseとMySQLを使い倒す日々。 クラシック音楽が好きで、自らもピアノを演奏する。 ブログ:SH2の日記(http://d.hatena.ne.jp/sh2/) 現在、データベースの技術支援やトラブル対応を行う部署に所属しています。この部署は、元々Orac
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く