Friday, May 31, 2013

Tamaño por información de la tabla de MySQL

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


Conocer el tamaño de los datos es, por supuesto ayuda. Las herramientas se han convertido en más fácil con los años y las diferentes versiones de MySQL, pero es algo que usted debe comprobar independientemente de la versión de MySQL.

Si está ejecutando una versión antigua de MySQL (antes information_schema), entonces usted todavía puede recopilar estos datos mediante el uso de "Mostrar estado de tabla y agregar la Data_length al Index_length." El information_schema hace esto mucho más fácil, sino que son libres de utilizarlas siempre que lo desee.

Aproveche el comando pager para recoger sólo la información que está buscando.
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
Utilice el comando SHOW TABLE STATUS para recopilar la información relacionada con:
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
Reinicie el pager:
[world]> pager
Default pager wasn't set, using stdout. 
Tamaño de la tabla = Data_length + Index_length
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

La misma información está disponible a través de la 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) 


El punto, prestar atención y saber sus datos.

Thursday, May 30, 2013

MySQL 4.1 - Por favor, Upgrade

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-41-please-upgrade.html

Un DBA MySQL a menudo se le pide para ayudar con varias versiones de MySQL. 


SELECT VERSION();
+----------------+
| VERSION() |
+----------------+
| 4.1.18-classic |
+----------------+ 
Pero le ruego a todos ustedes ... Evalúe sus opciones y actualizar.

MySQL ha hecho numerosas cuestiones de seguridad Las actualizaciones no digamos actualizaciones de rendimiento. Compruebe su versión de MySQL. Si se trata de algo por debajo de 5,5 o en un gran tramo 05/01/69 Please upgrade.

Mientras que usted puede ser que considere que su base de datos "de trabajo" y está disponible para su actualización cuando se rompe .... ¿Se requiere algo de trabajo ... Sí. Va a ahorrar en el largo plazo .. Sí. ¿Va a sacar más provecho de su sistema ... Si ... ¿Podría beneficiarse de bugs corregidos ... Sí. ¿Prefieres estar "roto" por un problema de seguridad?

Deténgase y piense por un momento en lo que va a decir al CEO cuando el CEO pregunta por qué fue que te hackeado?

Echa un vistazo a su sistema contra las vulnerabilidades de seguridad conocidas:

4.1


Aproveche todas las nuevas versiones:

Sunday, May 19, 2013

Los usuarios de MySQL :: Becas :: mysql_config_editor :: Seguridad

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

El acceso seguro a la base de datos es probable que la prioridad número uno para cualquier administrador de base de datos. Si no es así, entonces usted necesita considerar seriamente por qué no lo es. 

Las pautas generales a través del manual ya están disponibles: 


Uno de los principales problemas con la seguridad en MySQL es, por supuesto, los permisos que se ofrecen a los usuarios. 
Estas son algunas pautas simples. 

En primer lugar mantener "super usuario" o cuentas "root" al mínimo. Un usuario con acceso completo o "GRANT ALL" todavía tendrá acceso cuando haya alcanzado sus conexiones máx.Así que lo último que querría es un programa que va a ejecutar comandos con un usuario con acceso completo. 

Tenga en cuenta qué tipos de cuentas que está creando. Usted puede limitar a un usuarioMAX CONSULTAS, MAX, MAX ACTUALIZACIONES conexiones y MAX conexiones de usuario por hora . 

Tenga en cuenta el entorno de red que los usuarios se conectan desde. Si los usuarios van a utilizar direcciones de red DHCP en la misma subred que sólo sería la creación de más trabajo para ti si les limitado a una sola dirección IP. Todavía les puede limitar a la subred aunque con un comodín. Por ejemplo '192 .168.0.2 "versus '192 .168.0.% ' 

Manténgase alejado de todo acceso comodín para el host y los usuarios. 



> 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' |
+-----------------------------------------+


Esto dejará abierta para cualquier persona de 192.168.0.56 y no es una cosa segura inteligente. 
También podría violar otras cuentas desde 192.168.0.56 ya que MySQL comprueba anfitrión primero y segundo nombre de usuario. 


> 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.%' |
+----------------------------------------------------------------------------------------------------------------------+

Esto permitirá que selecciona sólo para exampleuser del '192 .168.0.%. También debe tener en cuenta que si exampleuser se conecta desde HOST LOCAL que el sistema probablemente localhost usuario en primer lugar antes de la. Dirección de subred 192.168.0% menos que el usuario utiliza la dirección de subred del host conectarse. 

Esto significa que puede crear un usuario y contraseña con privilegios diferentes por host. 


> 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' |
+--------------------------------------------------------------------------------------------------------------------+

Haga su mejor esfuerzo para no utilizar la opción - password = opción <contraseña> través del cliente de mysql. Usted puede utilizar-p para que solicite una contraseña. 

