TL;DR
* Amazon RDS for MySQL的なものを探しているなら、これじゃないです。
* 単にユーザーとして観測できる範囲で調べて推測しているだけなので、違ったらごめんなさい。
ConoHaでマネージドデータベースサービスを始めたらしいので試してみた。MariaDB 10.0系ですってよ奥様。
チュートリアル的なものは本家のものを。
データベースサーバーを使う - このべん(ConoHa)
で、これはどうやら共用サーバーのようです。
WEBコンソール中の「データベースを作成する」は
mysql> CREATE DATABASE database_name CHARSET utf8;
に、
「データベースユーザーを追加する」は
mysql> CREATE USER user_name@hostname IDENTIFIED BY 'password_string';
に、
「ユーザーがアクセスできるデータベースを設定する」は
mysql> GRANT ALL ON database_name.* TO user_name@hostname
にマッピングされているようです。
mysql> SHOW GRANTS;
+-----------------------------------------------------------------------------------------------------------------------+
| Grants for username@xxx.xxx.xxx.xxx |
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'xxx.xxx.xxx.xxx' IDENTIFIED BY PASSWORD '*E021B6BBA043401E045906A6646199BFADD9A0B1' |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
こんなかんじで。
あ、共用サーバーっぽいの関係上、全世界に3306番ポート解放ってことになると思うので、ユーザー名(特に接続元ホスト指定)とパスワードはかなり重要です。たぶん。
取り敢えずデータベース権限だけでグローバル権限は一切無いので、
* レプリケーション関連の機能は一切使えない
* SET GLOBALで設定する必要がある変数は一切いじれない
* INSTALL PLUGINもちろんできない
WordPressユーザー想定してる感じなんですかね。
なので俺はたぶんお呼びでないし、それならWordPressテンプレート(というのがConoHaにはある)でいいんじゃね? って感じがするけれど。。
有料オプションでバックアップがあるんだけど、これってどうやって取ってるんだろう。XtraDBがある以上オンラインで取るならMyDumperかxbかmysqldumpか、整合性を保つためには一度スキーマの中全部をロックしてやらないといけないんだけど、その辺どうなってるのかも気になる。PITRもできるの? MariaDBが落ちたらちゃんとDNS切り替わるの? とか、クォータもなかなか共用サーバーでやろうとすると奥が深い(information_schemaからデータを引くと誤差とか誤差じゃない何かがあったり、REVOKEやFLUSH PRIVILEDGESでは即時反映されなかったり)ので、どうやってんのかなぁとか。
権限は限られていますが、取り敢えずSHOW GLOBAL VARIABLESの中でめぼしいパラメーターを拾い読み。
*************************** 15. row ***************************
Variable_name: aria_recover
Value: NORMAL
*************************** 16. row ***************************
Variable_name: aria_repair_threads
Value: 1
*************************** 323. row ***************************
Variable_name: myisam_recover_options
Value: DEFAULT
*************************** 324. row ***************************
Variable_name: myisam_repair_threads
Value: 1
MyISAMとAriaのリペアオプションが有効になってる。
( ´-`).oO(あれ、これクラッシュ後にリペアしてる真っ最中のロックってどうなるんだっけ。。
*************************** 25. row ***************************
Variable_name: back_log
Value: 150
共有サーバーなので大き目なのかな。
*************************** 26. row ***************************
Variable_name: basedir
Value: /usr
*************************** 45. row ***************************
Variable_name: character_sets_dir
Value: /usr/share/mysql/charsets/
*************************** 52. row ***************************
Variable_name: datadir
Value: /var/lib/mysql/
rpmでインストールしたかな?
*************************** 34. row ***************************
Variable_name: binlog_format
Value: MIXED
*************************** 277. row ***************************
Variable_name: log_bin
Value: ON
ふむ。一応ONだけど、もちろんREPLICATION SLAVE権限もREPLICATION CLIENT権限も使えない。内部でバックアップ取ってるのかな。
*************************** 131. row ***************************
Variable_name: innodb_buffer_pool_size
Value: 10737418240
*************************** 142. row ***************************
Variable_name: innodb_concurrency_tickets
Value: 5000
*************************** 144. row ***************************
Variable_name: innodb_data_file_path
Value: ibdata1:12M:autoextend
*************************** 154. row ***************************
Variable_name: innodb_file_per_table
Value: ON
*************************** 157. row ***************************
Variable_name: innodb_flush_method
Value:
*************************** 175. row ***************************
Variable_name: innodb_io_capacity
Value: 200
*************************** 176. row ***************************
Variable_name: innodb_io_capacity_max
Value: 2000
*************************** 189. row ***************************
Variable_name: innodb_log_file_size
Value: 268435456
*************************** 190. row ***************************
Variable_name: innodb_log_files_in_group
Value: 2
innodb_concurrency_ticketsはデフォルトより大きくしてある。
InnoDBのコンテキストスイッチ的なものを制御する変数で、OLTPっぽい細かいI/O向けのシステムには小さく, OLAPみたいな大きくI/Oを食うシステムには大き目にするっていうのがあるんだけど、これはOLAPっぽく使うだろうと中の人が想定したんだろうか。
HDDの玉で仮想環境(かどうかは知らないけど)とかだとinnodb_flush_methodを未指定(Linux上ではfsync相当)でinnodb_io_capacityは無理にいじらないのは当たりだと思う。
*************************** 143. row ***************************
Variable_name: innodb_corrupt_table_action
Value: assert
これはXtraDBのオプション なんだけど、吊るしのまま。
*************************** 151. row ***************************
Variable_name: innodb_file_format
Value: Antelope
Super権限がないのでこの値は変えられないし、ということはROW_FORMAT= DynamicやCompressedはここでは使えないってことだ。。
*************************** 296. row ***************************
Variable_name: max_connect_errors
Value: 999999999
*************************** 297. row ***************************
Variable_name: max_connections
Value: 10000
(・∀・)ゞ
TCPポートを叩くだけ叩いてヘルスチェックにしちゃうやつだと、max_connect_errorsを大きくしておかないとそのうちホストごと接続拒否られるというアレか。
この形式だと、mysqldごと落ちてくれるやつはちゃんと切り替わるんだけど、mysqldがストールした場合って切り離してくれないことが多いのよね。
そして、max_connections= 10000が本当に押し寄せたらストールしちゃうんじゃないか感はある。
*************************** 311. row ***************************
Variable_name: max_tmp_tables
Value: 32
何人で共有するかわからないけれど、max_connections 10000に対してちょっと少なすぎるんじゃ。。
とか思ったら、これセッション変数だった。失礼。
*************************** 312. row ***************************
Variable_name: max_user_connections
Value: 30
max_user_connectionsが30になっているので、1ユーザーあたりの接続可能コネクションは30まで。
MySQL :: MySQL 5.6 Reference Manual :: 5.1.4 Server System Variables
$ perl -MDBI -e 'my @tmp; while (push(@tmp, DBI->connect("dbi:mysql:db_name:host_name", "user_name", "password"))) { print ++$n, "\n"; }'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
DBI connect('db_name:host_name','user_name',...) failed: User user_name already has more than 'max_user_connections' active connections at -e line 1
*************************** 280. row ***************************
Variable_name: log_output
Value: FILE
*************************** 286. row ***************************
Variable_name: log_warnings
Value: 1
*************************** 287. row ***************************
Variable_name: long_query_time
Value: 10.000000
*************************** 435. row ***************************
Variable_name: slow_query_log
Value: ON
出力されてはいるぽいけど、ユーザーからアクセスする方法はなさげ。
*************************** 385. row ***************************
Variable_name: query_cache_size
Value: 0
*************************** 387. row ***************************
Variable_name: query_cache_type
Value: ON
クエリーキャッシュは無効化されてる。
グローバルロックに巻き込まれる心配はなかった :)
*************************** 451. row ***************************
Variable_name: ssl_ca
Value: /etc/my.cnf.d/ssl/ast.tyo1.database-hosting.conoha.io-ca.crt
*************************** 452. row ***************************
Variable_name: ssl_capath
Value:
*************************** 453. row ***************************
Variable_name: ssl_cert
Value: /etc/my.cnf.d/ssl/ast.tyo1.database-hosting.conoha.io-server.crt
*************************** 454. row ***************************
Variable_name: ssl_cipher
Value:
*************************** 455. row ***************************
Variable_name: ssl_crl
Value:
*************************** 456. row ***************************
Variable_name: ssl_crlpath
Value:
*************************** 457. row ***************************
Variable_name: ssl_key
Value: /etc/my.cnf.d/ssl/ast.tyo1.database-hosting.conoha.io-server.key
一応SSL接続は有効化されてるけど、公開鍵もらえないとSSLで接続できない。。
*************************** 465. row ***************************
Variable_name: system_time_zone
Value: UTC
( ゚д゚) えっ(ホントにNOW()がUTCで返ってきた)
*************************** 467. row ***************************
Variable_name: table_open_cache
Value: 400
( ´-`).oO(innodb_stats_on_metadsataがOFFでも、テーブルキャッシュからあふれるとそのたび統計情報の更新がトリガーされちゃうから、このサイズキツくないかなぁ。。
*************************** 470. row ***************************
Variable_name: thread_handling
Value: one-thread-per-connection
スレッドプール無効。
(もったいない。。)
*************************** 474. row ***************************
Variable_name: thread_pool_size
Value: 4
thread_pool_sizeの暗黙のデフォルトはプロセッサー数なので、4vCPUってことかな。。
mysql> SELECT plugin_name, plugin_type, plugin_status FROM all_plugins WHERE plugin_status <> 'ACTIVE';
+-------------------------------+--------------------+---------------+
| plugin_name | plugin_type | plugin_status |
+-------------------------------+--------------------+---------------+
| FEEDBACK | INFORMATION SCHEMA | DISABLED |
| QUERY_CACHE_INFO | INFORMATION SCHEMA | NOT INSTALLED |
| rpl_semi_sync_slave | REPLICATION | NOT INSTALLED |
| QUERY_RESPONSE_TIME | INFORMATION SCHEMA | NOT INSTALLED |
| QUERY_RESPONSE_TIME_AUDIT | AUDIT | NOT INSTALLED |
| rpl_semi_sync_master | REPLICATION | NOT INSTALLED |
| Mroonga | STORAGE ENGINE | NOT INSTALLED |
| Mroonga_stats | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB | STORAGE ENGINE | NOT INSTALLED |
| TokuDB_trx | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB_lock_waits | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB_locks | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB_file_map | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB_fractal_tree_info | INFORMATION SCHEMA | NOT INSTALLED |
| TokuDB_fractal_tree_block_map | INFORMATION SCHEMA | NOT INSTALLED |
| pam | AUTHENTICATION | NOT INSTALLED |
| METADATA_LOCK_INFO | INFORMATION SCHEMA | NOT INSTALLED |
| InnoDB | STORAGE ENGINE | NOT INSTALLED |
| INNODB_TRX | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_LOCKS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_LOCK_WAITS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMP | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMP_RESET | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMPMEM | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMPMEM_RESET | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMP_PER_INDEX | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_CMP_PER_INDEX_RESET | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_BUFFER_PAGE | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_BUFFER_PAGE_LRU | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_BUFFER_POOL_STATS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_METRICS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_DEFAULT_STOPWORD | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_DELETED | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_BEING_DELETED | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_CONFIG | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_INDEX_CACHE | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_FT_INDEX_TABLE | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_TABLES | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_TABLESTATS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_INDEXES | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_COLUMNS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_FIELDS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_FOREIGN | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_FOREIGN_COLS | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_TABLESPACES | INFORMATION SCHEMA | NOT INSTALLED |
| INNODB_SYS_DATAFILES | INFORMATION SCHEMA | NOT INSTALLED |
| LOCALES | INFORMATION SCHEMA | NOT INSTALLED |
| unix_socket | AUTHENTICATION | NOT INSTALLED |
| handlersocket | DAEMON | NOT INSTALLED |
| SERVER_AUDIT | AUDIT | NOT INSTALLED |
| SPIDER | STORAGE ENGINE | NOT INSTALLED |
| SPIDER_ALLOC_MEM | INFORMATION SCHEMA | NOT INSTALLED |
| SEQUENCE | STORAGE ENGINE | NOT INSTALLED |
| SQL_ERROR_LOG | AUDIT | NOT INSTALLED |
| SPHINX | STORAGE ENGINE | NOT INSTALLED |
+-------------------------------+--------------------+---------------+
55 rows in set (0.02 sec)
MariaDBにバンドルされているプラグインはほぼ全滅。
MariaDBである意味がほとんどない。。
InnoDB関連ぽいのが軒並みNOT INSTALLEDになってるのは、InnoDBの代わりにXtraDBが使われているから(WHERE plugin_status= 'ACTIVE'で引くとXtraDB側のInnoDBやInnoDB関連のinformation_schemaがACTIVEになっている)
Mroongaさん有効にしてほしいなぁ。。起動したらそのままSQLで全文検索できるよとか素敵じゃない? クォータかけづらい気もするけど。
という訳で何をどう考えても、ConoHa VPSに自分でMariaDBをyumで突っ込んだ方が良さげな雰囲気がしました。まる。
と書いてから気づいたんだけど、旧ConoHaでいうところのWordPressテンプレート的なものってなんかMySQL 5.1.73になってて(旧ConoHaのはPercona Serverだったはず)なんか劣化してるんじゃ。。:(;゙゚'ω゚'):