MySQL 設置型サービス紹介

NAVERクラウドプラットフォームMySQL設置型サービスの概念と基本的な構造を説明します。 ”MySQL”は、世界で最も多く使われるオープンソースのリレーショナルデータベース(RDBMS)であるMySQLを利用しています。

MySQL

世界で最も人気があり、最も多く使われるオープンソースベースのリレーショナルデータベースシステム(Relational Database Management System、以下RDBMS)です。他のRDMBSと同様にデータベースを作成して、テーブル、コラム単位の構造を使って、レコード単位のデータを照会・変更・追加・削除します。別のGUIを提供せず、主にCLI(Command Line Interface)を用いて管理し、GUIベースの管理のためにMySQLで提供されるWorkbenchやThird Party-Toolを使用します。

2008年SunがMySQL ABを買収した後、2010年にOracleがSunを買収し、現在MySQLEnterprise/ Community Versionのすべての権利は、Oracleが所有しています。

NAVERクラウドで提供されるMySQL設置型サービスでは、MySQL Community Edition(GPL)を提供してBasic Installレベルの既設の画像をサポートします。

設置型サービス

NAVERクラウドでサポートしているMySQL設置型サービスの場合、DBのインストールについて円滑な運用基準を提示する環境ファイルを提供し、DBの状態がわかるCLI形態のモニタリングBinaryを含むMySQL DaemonにStartup状態までサポートします。これに関連してDBのインストール以外の部分については、技術サポートはしていません

RPM/APT

MySQLのインストール方法には、Source Compileインストール方法、RPM/ APTのインストール方法、Binaryのインストール方法があり、NAVERクラウドでは、Normal Install方法である(RPM APT)のインストールイメージを提供します。RPM(APT)で使用される.repoファイルは、MySQLで公式的に提供するファイルを使ってインストールを行い、Repoで提供されるLatest Versionを基本に、サーバのイメージに入れて提供します。

CentOS6.x/7.x with MySQLで使用するRPMのインストールパッケージは、以下のように構成されます。

MySQLのインストール及び実行に関連してOS Default設定で追加インストールされるパッケージです。

  • mysql-server
  • mysql-devel
  • libmysqlclient-dev
  • build-essential

APT Install

Ubuntu14.X/16.X with MySQLで使用されるAPTでインストールするパッケージは、以下のように構成されます。

MySQLのインストール及び実行に関連してOS Default設定で追加インストールされるパッケージです。

  • mysql-server
  • libmysqlclient-dev

Recommanded Parameters (5.6/5.7 共通)

NAVERクラウドプラットフォームの中のMySQL設置型イメージで標準化し、Recommanded Parameterは以下のように構成されます。

  • innodb_file_per_table
  • innodb_log_file_size = 512M
  • innodb_log_files_in_group = 2
  • default_storage_engine=InnoDB
  • query_cache_type = ON
  • query_cache_size = 0M
  • sysdate-is-now
innodb_file_per_table

InnoDBテーブルの作成時にInnoDB Global Tablespaceを使用すれば、テーブル削除時にすでに増えた物理サイズは小さくなりません。
innodb_file_per_tableオプションを使用すると、InnoDBテーブルの作成時にはテーブルごとにファイルを作成し、テーブルの削除時には該当ファイルが削除され、物理空間を確保することができます。

Innodb_log_file_size/innodb_log_files_in_group

Heavy Trafficが入ってくる場合、CheckPointのためのボトルネックを回避するためにinnodb_log_file_sizeオプションを増やして設定します。
該当Variablesを調整するためには、DB Restartが必要です。

default_storage_engine

Online-DDL 及び Transction使用が可能なInnoDBで標準を指定します。

query_cache_type/query_cache_size

DB起動後、query_cacheをユーザーが動的にON/ OFFできるようにON/0に設定します。以降のサービスの状況に合わせて調整します。

sysdate-is-now

ysdateを使用している場合は、Replication構成でMaster-Slave間でのデータ処理時間が異なる場合、Time Typeデータが異なる場合があり、sysdateの場合は自動的にnowをreplaceします。

MySQL 設置型サービスの管理

MySQL設置型サービスで関連する管理方法を説明します。

MySQL 画像サーバの生成

MySQLがインストールされたインスタンスサーバを生成すると、以下のようにNAVERクラウドに標準化されたmy.cnfの環境を持つMySQL DaemonがStartupして生成された後、Daemonが起動してから提供されます。

my.cnf

my.cnf의 Parameter説明は下記の通りです。

