2013年5月31日金曜日

MySQLでテーブル情報につきサイズ

Original post: http://anothermysqldba.blogspot.com/2013/05/size-per-table-information-with-mysql.html



あなたのデータのサイズを知ることはもちろん便利です。 ツールは、MySQLの年と異なるバージョンに比べより簡単になりましたが、それはあなたがあなたのMySQLのバージョンに関わらず、確認されるべきものです。

あなたは、MySQLの古いバージョンを(INFORMATION_SCHEMA前に)実行されているなら、あなたはまだ使用してこのデータを収集し、 "テーブルの表示状態をとINDEX_LENGTHにdata_lengthのを追加します。"することができます INFORMATION_SCHEMAは、これははるかに容易になりますが、あなたが好きなときにそれらを自由に使用できます。

あなたが後にあるだけの情報を収集するためにpagerコマンドを活用してください。
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
関連情報を収集するには、showテーブルstatusコマンドを使用します。
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
ページャをリセットします。
[world]> pager
Default pager wasn't set, using stdout. 
テーブルサイズ= DATA_LENGTH + INDEX_LENGTH
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

同じ情報がINFORMATION_SCHEMA経由で提供されています:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH) AS size,SUM(INDEX_LENGTH) AS index_size
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('world') AND TABLE_NAME IN ('City') AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME

TABLE_SCHEMA: world
TABLE_NAME: City
ENGINE: InnoDB
size: 540672
index_size: 131072
1 row in set (0.00 sec) 


ポイントは、注意を払い、あなたのデータを知っている。


2013年5月30日木曜日

MySQL 4.1の - アップグレードしてください

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-41-please-upgrade.html
のMySQL DBAは、多くの場合、MySQLのの様々なバージョンを支援するよう求めている。 


SELECT VERSION();
+----------------+
| VERSION() |
+----------------+
| 4.1.18-classic |
+----------------+ 
しかし、私はあなたのすべてを請う... あなたのオプションを評価し、アップグレードします。

MySQLは更新だけでは性能を更新させ、多数のセキュリティ上の問題を行いました。 のMySQLのバージョンを確認してください。 それが下に何かあれば5.5や大きな一気に5.1.69アップグレードをしてください。

それが壊れたときに、あなたのデータベースは"作業"とアップグレードのために利用できる考えるかもしれませんが.... それはいくつかの作業が必要になります...はい。 それは長期的にあなたを救うでしょう.. はい。 あなたのシステムのうち、より多くを得るでしょう... はい... あなたは、修正されたバグを利用することができ... はい。 するのではなく、セキュリティの脆弱性により、 "壊れた"のでしょうか?

停止し、CEOはなぜあなたがハッキングされたのですか尋ねられたときにCEOに言うだろうかについて現時点ではと思いますか?

既知のセキュリティ 脆弱性 に対するあなたのシステムを見てみましょう 

4.1


利用可能なすべての新しいバージョンを活用する:


2013年5月19日日曜日

MySQLのユーザー::助成:: mysql_config_editor ::セキュリティ

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

データベースに安全にアクセスできる可能性が高い優先順位番号任意のデータベース管理者のためのものです。 そうでないなら、あなたは真剣にそれがない理由を調査する必要があります。 

マニュアルを経由して一般的なガイドラインは、すでに用意されています。 


MySQLにおけるセキュリティと主要な問題の一つは、もちろん、ユーザーを与えるパーミッションです。 
これらは、いくつかの単純なガイドラインです。 

まず最低限に "スーパーユーザ"または "ルート"アカウントを保つ。 フルアクセスまたはあなたの最大接続数に達したときにまだアクセスできるようになります "ALLはGRANT"を持つユーザー。 だからあなたが望む最後の事は、完全なアクセス権を持つユーザーでコマンドを実行するためのプログラムです。 

あなたが作成しているのかアカウントの種類を覚えておいてください。 次のようなユーザーを制限することができますMAXクエリ、MAXを更新し、最大接続数と時間あたりMAXユーザー接続 。 