Usted también tiene la opción de MySQL 5.6 para utilizar la Utilidad de configuración de 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): Acceso denegado para el usuario 'root' @ 'localhost' (using password: NO)

# Mysql - login-path = local
Bienvenido al monitor de MySQL.

# Mysql - login-path = local-e "SELECT NOW () ';

Usted tiene opciones para nombrar los diferentes caminos como local o remoto y etc también. Así que usted puede codificar más de una cuenta de usuario de acceso en el archivo ~ /. Mylogin.cnf archivo que se creará una vez que utiliza el comando set. 

Si tiene scripts de shell que utilizan el cliente mysql y es probable entonces que las contraseñas de los scripts de actualización a utilizar el "- login-path =" es una forma más segura de ir. 


Por supuesto, cuando ya no es necesario que un usuario ... Suelta el usuario. 


> DROP USER 'exampleuser'@'localhost'; 


Un archivo ibdata Menor

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

He visto el deseo de un archivo más pequeño ibdata llegar últimamente en elforums.mysql.com 

La base de datos innodb utiliza el archivo de ibdata (s) para almacenar los datos de la base de datos en el disco. Cómo configurar el sistema correctamente es clave y se puede obtener más información sobre estas opciones aquí:http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html 

InnoDB proporciona un motor compatible con ACID y almacenamiento seguro de transacciones, es muy productiva, pero si va a eliminar y / o sustitución de datos, a menudo, tendrá que recuperar el espacio perdido en el tiempo. ¿Cuánto tiempo depende de su sistema y su uso. No se puede ejecutar un solo comando y recuperar espacio en un archivo ibdata.Tomará unos pasos y no es un trabajo detrás de la escena, a menos que hacer en el servidor esclavo. Si usted tiene un esclavo que lo mejor es hacer este trabajo sobre la base de datos esclavo primero y luego planificar para girar el servidor de base de datos para convertirse en la base de datos master. 

Así que en dos situaciones diferentes, éstas no son las únicas soluciones, pero algunas soluciones: 


  • Usted quiere mantener la ibdata presentar el mismo tamaño, pero sólo quiere limpiar el espacio perdido
La mejor manera de recuperar el espacio perdido es volcar los datos y vuelva a cargarlo. Sí, no es la primera opción para un DBA sé. Esto es más problemático cuanto más grande es su base de datos. Yo espero que tengan una base de datos esclavo y puede hacer esto de la esclavitud y luego lo convierten en un maestro más tarde. 


  1. Copia de seguridad de la base de datos
    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. Esto le da una copia ASCII en caso de corrupción binario.
      2. También dispone de datos maestros a través de un comentario si es necesario.
      3. Esto mantendrá su autenticación mysql en el tacto también.
        1. Me gustaría guardar la base de datos mysql como vertedero separado.
    2. También puede crear una copia de seguridad con MySQL Enterprise Backup oPercona XtraBackup , si el sistema era un db más grande y necesitaba copias de seguridad en línea éstas son buenas opciones. Hasta que el que se utiliza por varias razones.
  2. Suma de comprobación a su base de datos.
    1. Reúna algunos números de lo que tiene para que pueda compararlo cuando se carga de nuevo.
      1. Esto se puede hacer con el Kit de herramientas de Percona

        1. # ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
      2. Una consulta puede escribir usted mismo.
        1. Tengo un blog sobre esto, así
          1. http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html
  3. Stop / Start de la base de datos y aprovechar este tiempo de inactividad para las variables de sólo lectura que desea ajustar
  4. Cargar la base de datos back


  1. Siga los pasos 1 a 2 en el proceso mencionado anteriormente.
  2. En el paso 4 del procedimiento anterior tendrá que agregar lo siguiente al archivo my.cnf.
    1. innodb_file_format = Barracuda
    2. innodb_file_per_table = 1
  3. Elimine el archivo ibdata y registros.
    1. No volver a este punto
  4. Inicie la base de datos
  5. Confirme que está en marcha
  6. Cargar la base de datos de copia de seguridad.

Esto, por supuesto, sería mejor hacerlo en un servidor que no sea de producción / esclavo para que pueda confirmar todos los pasos y se consigue a una situación viable y gire el esclavo a ser el nuevo maestro.

Saturday, May 18, 2013

MySQL CHECKSUM

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


CHECKSUM TABLA información es útil cuando se está comprobando el estado de una tabla.Esto se utiliza a menudo antes y después de una copia de seguridad y restauración para asegurar que los datos están intactos.

Aquí está una manera fácil de usar a través de la línea de comandos de MySQL y las herramientas ya disponibles para usted.


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 

Ahora vas a tener todos sus datos de suma de comprobación disponibles para usted en el archivo de la lista. Ejemplo simple de los datos por debajo de


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