属性 説明
expire_logs_days = 7 log-binに設定されたログのサイズが大きくなることを防止するために7日間保存するようにします。
innodb_file_per_table InnoDBテーブルの作成時にInnoDB Global Tablespaceを使用すれば、テーブルの削除時すでに増え、物理サイズは小さくなりません。
innodb_file_per_tableオプションを使用すると、InnoDBテーブルの作成時にはテーブルごとにファイルを作成し、テーブルの削除時には該当ファイルが削除され、物理空間を確保することができます。
innodb_log_file_size Heavy Trafficが入ってくる場合、CheckPointのためのボトルネックを回避するためにinnodb_log_file_sizeオプションを増やします。
Variablesを調整するためには、DB Restartが必要。
iinnodb_log_files_in_group innodb_log_fileの数を指定します。Rotationのために2つ以上を推奨します。
default_storage_engine Online-DDL 及び Transction使用が可能な InnoDBで標準を指定します。
query_cache_type

query_cache_size
DB起動後、query_cacheをユーザーが動的にON/ OFFできるようにON/0に設定します。以降のサービスの状況に合わせて調整します。
sysdate-is-now sysdateを使用している場合は、Replication構成でMaster-Slave間でのデータ処理時間が異なる場合にTime Typeデータが異なる場合があり、sysdateの場合は自動的にnowをreplaceします。
log_timestamps = SYSTEM(5.7 only) MySQL 5.7で LogTimeが UTCになっているため、SYSTEM Local TIMEに変更します。

MySQLインストールされたディレクトリは、以下の通りです。