ユーザーから接続しているネットワーク環境に留意してください。 ユーザーが同じサブネット内のDHCPネットワークアドレスを使用しようとしている場合は、単一のIPにそれらを制限した場合には、自分だけのために多くの仕事を作ることになる。 あなたはまだワイルドカードかかわらサブネットにそれらを制限することができます。 たとえば'192 .168.0.2 ''192 .168.0対。%' 

ホストとユーザーのための全体のワイルドカードアクセス近づか。 



> CREATE USER ''@'192.168.0.56' ;
Query OK, 0 rows affected (0.02 sec)

> show grants for ''@'192.168.0.56';
+-----------------------------------------+
| Grants for @192.168.0.56 |
+-----------------------------------------+
| GRANT USAGE ON *.* TO ''@'192.168.0.56' |
+-----------------------------------------+


これは、192.168.0.56から誰のためにあなたは、広い開いたままにして行うためのスマートセキュアものではありませんでしょう。 
MySQLは最初のホストおよびユーザ名第二をチェックするので、それはまた、192.168.0.56から他のアカウントに違反する可能性があります。 


> GRANT SELECT ON test.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY 'somepassword';

> show grants for 'exampleuser'@'192.168.0.%';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT ON `test`.* TO 'exampleuser'@'192.168.0.%' |
+----------------------------------------------------------------------------------------------------------------------+

これができるようになりますだけ'192 .168.0からexampleuserために選択されます。% '。 また、心に留めておく必要がありexampleuserシステムはおそらくユーザが接続するサブネットアドレスのホストを192.168.0%のサブネットアドレスの前に最初のユーザローカルホストで使用されますことをしない限り、ローカルホストから接続している場合。 

これは、ホストごとに異なる​​権限を持つ一人のユーザとパスワードを作成できることを意味します。 


> SHOW GRANTS FOR 'exampleuser'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@localhost |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'localhost' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT, UPDATE, DELETE ON `test`.* TO 'exampleuser'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------+

mysqlクライアントを経由してパスワード= <password>はオプション - 使用しないように全力を尽くす。 あなたは、パスワードの入力を要求するように-Pを使用することができます。 

また、使用するためのMySQL 5.6とオプションがあり、MySQLの設定ユーティリティを 。 


# mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: 




# mysql_config_editor print --all
[local]
user = root
password = *****
host = localhost 


#mysqlの
ERROR 1045(28000):ユーザー 'ルート' @ 'localhost'のためにアクセスが拒否されました(パスワードを使用して:NO)

#のmysql - ログインパス=ローカル
MySQLのモニタへようこそ。

#のmysql - ログインパス=ローカル-e 'を今すぐSELECT()';

あなたにも、ローカルまたはリモートおよび等のような別のパスに名前を付けるためのオプションを持っている。 だからあなたが、setコマンドを使用した後に作成されている/。mylogin.cnfファイルを〜に複数のアクセスユーザアカウントを暗号化することができます。 

あなたはおそらくmysqlクライアントを使用するシェルスクリプトを持っている場合は、使用するように更新するスクリプトでパスワードを持っている" -ログインパスは="移動するため、より安全な方法です。 


もちろん、あなたは、もはやユーザーを必要としないときに... ユーザを削除します。 


> DROP USER 'exampleuser'@'localhost'; 

小さいIBDATAファイル

Original post: http://anothermysqldba.blogspot.com/2013/05/a-smaller-ibdata-file.html


私は小さいibdataファイルの欲求がで最近出て見てきましたforums.mysql.com

InnoDBデータベースは、ディスクへのデータベース·データを格納するibdataファイル(複数可)を使用する。 システムを正しく構成する鍵であり、あなたはここでそのようなオプションの詳細について学ぶことができます。 http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html

InnoDBはACIDに準拠しており、安全なトランザクションストレージエンジンを提供し、それは非常に生産的ですが、削除、および/または多くの場合、データを交換する場合は、時間をかけて失った領域を回復する必要があります。 どのくらいの時間は、お使いのシステムとの使用に依存しています。 あなたは、単一のコマンドを実行し、ibdataファイル内のスペースを回復することはできません。 それはいくつかの手順を取るとスレーブサーバー上で行われない限り、それは、舞台裏の仕事の背後にはありません。 あなたは奴隷を持っている場合には、まずスレーブデータベース上でこの作業を行うために、マスター·データベースになるために、そのデータベースサーバーを回転させるための計画が最善です。

