* 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にバンドルされているプラグインはほぼ全滅。
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だったはず)なんか劣化してるんじゃ。。:(;゙゚'ω゚'):
0 件のコメント :
コメントを投稿