属性 説明
DATADIR /var/lib/mysql/
SLOW_LOG /var/lib/mysql/*slow.log
ERROR_LOG /var/log/mysqld.log - CentOS

/var/log/mysql/error.log - Ubuntu
my.cnf /etc/my.cnf - CentOS

/etc/mysql/my.cnf - Ubuntu.
sqlstatus_nCloud /usr/bin/sqlstatus_nCloud

サーバ生成の手順

MySQLサーバ生成のプロセスは以下の通りです。

www.ncloud.com 接続及びLogin

1. 右上のコンソールを選択して、コンソールにアクセスします。

2. コンソール画面で、サーバ生成を選択します。

サーバの生成

Step 1. サーバイメージの選択

① DBMS > MySQL イメージを選択します。

② OS Versionに該当するMySQL Versionをチェックした後、次へボタンを選択します。

③ ポップアップウィンドウの案内を確認します。

確認 ボタンをクリックしてポップアップウィンドウを閉じます。

Step 2. サーバの設定

1. 下記のようにサーバタイプと希望する料金制を選択します。

Step 3. 認証キーの設定

1. ユーザーの認証キーを選択します。

Step 4. ファイアウォールの設定

1. 保有しているACGを選択するか、新規に作成します。

Step 5. 最終確認

1. 選択された内容を確認した後、MySQLがインストールされたサーバを生成します。

サーバ接続の設定及び確認

ポートフォワーディングの設定

1. サーバの生成後、上部の[ポートフォワーディングの設定]ボタンを選択します。

1. 下の画面のポートフォワーディング設定でssh接続のための外部ポートを登録します。

2. 外部ポートの登録後、[追加]を選択します。

3. 適用をクリックします。

管理者パスワードの確認

1. ポートフォワーディングの設定後、上部のサーバの管理と設定の変更ボタンを選択します。

2. 以後、ポップアップメニューから管理者パスワードの確認を選択します。

3. 管理者パスワードの確認ボックスからファイルの選択の認証キーファイルを選択します。

4. パスワードの確認ボタンをクリックします。

5. 以降、画面に表示されたパスワードを認知します。

ターミナルを通じたサーバ接続

ターミナルプログラムを使用して下記のように接続します。

  • PORT : ポートフォワーディングに設定したポート番号
  • グローバルIP:ポートフォワーディング画面で案内されたサーバ接続用のグローバルIP
  • パスワード:管理者パスワードに現れたパスワード(最初のパスワードは必ず変更します。)
    ssh -p [PORT] root@[グローバルIP]
    

サーバイメージの生成後

  1. サーバの生成後、すぐに使用しない場合は、セキュリティリスクのために MySQL DaemonをShutDown**します。
  2. 生成されたMySQLの場合は、パスワードが設定されていないため、必ずパスワード設定をしてください。

MySQL 起動・停止及び接続手順

  • MySQL Daemonの起動及び停止は下記のようなコマンドで実行します。

    • CentOS
      shell> /sbin/service mysqld start
      shell> /sbin/service mysqld stop
      
    • Ubuntu
      Shell> /usr/sbin/service mysql start
      Shell> /usr/sbin/service mysql stop
      
  • MySQL Daemonの駆動有無は、以下のようなコマンドで確認します。

    Shell> ps -ef | grep mysqld
    
    • 結果: mysqld/mysqld のプロセスが表示されなければなりません。
  • NAVERクラウドで生成したMySQLは、以下のコマンドで接続します。

    Shell> mysql -uroot
    
  • MySQL Passwordポリシーに基づいて、最初のパスワードは指定されません。

  • root Passwordの場合は設定しないので、セキュリティ侵害を防止するため最初の接続時に必ずパスワードを変更します

  • root パスワードは、以下のコマンドを使用して変更します。

    • MySQL 5.6
      mysql> set password=password('パスワード');
      
    • MySQL 5.7
      mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
      
  • MySQL Built-in Password の基本ポリシーは下記の通りです。
    • 最小の長さ 8文字以上
    • 特殊文字1個以上
    • 数字1個以上
    • 大小文字の組み合わせ1個以上

MySQL 画像サーバの返却

NAVERクラウドでMySQLが生成されたサーバの返却時、以下の手順の後に返却することをお勧めします。

  1. MySQLで保存したデータのバックアップ
    • バックアップされたデータの場合、Download以降、別途に保管
  2. MySQL Daemonの停止
  3. mysqlが保存されたData Directoryを削除
    • 例: rm ‐rf /var/lib/mysql
  4. NAVERクラウドコンソールから [停止]->[返却] 順に返却を行います。

MySQL 外部接続の許容

UbuntuでMySQLを使う場合、 Default ParameterによってLocalhostのみで接続可能です。
従って、外部接続が可能になるように、下記の例でガイドします。

  1. MySQL DB 接続

  2. アカウント権限を付与
    例: GRANT ALL PRIVILEGES ON *.* to 'アカウント名'@'%' IDENTIFIED BY 'パスワード';

  3. 環境ファイルの修正
    例: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

  4. bind-address コメントアウト

  5. MySQL 再スタート

SQLSTATUS

NAVERクラウドで提供されるMySQLサービスには、CLI(Command Line Interface)形式のモニタリングプログラムがあります。

  • 該当プログラムは、nCloud サーバ以外に、外部へ流出と任意に変更、または変調する場合を禁止しています。
概要

MySQLの内部の Statusを1秒単位に表示されるようにBinary形で提供します。
1秒間にMySQL StatusをDisplayしてReal-TimeでDBの変化を見ることができます。

使用法

sqlstatus_nCloudで使用するアカウント生成(Defaultアカウントを含む)

 GRANT PROCESS, SHOW DATABASES, SUPER, EXECUTE, REPLICATION CLIENT ON *.* TO 'sqlstatus_ncloud'@'127.0.0.1' IDENTIFIED BY PASSWORD '*AB9C7542BD3FE96F5342F2A616D030CF4494EB44';

インストール経路 : /usr/bin/sqlstatus_nCloud

基本3306ポート使用時 : sqlstatus_nCloud

3306以外のユーザーのPortを使用時 : sqlstatus_nCloudのポート番号

使用しない場合、Defaultアカウントは削除しても構いません。(DROP USER sqlstatus\_ncloud@127.0.0.1;)

ユーザー画面

モニタリン項目の説明
属性 説明
Port sqlstatus_nCloudで接続するDBのポート情報。
Time モニタリン時間。
Conn 現在DBに接続するConnection Count
Run DBにRunning中のThread Count
現在 DBでクエリを処理するThreadの数を表します。
Abort DBに接続失敗するCount
max_connection 数を超えるか、DBアカウントテーブルに登録されていないユーザーがアクセスする際の数を表示します。
Select DBで処理するSELECT Count
Update DBで処理する UPDATE Count
Insert DBで処理する INSERT Count
Delete DBで処理する DELETE Count
Replace DBで処理する REPALCE Count
Qcache Query Cacheを通じて処理するクエリCount
Call Procedure/Functionを使用して処理するクエリCount
QPS DBで処理されたクエリのTotal Count
Slave Replication 構成されたSlaveDBの複製遅延時間
Replicationではない場合 Default 0に表示
user CPU normal processes executing in user mode
system CPU processes executing in kernel mode
iowait CPU waiting for I/O to complete
Slow_queries long_query_timeで指定された数より長く実行されるクエリCount
Sum sqlstatusを実行した以後に生じたSlowQuery Count
Default Parmeterは10秒で、下記のコマンドで変更可能です。(単位 Sec)
mysql> set global long_query_time=1

関連情報のショットカット

下ガイドで関連情報を確認することができます。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...