だから、2つの異なる状況、これらは唯一の解決策が、いくつかの解決策ではありません。

  • あなたはibdataファイルに同じサイズを維持したいが、あなただけの無駄なスペースをクリアしたい
失われたスペースを回復する最善の方法は、データをダンプし、それをリロードすることです。 はい、私は知っているDBAのための最初の選択肢ではない。 これは大きなデータベースが、より面倒です。 私はあなたがスレーブデータベースを持っており、スレーブからこれを行うことができますし、後でそれをマスターすることを望んでいるでしょう。

  1. データベースをバックアップします
    1. mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
      1. これはただのバイナリが破損した場合にあなたにASCIIコピーを提供します。
      2. また、必要に応じてコメントを介してマスタデータを有している。
      3. これは、同様にタクトであなたのMySQL認証を維持します。
        1. 私は別にダンプとしてMySQLデータベースを保存します。
    2. また、バックアップを作成することができますMySQLのエンタープライズバックアップまたはPercona XtraBackupシステムが大きくデシベルだった、これらは良い選択であるオンラインバックアップを必要に応じて、。 あなたまであなたが様々な理由のために使っている。
  2. データベースのチェックサム
    1. あなたはそれをバックロードするので、それを比較することができます持っているものにいくつかの数字を収集します。
      1. これはPercona Toolkitを使用して行うことができ

        1. # ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
      2. クエリは、あなた自身を書くことができます。
        1. 私もこのブログに投稿している
          1. http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html
  3. 任意の読み取り専用の変数に/停止データベースを起動し、このダウンタイムを活用して調整したいと思います
  4. データベースをバックロード


  1. 上記のプロセスの手順1〜2を実行します。
  2. 上記のプロセスのステップ4では、あなたのmy.cnfファイルに以下を追加したくなるでしょう。
    1. innodb_file_format =バラクーダ
    2. innodb_file_per_tableを= 1
  3. ibdataファイルとログを削除します。
    1. いいえ、この点から戻ってくるん
  4. データベースを起動します
  5. それが起動して確認し、実行中の
  6. バックアップからデータベースをロードします。

もちろんこれは、すべての手順を確認してから、新しいマスターにスレーブを回転実行可能な状況に自分自身を得ることができるので、非生産/スレーブサーバ上で行うのが最善でしょう。

MySQLのCHECKSUM

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html


CHECKSUM TABLEは 、テーブルの状態をチェックしている有用な情報である。 これは多くの場合、バックアップの前後に使用され、データがそのままであることを確認するために復元されています。

ここでは、MySQLのコマンドラインとあなたにすでに利用可能なツールを介して、それを使用するための簡単​​な方法です。


mysql> CREATE USER 'checksumuser'@'localhost';
mysql>GRANT SELECT ON *.* TO 'checksumuser'@'localhost';


mysql>SELECT
CONCAT('mysql --user=checksumuser -e \'CHECKSUM TABLE ',TABLE_SCHEMA,'.',TABLE_NAME ,' EXTENDED\'; ') as cmd_line_query
INTO OUTFILE '/tmp/checksums.sh'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql', 'INFORMATION_SCHEMA')
AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME;

mysql> exit


# chmod +x /tmp/checksums.sh
# /tmp/checksums.sh > /tmp/checksums_b4dump.sql 

今、あなたは、記載されているファイル内で使用可能なすべてのチェックサムデータを持つことになります。 下のデータの簡単な例


Table Checksum
world.City 2011482258
Table Checksum
world.Country 580721939
Table Checksum
world.CountryLanguage 1546017027 


ダンプまたはプロセスの後、あなたは、ちょうどそれをロードし、結果を比較して、出力ファイルを変更し、同じスクリプトを実行することができます実行しています。 これは、クリーンな方法ではありませんが、あなたがすることは容易で高速チェックです。

