miércoles, 14 de marzo de 2018

Hoja de trucos de MySQL

Así que primero publiqué en algún momento como sentía que debería estar. He estado muy ocupado trabajando con MySQL y todos los relacionados y no he podido publicar blogs como creía que debería. Entonces voy a trabajar en eso.

Ahora dicho esto, recordé el otro día un sitio web que solía amar porque era una lista común de hojas de referencia VI. La sintaxis que conoces, sabes que la necesitas, pero escríbela 3 veces hasta que esté bien. Cuando se ingresa bien lo miras atónito, pensé que ya lo había escrito.

Así que pensé por qué no una simple lista de comandos comunes de MySQL que todos escribimos 50 veces al mes o deberíamos saber como la palma de nuestra mano, pero olvidamos cuando el cliente está mirando por encima del hombro.
Para principiantes..
Configuramos un nuevo servidor MySQL 5.7.6+ e iniciamos sesión.
Necesitamos cambiar la contraseña antes de que podamos hacer algo. Pero es Alter usuario no Set pase.
Queremos saber cómo leer la contraseña como está en texto claro.

ALTERAR AL USUARIO
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 
Establecer contraseña es
SET PASSWORD FOR 'bob''@'localhost' = PASSWORD('cleartext password'); 

Purgar registros binarios
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2008-04-02 00:00:00
PURGE BINARY LOGS BEFORE NOW() - interval 3 DAY;

MySQL Dump
# COMPACT WILL REMOVE DROP STATEMENTS
mysqldump --events --master-data=2 --routines --triggers --compact --all-databases > db.sql
mysqldump --events --master-data=2 --routines --triggers --all-databases > NAME.sql
mysqldump --opt --routines --triggers dbname > dbname.sql
mysqldump --opt --routines --triggers --no-create-info joomla jforms > dataonly.sql 

Desactiva las teclas foráneas por un momento
SET GLOBAL foreign_key_checks=0; 



Omitir subvenciones
/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf --skip-grant-tables
vi /etc/mysql/my.cnf
[mysqld]
skip-grant-tables


Opiniones de BinLog
--base64-output = DECODE-ROWS & --verbose
mysqlbinlog --defaults-file=/home/anothermysqldba/.my.cnf --base64-output=DECODE-ROWS --verbose binlog.005862 > 005862.sql

CLIENTE MYSQL SECURE
mysql_config_editor print --all
mysql_config_editor set --user=mysql --password --login-path=localhost --host=localhost
mysql --login-path=localhost -e 'SELECT NOW()';

Intercambiar
sudo swapoff -a
To set the new value to 10: echo 10 | sudo tee /proc/sys/vm/swappiness
sudo swapon -a 

SI EL ESQUEMA DE LA INFORMACIÓN ES LENTO
set global innodb_stats_on_metadata=0; 

Variables de AWS
CALL mysql.rds_show_configuration;
> call mysql.rds_set_configuration('binlog retention hours', 24);
> call mysql.rds_set_configuration('slow_launch_time', 2);

Encuentra en qué tabla se encuentra el nombre de una columna
SELECT TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'fieldname' ; 
El cliente dice que está en TableA pero tienen 50 bases de datos ... ¿Qué esquema tiene TableA?
SELECT TABLE_SCHEMA , TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = 'TableA' ; 

Ajustar los trabajadores esclavos
Select @@slave_parallel_workers;
Stop Slave; Set GLOBAL slave_parallel_workers=5; Start Slave;

MySQL Multi
5.6>
To start both : mysqld_multi start 1,2
To check on status of both: mysqld_multi report 1,2
To check on status or other options you can use just one

5.7<
[mysqld1] BECOMES [mysqld@mysqld1]
systemctl start mysqld@mysqld1
systemctl start mysqld@mysqld2
systemctl start mysqld@mysqld3
systemctl start mysqld@mysqld4 
Solo tablas del sistema de actualización de MySQL
mysql_upgrade --defaults-file=/home/ anothermysqldba /.my.cnf --upgrade-system-tables 

OMITIR ERROR DE REPLICACIÓN
STOP SLAVE; SET GLOBAL sql_slave_skip_counter =1; START SLAVE; SELECT SLEEP(1); SHOW SLAVE STATUS\G