miércoles, 14 de agosto de 2019

Revisar el tipo de disco en linux


Revisar si el disco es SSD o SATA

Una de las características principales entre estos discos es la velocidad que existe entre una y otra.

Si te surge la necesidad de identificar si es SSD o SATA, al correr el siguiente comando, identificaras que el proceso termina mucho mas rápido en un disco solido, que en un disco SATA.

Con el comando

fdisk -l

 Encontraras qué tipo discos tienes, después remplazas las letras en rojas del disco que quieres revisar, y esperar el resultado.


time for i in `seq 1 1000`; do
    dd bs=4k if=/dev/sda count=1 skip=$(( $RANDOM * 128 )) >/dev/null 2>&1;
done

Los resultados en mi caso fueron los siguientes:

Disco SATA:

real 0m10.366s
user 0m0.770s
sys 0m1.444s

Disco Solido:

real 0m1.778s
user 0m0.639s
sys 0m1.109s






jueves, 21 de junio de 2018

viernes, 10 de marzo de 2017

Migrar MySQL 5.6.35 a 5.6.40

Para realizar una actualización del MySQL de solo correcciones, es decir, del ultimo dígito del nombre de la versión (versionamiento semántico), tenemos diferentes opciones y dependera del Sistema Operativo.

Hablemos de Linux.

Puede ser por el comando "yum" o tambien por paquetes "rpm".

martes, 11 de octubre de 2016

Cambios en MySQL 5.6 a MySQL 5.7

Cambios en MySQL 5.6 a MySQL 5.7

Los cambios mas significativos cambios que tenemos que tomar en cuenta son los siguientes:


1) Insertar valores negativos en un campo tipo unsigned
Crear tabla con campo tipo unsigned:
CREATE TABLE test (
 id int unsigned
);
 
Insertar valor negativo: 
Previamente (en MySQL 56)
INSERT INTO test VALUES (-1);
Query OK, 1 row affected, 1 warning (0.01 sec) 
En MySQL 5.7: 
INSERT INTO test VALUES (-1);
ERROR 1264 (22003): Out of range value for column 'a' at row 1

2) Division por cero
Crear tabla de prueba: 
CREATE TABLE test2 (
 id int unsigned
); 
Dividiendo por 0 
Previamente: 
INSERT INTO test2 VALUES (0/0);
Query OK, 1 row affected (0.01 sec) 
En MySQL 5.7: 
INSERT INTO test2 VALUES (0/0);
ERROR 1365 (22012): Division by 0


3) Insertando 20 caracteres en una campo cadena en un campo de 10 caracteres
Crear table con campo tipo carácter de 10: 
CREATE TABLE test3 (
a varchar(10)
); 
Intentar insertar un valor mayor 
Previamente: 
INSERT INTO test3 VALUES ('abcdefghijklmnopqrstuvwxyz');
Query OK, 1 row affected, 1 warning (0.00 sec) 
En MySQL 5.7: 
INSERT INTO test3 VALUES ('abcdefghijklmnopqrstuvwxyz');
ERROR 1406 (22001): Data too long for column 'a' at row 1

4) Insertando una fecha en ceros en un campo tipo datetime
Creamos la tabla con el campo tipo datetime: 
CREATE TABLE test3 (
a datetime
); 
Insertar 0000-00-00 00:00:00. 
Previamente: 
INSERT INTO test3 VALUES ('0000-00-00 00:00:00');
Query OK, 1 row affected, 1 warning (0.00 sec) 
En MySQL 5.7: 
INSERT INTO test3 VALUES ('0000-00-00 00:00:00');
ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'a' at row 1

5) Usando GROUP BY and seleccionando columna ambigua:

Esto sucede cuando la descripción de la consulta no es parte de la sentencia GROUP BY, y/o que no hay funciones de agregación (MIN o MAX). 
Previamnete:
SELECT id, invoice_id, description FROM invoice_line_items GROUP BY invoice_id;
+----+------------+-------------+
| id | invoice_id | description |
+----+------------+-------------+
| 1 | 1 | New socks             |
| 3 | 2 | Shoes                 |
| 5 | 3 | Tie                   |
+----+------------+-------------+
3 rows in set (0.00 sec) 
En MySQL 5.7: 
SELECT id, invoice_id, description FROM invoice_line_items GROUP BY invoice_id;
ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'invoice_line_items.description' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by


martes, 20 de septiembre de 2016

Disco de memoria para archivos.

Disco de memoria para archivos.

La unidad (o recurso) /dev/shm

Es la unidad donde se  implementa memoria compartida, permitiendo pasar datos de manera eficiente entre programas. Un programa puede crear información en memoria para que otro proceso con permisos pueda acceder a el.

Ventaja: Mayor velocidad en consulta de la información.

shm es normalmente conocido como tmpfs, el cual es normalmente nombrado como archivos almacenados en memoria.


lunes, 22 de agosto de 2016

Relay log corruptio en MySQL

Problemas con el "Relay Log", marcando corrupto en MySQL

La replicación del MySQL se detiene y al entrar a checar lo sucedido (show slave status \G;) te encuentras con un error como el siguiente:

Last_Error: Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running ‘mysqlbinlog’ on the binary log), the slave’s relay log is corrupted (you can check this by running ‘mysqlbinlog’ on the relay log), a network problem, or a bug in the master’s or slave’s MySQL code. If you want to check the master’s binary log or slave’s relay log, you will be able to know their names by issuing ‘SHOW SLAVE STATUS’ on this slave.

jueves, 4 de febrero de 2016

Script Respaldo Procedimientos MySQL

Respaldo de procedimientos de 1 por 1 en MySQL en bash.

El siguiente script permite respaldar los procedimientos, y/o funciones de una base de datos dada como parámetro, y dejando el respaldo parseado y listo para ser registrado.