# /tmp/checksums.sh > /tmp/checksums_after_dump.sql


mysql> use test
mysql> CREATE TABLE `checksums` (
`checksums_id` int(11) NOT NULL AUTO_INCREMENT,
table_name varchar(100) DEFAULT NULL,
size_a int(11) DEFAULT NULL,
size_b int(11) DEFAULT NULL,
PRIMARY KEY (`checksums_id`)
) ENGINE=InnoDB ;

LOAD DATA INFILE '/tmp/checksums_b4dump.sql'
IGNORE INTO TABLE checksums
(table_name, size_a);

LOAD DATA INFILE '/tmp/checksums_after_dump.sql'
IGNORE INTO TABLE checksums
(table_name, size_b);

DELETE FROM checksums WHERE table_name = 'Table';

SELECT a.table_name , a.size_a, b.size_b
FROM checksums a
INNER JOIN checksums b ON a.table_name = b.table_name and a.checksums_id != b.checksums_id
WHERE a.size_a IS NOT NULL AND b.size_b IS NOT NULL ;
+-----------------------------------------------------------------------+------------+------------+
| table_name | size_a | size_b |
+-----------------------------------------------------------------------+------------+------------+
| world.City | 2011482258 | 2011482258 |
| world.Country | 580721939 | 580721939 |
| world.CountryLanguage | 1546017027 | 1546017027 |
+-----------------------------------------------------------------------+------------+------------+


#mysql -p
mysql> DROP USER 'checksumuser'@'localhost'; 

完了したら、ユーザーをDROPすることを忘れないでください 。

2013年5月15日水曜日

MySQLはパーティションから数えると選択

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-count-and-select-from-partition.html

MySQLフォーラムは、パーティションごとに行数をカウントする方法についての質問があった。 
私はそれは同様に優れたブログの記事になるだろう考え出した。 

最初にこれらのパーティションの見直しのために持っていると、少なくともあなたが始められるようにいくつかの良いリンクです。 参考例ここで使用する例は、これらのページを始めています。 


> CREATE TABLE t2
-> (
-> dt DATE
-> )
-> PARTITION BY RANGE (TO_DAYS(dt))
-> (
-> PARTITION p01 VALUES LESS THAN (TO_DAYS('2007-01-01')),
-> PARTITION p02 VALUES LESS THAN (TO_DAYS('2008-01-01')),
-> PARTITION p03 VALUES LESS THAN (TO_DAYS('2009-01-01')),
-> PARTITION p04 VALUES LESS THAN (MAXVALUE));

> desc t2;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| dt | date | YES | | NULL | |
+-------+------+------+-----+---------+-------+ 

INSERT INTO t2 VALUES ('2007-02-02'),('2008-02-02'),('2009-02-02'),(CURDATE());
Query OK, 4 rows affected (0.04 sec)


[OK]を、今私たちは、パーティションから選択するだけでなく、そこから数えることができる.. 

> select count(*) from t2;
+----------+
| count(*) |
+----------+
| 4 |
+----------+ 

> explain partitions select count(*) from t2 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t2
partitions: p01,p02,p03,p04
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 5
Extra: NULL

> SELECT * t2のパーティションから(P02);
+ ------------ +
| DT |
+ ------------ +
| 2007-02-02 |
+ ------------ +


> SELECT * t2のパーティションから(P04);
+ ------------ +
| DT |
+ ------------ +
| 2009-02-02 |
| 2013年5月15日|
+ ------------ +

> SELECT * t2のパーティションから(P02、P04);
+ ------------ +
| DT |
+ ------------ +
| 2007-02-02 |
| 2009-02-02 |
| 2013年5月15日|
+ ------------ +

T2 PARTITION(P04)から> SELECT COUNT(*);
+ ---------- +
| COUNT(*)|
+ ---------- +
| 2 |
+ ---------- +


この情報がお役に立てば幸いです。

2013年5月14日火曜日

MariaDB 10.0.2をチェックアウトする

