all

MySQL Clusterでローリングリスタート手順

MySQL Cluster 内容 [#n62fc23b] ローリングリスタートがOKな場合の手順です。 ローリングリスタートがOKな場合、サービスを停止することなく実施可能です。 ndb_mgmdを再起動(–reloadにてキャッシュを無視する) [#kf6b192c] ndb_mgm> 1 stop →管理ノードを停止 ndb_mgm> quit # ps aux | grep ndb_mgm →完全にシャットダウンされるまで10秒くらいかかるので根気よく待つ。killしない。 # /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini –reload →–reloadオプションをつけて起動 # ps aux | grep ndb_mgm root 20982 2.1 2.4 3061868 456996 ? Ssl 17:10 0:03 /usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini –reload →ndb_mgmdはすぐに起動する もう1台あれば上記と同じことを実施 データノード(ndbd)の再起動 [#k1b842e9] ndb_mgm> 11 restart →1台ずつ実施する。 ndb_mgm> show id=11 @IPアドレス(mysql-5.5.31 ndb-7.2.13, starting, Nodegroup: 0) →startingなので待つ。時間がかかる。 Node 11: Started (version 7.2.13) →これでOK ndb_mgm> show id=11 @IPアドレス(mysql-5.
One minute to read

MySQL:max_prepared_stmt_count

MySQL max_prepared_stmt_countパラメータについて [#jf669774] サーバの Prepared ステートメントの合計数の最大値。この値で制限する。 リクエスト応答を大量に発生させることで、サーバの応答機能の帯域を使い切るなど、いわゆる DoS攻撃 (denial-of-service attacks) を受ける可能性がある環境で使用する。 デフォルト値は 16382。許容値は 0 から 100 万。 この値が実行中の Prepared ステートメントの数より低い場合は、既存ステートメントが影響を受けることはなく、そのまま使用できるが、新規のステートメントに関しては、この制限値よりも現行数を低減するまで、準備できない。(MySQL 5.1.10 からの導入) mysql> show global variables like '%max_pr%'; +————————-+——-+ | Variable_name | Value | +————————-+——-+ | max_prepared_stmt_count | 16382 | +————————-+——-+ 1 row in set (0.00 sec) mysql> set global max_prepared_stmt_count = 30000; Query OK, 0 rows affected (0.00 sec) mysql> show global variables like '%max_pr%'; +————————-+——-+ | Variable_name | Value | +————————-+——-+ | max_prepared_stmt_count | 30000 | +————————-+——-+ 1 row in set (0.
One minute to read

mysqltunerを使ってチューニング

MySQL 使い方 [#d591ad56] # cd /usr/local/src # wget mysqltuner.pl –no-check-certificate # perl mysqltuner.pl Please enter your MySQL administrative login: root Please enter your MySQL administrative password:mysqlのrootパスワードを入力
One minute to read

MySQLでnot null設定

MySQL SQL [#vb82453e] alter table テーブル名 modify カラム名 型 not null; 例 alter table moneydata modify money varchar(6) not null; mysql> describe moneydata; +———+————+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +———+————+——+—–+———+—————-+ | monid | int(11) | NO | PRI | NULL | auto_increment | | mondate | date | NO | | NULL | | | ioid | int(11) | NO | | NULL | | | catid | int(11) | NO | | NULL | | | money | varchar(6) | NO | | NULL | | | memo | text | YES | | NULL | | +———+————+——+—–+———+—————-+
One minute to read

MySQLでrootでログインしているにも関わらず、パスワードエラーでgrant構文が実行できない

MySQL MySQL Clusterを導入している場合などに、MySQL Clusterを導入剃る前にMySQLをrpmなどで導入してしまった際に、データが作られてしまい、このようなエラーに陥ることがあります。 その場合は下記コマンドをMySQLを起動した状態で、実行してください。

mysql_upgrade -u root -p パスワードを入力 以上で、1分程度でデータの修復を実行してくれます。

その間もデータへのアクセスは可能です。 以上で、ユーザー追加などのGrant構文も実行可能です。

One minute to read

MySQLでSlowquerylog(スロークエリーログ)を有効にする

MySQL MySQL5.0 [#ufcc7939] # vi /etc/my.cnf [mysqld] log-slow-queries = /var/log/mysql_slow.log long_query_time = 1 log-queries-not-using-indexes |変数名|説明| |log-slow-queries| ログ出力先ファイル名(絶対パス/想定パス指定可)| |long_query_time| 指定した時間(sec)以上かかったクエリを記録(デフォルト10秒)| |log-queries-not-using-indexes |指定するとインデックスを使用しないクエリも記録する| 参考URL:http://yonchu.hatenablog.com/entry/20100716/1279301089 MySQL5.5以上 [#z469bf7a] 設定の確認 [#h21c5b54] mysql> show variables like 'slow%'; +———————+—————-+ | Variable_name | Value | +———————+—————-+ | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | mysql-slow.log | +———————+—————-+ slow_query_log がOFFになっているとスロークエリの出力は行われません。 mysql> show variables like 'long%'; +—————–+———–+ | Variable_name | Value | +—————–+———–+ | long_query_time | 10.
One minute to read

MySQLでアプリケーションからの接続タイムアウトの設定

MySQL アプリケーションからの接続タイムアウトの設定 [#l3b8bc06] 現状の値の確認 [#o5b16fa5] mysql> show global variables like '%timeout%'; 変更 [#vb722067] mysql> set global wait_timeout = 60; 再起動後も有効にする設定 [#a05d525a] # vi /etc/my.cnf [mysqld] wait_timeout=60
One minute to read

MySQLでテーブルのコピー

MySQL 概要 [#h9adb1d6] MySQL使用時に既存のテーブルをテスト等の目的でコピーしたい場合の手順です。 手順 [#mf477027] # mysql -p mysql> use コピー元テーブル; mysql> show tables; mysql> create table 新しいテーブル名 like コピー元テーブル; mysql> show columns from コピー元テーブル; mysql> show columns from 新しいテーブル名; mysql> insert into 新しいテーブル名 select * from コピー元テーブル;
One minute to read

MySQLでバイナリログの削除

MySQL 概要 [#ra9f1a7b] mysqldumpが正常に取得できている場合、古いバイナリログはpurgeにて削除することが可能です。 バイナリログの削除 [#k8d09183] バイナリログを確認 mysql> show binary logs; +——————–+————+ | Log_name | File_size | +——————–+————+ | db01.000360 | 1073741991 | | db01.000361 | 121884083 | +——————–+————+ どのバイナリログまでを削除するかを確認して実行。 mysql> purge master logs to 'db01.000361'; mysql> show binary logs; +——————–+————+ | Log_name | File_size | +——————–+————+ | db01.000361 | 121884083 | +——————–+————+
One minute to read