instalar - mysql workbench online
¿Cómo monitorear el espacio de MySQL? (6)
Descargué una imagen de VM de una aplicación web que usa MySQL.
¿Cómo puedo controlar su consumo de espacio y saber cuándo se debe agregar espacio adicional?
Para las tablas MyISAM, suelo verificar el tamaño del directorio / var / lib / mysql / mydatabasename /. Las tablas InnoDB usan archivos monolíticos, por lo que debe usar SHOW TABLE STATUS.
Si solo está disponible MySQL, use el comando SHOW TABLE STATUS y observe la columna Data_length para cada tabla, que está en bytes.
Si tiene otros idiomas disponibles en la máquina, una secuencia de comandos en cualquiera de ellos que se ejecuta regularmente (cron), verifica el espacio libre en disco o el tamaño del directorio de la base de datos, y lo actualiza por correo electrónico o de otra manera. Hay demasiadas opciones para sugerir una solución en particular, depende de su situación.
Como tiene VM y realmente no le importa cómo se usa el espacio, creo que la forma más simple es verificar el tamaño del directorio de datos de MySQL. Por defecto es /var/lib/mysql
. También sería bueno limpiar los registros binarios de mysql (si es posible) antes de verificar el tamaño del directorio de datos.
Tengo algunas grandes consultas para compartir:
Ejecute esto para obtener los datos totales de MySQL y el uso del índice por el motor de almacenamiento
SELECT IFNULL(B.engine,''Total'') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') "Table Size" FROM
(SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM
information_schema.tables WHERE table_schema NOT IN
(''mysql'',''information_schema'',''performance_schema'') AND
engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;
Ejecute esto para obtener el uso total de datos e índices de MySQL por base de datos
SELECT DBName,CONCAT(LPAD(FORMAT(SDSize/POWER(1024,pw),3),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') "Data Size",CONCAT(LPAD(
FORMAT(SXSize/POWER(1024,pw),3),17,'' ''),'' '',SUBSTR('' KMGTP'',pw+1,1),''B'') "Index Size",
CONCAT(LPAD(FORMAT(STSize/POWER(1024,pw),3),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') "Total Size" FROM
(SELECT IFNULL(DB,''All Databases'') DBName,SUM(DSize) SDSize,SUM(XSize) SXSize,
SUM(TSize) STSize FROM (SELECT table_schema DB,data_length DSize,
index_length XSize,data_length+index_length TSize FROM information_schema.tables
WHERE table_schema NOT IN (''mysql'',''information_schema'',''performance_schema'')) AAA
GROUP BY DB WITH ROLLUP) AA,(SELECT 3 pw) BB ORDER BY (SDSize+SXSize);
Ejecute esto para obtener los datos totales MySQL y uso de índice por base de datos y motor de almacenamiento
SELECT Statistic,DataSize "Data Size",IndexSize "Index Size",TableSize "Table Size"
FROM (SELECT IF(ISNULL(table_schema)=1,10,0) schema_score,
IF(ISNULL(engine)=1,10,0) engine_score,
IF(ISNULL(table_schema)=1,''ZZZZZZZZZZZZZZZZ'',table_schema) schemaname,
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=2,"Storage for All Databases",
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=1,
CONCAT("Storage for ",B.table_schema),
CONCAT(B.engine," Tables for ",B.table_schema))) Statistic,
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') DataSize,CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') IndexSize,
CONCAT(LPAD(REPLACE(FORMAT(B.TSize/POWER(1024,pw),3),'','',''''),17,'' ''),'' '',
SUBSTR('' KMGTP'',pw+1,1),''B'') TableSize FROM (SELECT table_schema,engine,
SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN (''mysql'',''information_schema'',''performance_schema'')
AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B,
(SELECT 3 pw) A) AA ORDER BY schemaname,schema_score,engine_score;
ADVERTENCIA
En cada consulta, verá (SELECT 3 pw)
. El pw significa Power Of 1024 para mostrar los resultados.
-
(SELECT 0 pw)
mostrará el informe en Bytes -
(SELECT 1 pw)
mostrará el informe en KiloBytes -
(SELECT 2 pw)
mostrará el informe en MegaBytes -
(SELECT 3 pw)
mostrará el informe en GigaBytes -
(SELECT 4 pw)
mostrará el informe en TeraBytes -
(SELECT 5 pw)
mostrará el informe en PetaBytes (contácteme si ejecuta este)
Aquí hay una consulta de informe con un poco menos de formato:
SELECT IFNULL(db,''Total'') "Database",
datsum / power(1024,pw) "Data Size",
ndxsum / power(1024,pw) "Index Size",
totsum / power(1024,pw) "Total"
FROM (SELECT db,SUM(dat) datsum,SUM(ndx) ndxsum,SUM(dat+ndx) totsum
FROM (SELECT table_schema db,data_length dat,index_length ndx
FROM information_schema.tables WHERE engine IS NOT NULL
AND table_schema NOT IN (''information_schema'',''mysql'')) AA
GROUP BY db WITH ROLLUP) A,(SELECT 1 pw) B;
Créanme, hice estas consultas hace más de 4 años y todavía las uso hoy.
ACTUALIZACIÓN 2013-06-24 15:53 EDT
Tengo algo nuevo. He cambiado las consultas para que no tenga que establecer el parámetro pw
para diferentes pantallas de unidades. La pantalla de cada unidad se calcula para usted.
Informe por motor de almacenamiento
SELECT
IFNULL(ENGINE,''Total'') "Storage Engine",
LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),'' '',
SUBSTR(units,pw1*2+1,2)),17,'' '') "Data Size",
LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),'' '',
SUBSTR(units,pw2*2+1,2)),17,'' '') "Index Size",
LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),'' '',
SUBSTR(units,pw3*2+1,2)),17,'' '') "Total Size"
FROM
(
SELECT ENGINE,DAT,NDX,TBL,
IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
FROM
(SELECT *,
FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
FROM
(SELECT
ENGINE,
SUM(data_length) DAT,
SUM(index_length) NDX,
SUM(data_length+index_length) TBL
FROM
(
SELECT engine,data_length,index_length FROM
information_schema.tables WHERE table_schema NOT IN
(''information_schema'',''performance_schema'',''mysql'')
AND ENGINE IS NOT NULL
) AAA GROUP BY ENGINE WITH ROLLUP
) AAA ) AA) A,(SELECT '' BKBMBGBTB'' units) B;
Informe por base de datos
SELECT
IFNULL(DB,''Total'') "Database",
LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),'' '',
SUBSTR(units,pw1*2+1,2)),17,'' '') "Data Size",
LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),'' '',
SUBSTR(units,pw2*2+1,2)),17,'' '') "Index Size",
LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),'' '',
SUBSTR(units,pw3*2+1,2)),17,'' '') "Total Size"
FROM
(
SELECT DB,DAT,NDX,TBL,
IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
FROM
(SELECT *,
FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
FROM
(SELECT
DB,
SUM(data_length) DAT,
SUM(index_length) NDX,
SUM(data_length+index_length) TBL
FROM
(
SELECT table_schema DB,data_length,index_length FROM
information_schema.tables WHERE table_schema NOT IN
(''information_schema'',''performance_schema'',''mysql'')
AND ENGINE IS NOT NULL
) AAA GROUP BY DB WITH ROLLUP
) AAA) AA) A,(SELECT '' BKBMBGBTB'' units) B;
Informe por base de datos / motor de almacenamiento
SELECT
IF(ISNULL(DB)+ISNULL(ENGINE)=2,''Database Total'',
CONCAT(DB,'' '',IFNULL(ENGINE,''Total''))) "Reported Statistic",
LPAD(CONCAT(FORMAT(DAT/POWER(1024,pw1),2),'' '',
SUBSTR(units,pw1*2+1,2)),17,'' '') "Data Size",
LPAD(CONCAT(FORMAT(NDX/POWER(1024,pw2),2),'' '',
SUBSTR(units,pw2*2+1,2)),17,'' '') "Index Size",
LPAD(CONCAT(FORMAT(TBL/POWER(1024,pw3),2),'' '',
SUBSTR(units,pw3*2+1,2)),17,'' '') "Total Size"
FROM
(
SELECT DB,ENGINE,DAT,NDX,TBL,
IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
FROM
(SELECT *,
FLOOR(LOG(IF(DAT=0,1,DAT))/LOG(1024)) px,
FLOOR(LOG(IF(NDX=0,1,NDX))/LOG(1024)) py,
FLOOR(LOG(IF(TBL=0,1,TBL))/LOG(1024)) pz
FROM
(SELECT
DB,ENGINE,
SUM(data_length) DAT,
SUM(index_length) NDX,
SUM(data_length+index_length) TBL
FROM
(
SELECT table_schema DB,ENGINE,data_length,index_length FROM
information_schema.tables WHERE table_schema NOT IN
(''information_schema'',''performance_schema'',''mysql'')
AND ENGINE IS NOT NULL
) AAA GROUP BY DB,ENGINE WITH ROLLUP
) AAA) AA) A,(SELECT '' BKBMBGBTB'' units) B;
Puede referirse a MONyog, que tiene la función de Información de disco, que le permite descubrir el análisis de espacio en disco a nivel de servidor, nivel de base de datos y a nivel de tabla.
du -s /var/lib/mysql/* | sort -nr
Resultado
34128 /var/lib/mysql/db_name1
33720 /var/lib/mysql/db_name2
29744 /var/lib/mysql/db_name3
26624 /var/lib/mysql/db_name4
16516 /var/lib/mysql/db_name5
Esto se mostrará como orden descendente en kb