Original post: http://anothermysqldba.blogspot.com/2013/05/checking-out-mariadb-1002.html

私はMariaDB 10.0.2ソースパッケージをダウンロードし、カスタムインストールをしました。私が原因でこれをした以前の記事私はすでに2マスターを構築していたインチ 今回は円形の複製を削除し、このmariadbインストールにそれらを指摘した。 私はポート3310今回使用。 前のポストから同じインストールの設定例では、ちょうど今mariadb-10.0.2のフォルダに入れて、ここで適用される。 私はあなたがそれをしたいだけの場合には、この記事の下部にあるインストールを追加しました。 

私は主に以下の最新MariaDBの機能をチェックアウトしたかったので、私はこれをした理由があった: 

マルチソース·レプリケーション 

あなたが起動するサーバごとに設定が異なるサーバIDを持っていることを確認します。 

ここで何を期待するべきではありませんので、まだ始まったばかり 
> select @@default_master_connection;
+-----------------------------+
| @@default_master_connection |
+-----------------------------+
| |
+-----------------------------+ 

だから、マスターサーバーから情報を収集する 
> show master status\G
*************************** 1. row ***************************
File: percona_mysql-bin.000005
Position: 107 


今Mariadb 10.0.2スレーブを更新 
SET @@default_master_connection='percona';

CHANGE MASTER 'percona' TO MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = 3307 ,
MASTER_LOG_FILE = 'percona_mysql-bin.000005',
MASTER_LOG_POS = 107 



> select @@default_master_connection;
+-----------------------------+
| @@default_master_connection |
+-----------------------------+
| percona |
+-----------------------------+

OK今私は第二のマスターを追加してみましょう 
SET @@default_master_connection='oracle';

CHANGE MASTER 'oracle' TO MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = 3309 ,
MASTER_LOG_FILE = 'oracle_mysql-bin.000009',
MASTER_LOG_POS = 5453 


次に、あなたは両方の設定が設定されていることを確認するために状態を確認することができます。 
>SHOW ALL SLAVES STATUS\G

*************************** 1. row ***************************
Connection_name: oracle
Slave_SQL_State:
Slave_IO_State:
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3309
Connect_Retry: 60
Master_Log_File: oracle_mysql-bin.000009
Read_Master_Log_Pos: 5453
Relay_Log_File: relay-bin-oracle.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: oracle_mysql-bin.000009
Slave_IO_Running: No
Slave_SQL_Running: No
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 5453
Relay_Log_Space: 248
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: 0
Retried_transactions: 0
Max_relay_log_size: 1073741824
Executed_log_entries: 0
Slave_received_heartbeats: 0
Slave_heartbeat_period: 1800.000
Gtid_Pos:
*************************** 2. row ***************************
Connection_name: percona
Slave_SQL_State:
Slave_IO_State:
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: percona_mysql-bin.000005
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin-percona.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: percona_mysql-bin.000005
Slave_IO_Running: No
Slave_SQL_Running: No
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 248
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: 0
Retried_transactions: 0
Max_relay_log_size: 1073741824
Executed_log_entries: 0
Slave_received_heartbeats: 0
Slave_heartbeat_period: 1800.000
Gtid_Pos: 

それを起動するために[OK]を時間 

> START ALL SLAVES;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

root@localhost [(none)]> show warnings;
+-------+------+-------------------------+
| Level | Code | Message |
+-------+------+-------------------------+
| Note | 1937 | SLAVE 'percona' started |
| Note | 1937 | SLAVE 'oracle' started |
+-------+------+-------------------------+ 



Relay_Master_Log_File: percona_mysql-bin.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Relay_Master_Log_File: oracle_mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


だから私たちはいくつかの状況をテストしてみましょう。 

Perconaマスター経由 
use test;
CREATE TABLE `multi_test` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDBスレーブ 
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
+----------------+ 

OracleのMySQLのマスターを経由して 
use test;
CREATE TABLE `multi_test2` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDBスレーブ 
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
| multi_test2 |
+----------------+ 

作品そのOK! 