Después de la descarga o el proceso se está ejecutando, a continuación, se puede ejecutar el mismo guión solo cambia el archivo de salida y luego cargarlo y compara resultados. No es el método más limpio, pero es un control fácil y rápida para que usted haga.

# /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'; 

NO OLVIDES DEJAR EL USUARIO cuando haya terminado.

Wednesday, May 15, 2013

Cuente MySQL y seleccione desde una partición

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

El Foros Como MySQL tenían una pregunta sobre cómo para contar filas por partición. 
I imaginé que sería hacer una buen post blog, así. 

En primer lugar estos son algunos buenos enlaces para tener para su revisión partición y por lo menos a que pueda empezar. Los ejemplos utilizados aquí ejemplos de referencia comenzaron con estos páginas. 


> 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)


Aceptar por lo que ahora podemos seleccionar a partir la partición como así como contar a partir ellos .. 

> 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

> Seleccione * de t2 PARTICION (p02);
+ ------------ +
| Dt |
+ ------------ +
| 2007-02-02 |
+ ------------ +


> Seleccione * de t2 PARTICION (p04);
+ ------------ +
| Dt |
+ ------------ +
| 2009-02-02 |
| 15.5.2013 |
+ ------------ +

> Select * from t2 PARTICION (p02, p04);
+ ------------ +
| Dt |
+ ------------ +
| 2007-02-02 |
| 2009-02-02 |
| 15.5.2013 |
+ ------------ +

> Select count (*) a partir de t2 PARTICION (p04);
+ ---------- +
| Conteo de (*) |
+ ---------- +
| 2 |
+ ---------- +


Espero que esto ayude.

Tuesday, May 14, 2013

El registro de salida MariaDB 10.0.2

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

He descargado el paquete fuente MariaDB 10.0.2 e hice una instalación personalizada. Lo he hecho porque de un post anterior en el que tuve 2 maestros se encuentran ya construidas.Esta vez me quita la replicación circular y les señaló que esta instalación MariaDB. He utilizado el puerto 3310 esta vez. Los mismos ejemplos de configuración de instalación del post anterior se aplicaría aquí sólo había puesto en MariaDB-10.0.2 carpetas. He añadido la instalación en la parte inferior de este post por si lo quieres. 

La razón por la que hice esto fue porque quería disfrutar de los últimos rasgos MariaDB principalmente lo siguiente: 

Replicación multi-fuente 

Asegúrese de tener un servidor diferente-ids configurar por servidor para empezar. 

Así comenzó lo que aquí nada se debe esperar 
> select @@default_master_connection;
+-----------------------------+
| @@default_master_connection |
+-----------------------------+
| |
+-----------------------------+ 

Así que reunir información de un servidor maestro 
> show master status\G
*************************** 1. row ***************************
File: percona_mysql-bin.000005
Position: 107 


Ahora actualizar el MariaDB 10.0.2 esclavo 
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 |
+-----------------------------+

Aceptar Ahora permítanme añadir el segundo maestro 
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 


A continuación se puede comprobar el estado para asegurar que ambas opciones se configuran. 
>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: 

Tiempo en Aceptar para iniciarlo 

> 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


Así que vamos a analizar algunas situaciones. 

Via Percona master 
use test;
CREATE TABLE `multi_test` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDB Esclavo 
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
+----------------+ 

Via Oracle maestro MySQL 
use test;
CREATE TABLE `multi_test2` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDB Esclavo 
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
| multi_test2 |
+----------------+ 

Aceptar que funciona! 


MOSTRAR EXPLIQUE 
Esto es bastante sencillo, pero agradable para tomar una consulta que se está ejecutando. 
> 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 |
+-------+------+----------------------------------------------------------+ 


Las notas al margen: 


Motor de almacenamiento Cassandra 
Tengo curiosidad acerca de esto y cómo se relaciona con la NoSQL y una solución Innodb través memcache. 
Tengo un post sobre eso aquí: http://anothermysqldba.blogspot.com/2013/04/nosql-php-memcache-innodb-mysql.html 

Voy a tener que volver a esto como puedo configurar Cassandra en mi entorno. No estoy ansioso, pero curioso. 


Comentarios Envíe un Plugin 
La documentación de "inicio rápido", dice para añadir al archivo my.cnf en [mysqld] 
[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' 

Esto resultó mucho más fácil y que esperar de esta manera una vez que me quité las instrucciones de "inicio rápido". 
> INSTALL PLUGIN feedback SONAME 'feedback.so';

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


A través del registro de errores también se puede ver su funcionamiento: 

[Nota] Votación plugin: informe 'http://mariadb.org/feedback_plugin/post' fue enviado 
[Nota] Votación plugin: servidor respondió 'ok' 



En general mis actuales mejoras favoritas son: 



La instalación básica es la siguiente:
# 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.