MySQL

【AWS】【Aurora】Aurora の ストレージ について

■ Aurora の ストレージ 【1】 クラスターボリューム 【2】 ローカルストレージ 【1】 クラスターボリューム * 3つのアベイラビリティゾーンにまたがるSSD(Solid State Disk)を利用したストレージをDBクラスター単位で保持 => データはアベイラビリティ…

【MySQL】 MySQL 8.0 のインストール / アップデート ~ CentOS 編 ~

■ はじめに * 2018/04/19に「MySQL 8.0.11 (GA版)」を正式リリースされたので、試してみる * なお、v5.7 のインストールについては、以下の関連記事を参照のこと。 https://blogs.yahoo.co.jp/dk521123/36283180.html 補足:GAについて * GA : General Avail…

【トラブル】【Java】MySQLのJDBCドライバを v5.1.X から v8.0.X に上げた時のトラブル

【1】MySQLのJDBCドライバを上げたらエラー「The server time zone value」になる 現象詳細 MySQLのJDBCドライバを v5.1.46 から v8.0.11 にあげたとこと、 以下の「エラー内容」になる build.gradle 修正前 (現象発生なし) dependencies { // MySQL compil…

【MySQL】 GROUP BY句での論理演算 ~ BIT_OR() 等 ~

■ はじめに * テーブルのBOOL(BIT)項目に対して、GROUP BYした後に論理演算 OR をしたかったので調べてみた 【MySQL】解決案 * BIT_OR() ってのがある 公式サイト https://dev.mysql.com/doc/refman/5.6/ja/group-by-functions.html ■ 実行環境 * DB : MySQL…

【MySQL】 LIMIT ~ 出力する行数を制限する ~

■ LIMIT * 出力する行数を制限する * PostgreSQLでも使えるみたい ■ 構文 SELECT [項目1] (, ...) FROM [テーブル名] LIMIT ([開始位置(行数],) 取得する行数 ■ サンプル SELECT * FROM user LIMIT 5 出力結果 "1" "1" "Kim" "1983-12-11" "2" "1" "Mike" "…

【MySQL】MySQLのインデックスあれこれ

■ はじめに https://dk521123.hatenablog.com/entry/2010/04/01/175501 でやったインデックスを行ったが、MySQLに絞って書く。 目次 【1】インデックス種類 【2】インデックス作成 【3】インデックス削除 【4】インデックス情報表示 【5】インデックス…

【MySQL】【ストアド】ストアドプロシージャ / ストアドファンクション / PREPARE構文

■ ストアドプロシージャ * CREATE PROCEDURE を使う サンプル 定義 delimiter // CREATE PROCEDURE `give_hello` (OUT result VARCHAR(30)) COMMENT 'Hello World! for stored procedure.' LANGUAGE SQL BEGIN SELECT COUNT(*) FROM customer INTO result; E…

【MySQL】 接続数に関わるあれこれ

■ クライアントの同時接続最大数 max_connections 目的 * MySQLクライアントから無制限にコネクションが張られることによってMySQLサーバの負荷が増大し、 最終的にはサービスが停止してしまうことを防ぐために、本パラメータでアクセス制限している 補足 * …

【MySQL】トリガー

■ トリガー * テーブル操作(UPDATE/INSERT/DELETE)が行われた時に イベント駆動で実行する仕組み ■ トリガーの作成 構文 DELIMITER // CREATE TRIGGER 【トリガー名】 【BEFORE or AFTER】 【INSERT or UPDATE or DELETE】 ON 【対象テーブル名】 FOR EACH …

【シェル】【MySQL】MySQLの全DBをエクスポート/インポートするスクリプト

■ はじめに 「mysqldump --all-databases」の場合、 MySQL自体のシステムに関わるDB「information_schema」「performance_schema」「mysql」「sys」も含んだ形で エクスポートしてしまうので、そのことを考慮したシェルスクリプトを書いてみる mysqldump に…

【MySQL】 CONCAT / GROUP_CONCAT

■ CONCAT * 文字列を結合する サンプル 例1 select CONCAT('Hello', ' ', 'World', '!!') 出力結果例 Hello World!! 例2 select CONCAT(c.first_name, ' ', c.family_name) from customer c 出力結果例 Mike Abel Ken Allen Kevin Cox Smith Abel Ken Dean T…

【MySQL】【Aurora】 実行時間が掛かるSQLの監視手法

■ 実行時間が掛かるSQLの監視手法 [1] show full processlist で、実行中のSQLを表示する [2] slow_query_log / long_query_time を使って、遅いクエリを特定する [1] show full processlist で、実行中のSQLを表示する G オプションでクエリ結果を垂直表示…

【MySQL】MySQL Utilities ~ mysqldiff / mysqldbcompare etc... ~

■ MySQL Utilities とは? * Python言語により作成された便利なコマンドラインツール群 mysqlserverclone * 動作中のMySQLを元に別インスタンスを開始 * 注意点 * クローン元からデータベースオブジェクト(表、ビュー、プロシジャ、トランザクション、等)…

【AWS】【Aurora】Aurora の ゼロダウンタイムパッチ機能 (ZDP)

■ はじめに https://qiita.com/tonishy/items/542f7dd10cc43fd299ab と、同じで、Aurora 1.14 強制アップグレード通知が来た。 http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Aurora.DatabaseEngineUpdates.html によると、「更新では、デー…

【MySQL】MySQLの日時に関する自動初期化および更新機能

■ はじめに テーブルには、よく作成日時、更新日時を付けることが多いが それらに付与する「自動初期化」および「更新機能」があるので取り上げる また、使用する際の注意点を記す。 ■ 構文(CREATE TABLE) ・・・略・・・ 【作成日時】 DATETIME NOT NULL …

【MySQL】 INSERT INTO ~ ON DUPLICATE KEY UPDATE ~の使用上の注意

■ はじめに https://blogs.yahoo.co.jp/dk521123/36225584.html で扱ったInsert or Update「INSERT INTO ~ ON DUPLICATE KEY UPDATE ~」で 盲点だったことをまとめる。 ■ 使用上の注意 * AUTO_INCREMENT を使用しているテーブルで、「INSERT INTO ~ ON DU…

【MySQL】MySQL のデグレード v5.7 => v5.6

■ はじめに 開発環境は、MySQL v5.7 だが、本番環境の AWS / Aurora を使っている場合、 2017/08/19現在、Aurora は、MySQL v5.6 と強い互換性があるので、 開発環境もv5.6に合わせておきたいってケースってあり得るのかと。 そういう訳で、MySQL v5.7 から …

【MySQL】【Aurora】リードオンリー のユーザを作成する

リードオンリー のユーザを作成する 主な方法は以下。 [1] コマンドで作成 [2] GUIツールで作成 [1] コマンドで作成 mysql -u root # パスワード入力 # ユーザ作成 mysql> CREATE USER readonlyuser IDENTIFIED BY 'Passwd2#'; # GRANT SELECT ON *.* TO <ユ…

【シェル】【MySQL】シェルで、複数の mysqldumpファイル を実行する

■ はじめに https://blogs.yahoo.co.jp/dk521123/36680883.html で、エクスポートしたダンプファイルを大量に実行させるシェルを書く ■ 仕様概要 以下のようなルールで実装してみる * 同一階層に置かれたダンプファイル(拡張子「*.sql」)を実行する * ダン…

【MySQL】【Aurora】 仮想表 / ダミーテーブル ~ DUAL ~

■ はじめに * 以下の「問題の現象」の解決策として使用したダミーテーブル「DUAL」について、取り上げる ■ 問題の現象 * MySQL で問題なかったSQL文「INSERT SELECT文」が、Amazon Aurola でSQL文法エラーになった 発生環境 問題があったAuroraのバージョン …

【MySQL】 データのエクスポート / バックアップを行うには... ~ mysqldump ~

■ はじめに http://blogs.yahoo.co.jp/dk521123/36589352.html で触れた mysqldump について、扱う。 ■ 使いどころ インポート/エクスポート [1] データ移行 [2] バックアップ etc... ■ エクスポート * mysqldumpを使用する 構文 全てのDBをエクスポートする…

【MySQL】 MySQL の タイムゾーン

■ 現状の設定を確認する SHOW VARIABLES LIKE '%time_zone%'; ■ タイムゾーンの変更について time_zone in Linux http://qiita.com/tailak/items/63dce2dd7dfe049b038e が参考になる [1] 以下のコマンドを実行し、タイムゾーンデータでインポートする ~~~…

【MySQL】【Windows】 MySQL を複数インスタンスで起動させる ~Windows編~

■ はじめに http://blogs.yahoo.co.jp/dk521123/36493945.html のWindows版。 ■ 手順 [1] MySQLのインストール場所(デフォルトなら「C:\ProgramData\MySQL\MySQL Server X.X」) にある「my.ini」をコピー&ペーストし、任意のファイル名(例「my2.ini」)に…

【MySQL】 MySQL での データ移行 を考える

■ 方法 [1] mysqldump を使ってバックアップ [2] Workbenchを使ってデータ移行 [3] SELECT-INERTでデータ移行 [1] mysqldump を使ってバックアップ * 以下の関連記事を参照のこと http://blogs.yahoo.co.jp/dk521123/36680883.html [2] Workbenchを使ってデ…

【MySQL】 MySQL で SSL接続

MySQL で SSL接続 あれこれ 設定が有効になっているか確認 SHOW VARIABLES LIKE '%ssl%'; SSL接続を強制する 「REQUIRE SSL」を付与 GRANT ALL PRIVILEGES ON *.* TO user_name@'%' IDENTIFIED BY 'password' REQUIRE SSL; トラブル 警告:Establishing SSL …

【SQL】【MySQL】 データあればUPDATE、なければINSERT ~ DUPLICATE KEY / 条件付編 ~

はじめに http://blogs.yahoo.co.jp/dk521123/36225584.html でINSERT or UPDATEを扱ったが、条件付きでUPDATEできる事を考える 解決方法 * DUPLICATE KEY UPDATE内で、IF文、または CASE文を使う IF文 IF(【条件式】, 【真の場合の値】, 【偽の場合の値】)…

【MySQL】【Linux】 MySQL を複数インスタンスで起動させる ~ Linux編 ~

■ 方法 [1] mysqld_multi を利用する => MySQL 5.6以前の方法。 [2] systemctlを利用する方法 => MySQL 5.7.13以降の方法。今回は、こっちを扱う。 ※バージョンを確認するには「mysql --version」を実行する ■ 環境 * OS : CentOS7 * DB : MySQL5.7.16 ■ 前…

【MySQL】 MySQL で、データを暗号化 / 復号化 する

■ MySQL で、データを暗号化 / 復号化 する 方法 * AES_ENCRYPT() / AES_DECRYPT() などの暗号化関数を使用する https://dev.mysql.com/doc/refman/5.6/ja/encryption-functions.html ■ 例1 テーブル CREATE TABLE IF NOT EXISTS `user` ( `user_id` VARCHA…

【MySQL】 MySQLで、 日付 / 日時 を扱うには...

日付 / 日時の差分 DATEDIFF * 日付の差分 SELECT DATEDIFF('2016-08-06 12:00:22','2016-08-07 11:00:22'); # -1 TIMEDIFF * 時間の差分 SELECT TIMEDIFF('2016-08-06 12:00:22','2016-08-07 11:00:22'); # -23:00:00 ※ 使用する場合は、以下の「■ TIMEDIFF…

【SQL】【MySQL】 現在日時に近い順にソートし、重複を排除する

お題 * 現在日時に近い順にソートし、重複を排除する サンプル * 顧客テーブル「customer」と予約テーブル「reservation」があり、 予約日時に対して、現在日時に近い順にソートし、顧客名の重複を排除するデータを取得する テーブル customer CREATE TABLE …