EXPLAIN SHOW 
これはむしろ、それが実行されているクエリをキャッチするまっすぐ進むが、いいです。 
> show explain for 17;
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | sbtest | range | PRIMARY | PRIMARY | 4 | NULL | 99 | Using where |
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
1 row in set, 1 warning (0.00 sec)

root@localhost [test]> show warnings;
+-------+------+----------------------------------------------------------+
| Level | Code | Message |
+-------+------+----------------------------------------------------------+
| Note | 1003 | SELECT SUM(K) from sbtest where id between 4997 and 5096 |
+-------+------+----------------------------------------------------------+ 


サイドノート: 


カサンドラストレージエンジン 
私はこのことについて好奇心とそれがどのようにmemcacheの経由NoSQLのとInnoDBのソリューションに関する。 
私はここでその上のポストを持っている:http://anothermysqldba.blogspot.com/2013/04/nosql-php-memcache-innodb-mysql.htmlを 

私は自分の環境にセットアップカサンドラセットとしてこれに戻ってくる必要があります。私は熱心ですが好奇心旺盛ではないです。 


ユーザフィードバックプラグ 
ドキュメンテーションの "クイックスタート" [mysqldが]の下のmy.cnfファイルに追加すると言う 
[mysqld]
feedback=ON
port = 3310
socket = /tmp/mariadb-10.0.2.sock

130513 17:45:10 InnoDB: 10.0.2-MariaDB started; log sequence number 20183690
130513 17:45:10 [ERROR] /usr/local/mariadb-10.0.2/bin/mysqld: unknown variable 'feedback=ON' 

これは非常に簡単に働いて、私は、 "クイックスタート"の命令を削除した後のように、このように期待しています。 
> INSTALL PLUGIN feedback SONAME 'feedback.so';

> SELECT plugin_status FROM information_schema.plugins WHERE plugin_name = 'feedback';
+---------------+
| plugin_status |
+---------------+
| ACTIVE |
+---------------+ 


エラーログを介して、あなたもそれが動作を確認できます。 

[注意]フィードバックプラグ: 'http://mariadb.org/feedback_plugin/post'にレポートが送信されました 
[注意]フィードバックプラグイン:サーバは、 'OK'答え 



全体の私の現在のお気に入りの機能拡張は以下のとおりです。 



基本的なインストールはこれであった :
# Preconfiguration setup
shell> groupadd mariadb
shell> useradd -r -g mariadb mariadb

# Beginning of source-build specific instructions
shell> tar zxvf MariaDB-VERSION.tar.gz
shell> cd MariaDB-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR="/usr/local/mariadb-10.0.2-tmp"
# End of source-build specific instructions

Build files have been written to: /usr/local/src/MySQL/MariaDB/10.0.2/mariadb-10.0.2

I do not like the results
-- Installing: /usr/local/mariadb-10.0.2-tmp/usr/local/mysql/
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/mariadb-10.0.2-tmp
shell> mv usr/local/mysql/ ../mariadb-10.0.2 ;
shell> cd ../; # rm -Rf mariadb-10.0.2-tmp

# Postinstallation setup
shell> cd /usr/local/mariadb-10.0.2
shell> chown -R mariadb .
shell> chgrp -R mariadb .

# Next command is optional
shell> cp support-files/my-small.cnf /etc/mariadb-10.0.2.cnf
shell> vi /etc/mariadb-10.0.2.cnf
port = 3310
socket = /tmp/mariadb-10.0.2.sock

shell> scripts/mysql_install_db --defaults-file=/etc/mariadb-10.0.2.cnf --basedir=/usr/local/mariadb-10.0.2 --skip-name-resolve --datadir=/var/lib/mariadb-10.0.2 --user=mariadb
shell> chown -R mariadb /var/lib/mariadb-10.0.2/*

shell> # bin/mysqld_safe --defaults-file=/etc/mariadb-10.0.2.cnf --user=mariadb --datadir=/var/lib/mariadb-10.0.2/ --port=3310 &


shell> # ./bin/mysql --port=3310 --socket=/tmp/mariadb-10.0.2.sock
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.0.2-MariaDB Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.