User Tools

Site Tools


informatica:linux:mysql:instalacion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:mysql:instalacion [2014/10/07 10:16] – [Lenta (recomendada)] javiinformatica:linux:mysql:instalacion [2017/10/20 09:52] (current) – [Errores] javi
Line 31: Line 31:
   #mysql -u <usuario> -h <hostname> -p <password>   #mysql -u <usuario> -h <hostname> -p <password>
  
 +===== Mostrar BBDD =====
 +  mysql> show databases;
  
 +<code> 
 ++--------------------+ 
 +| Database           | 
 ++--------------------+ 
 +| information_schema | 
 +| mysql              | 
 +| performance_schema | 
 +| phpmyadmin         | 
 +| pingpong           | 
 ++--------------------+ 
 +5 rows in set (0.00 sec) 
 +</code>
  
  
Line 111: Line 124:
 | ?? | 0m11.443s | 17m41.754s | | ?? | 0m11.443s | 17m41.754s |
 | 33692.87 | 17m26.434s | ?? | | 33692.87 | 17m26.434s | ?? |
 +| 16622.94 | 8'45" | 40'35" |
  
 <code> <code>
Line 862: Line 876:
 <code> <code>
 DB=zabbix; mysql -u root -p -e "SELECT table_name AS 'Tables',  round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB'  FROM information_schema.TABLES  WHERE table_schema = \"$DB\" ORDER BY (data_length + index_length) DESC;" DB=zabbix; mysql -u root -p -e "SELECT table_name AS 'Tables',  round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB'  FROM information_schema.TABLES  WHERE table_schema = \"$DB\" ORDER BY (data_length + index_length) DESC;"
 +</code>
 +
 +===== Procedures =====
 +
 +  * Crear
 +<code>
 +DELIMITER $$
 +CREATE PROCEDURE `partition_create`(SCHEMANAME VARCHAR(64), TABLENAME VARCHAR(64), PARTITIONNAME VARCHAR(64), CLOCK INT)
 +BEGIN
 +        /*
 +           SCHEMANAME = The DB schema in which to make changes
 +           TABLENAME = The table with partitions to potentially delete
 +           PARTITIONNAME = The name of the partition to create
 +        */
 +        /*
 +           Verify that the partition does not already exist
 +        */
 + 
 +        DECLARE RETROWS INT;
 +        SELECT COUNT(1) INTO RETROWS
 +        FROM information_schema.partitions
 +        WHERE table_schema = SCHEMANAME AND TABLE_NAME = TABLENAME AND partition_description >= CLOCK;
 + 
 +        IF RETROWS = 0 THEN
 +                /*
 +                   1. Print a message indicating that a partition was created.
 +                   2. Create the SQL to create the partition.
 +                   3. Execute the SQL from #2.
 +                */
 +                SELECT CONCAT( "partition_create(", SCHEMANAME, ",", TABLENAME, ",", PARTITIONNAME, ",", CLOCK, ")" ) AS msg;
 +                SET @SQL = CONCAT( 'ALTER TABLE ', SCHEMANAME, '.', TABLENAME, ' ADD PARTITION (PARTITION ', PARTITIONNAME, ' VALUES LESS THAN (', CLOCK, '));' );
 +                PREPARE STMT FROM @SQL;
 +                EXECUTE STMT;
 +                DEALLOCATE PREPARE STMT;
 +        END IF;
 +END$$
 +DELIMITER ;
 +</code>
 +
 +  * Listar
 +<code>
 +SHOW PROCEDURE STATUS;
 +SHOW FUNCTION STATUS;
 +</code>
 +
 +===== Partitions =====
 +
 +  * Listar
 +<code>
 +SHOW CREATE TABLE zabbix2014.history\G
 +*************************** 1. row ***************************
 +       Table: history
 +Create Table: CREATE TABLE `history` (
 +  `itemid` bigint(20) unsigned NOT NULL,
 +  `clock` int(11) NOT NULL DEFAULT '0',
 +  `value` double(16,4) NOT NULL DEFAULT '0.0000',
 +  `ns` int(11) NOT NULL DEFAULT '0',
 +  KEY `history_1` (`itemid`,`clock`)
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8
 +/*!50100 PARTITION BY RANGE (`clock`)
 +(PARTITION p201503130000 VALUES LESS THAN (1426287600) ENGINE = InnoDB,
 + PARTITION p201503140000 VALUES LESS THAN (1426374000) ENGINE = InnoDB,
 + PARTITION p201503150000 VALUES LESS THAN (1426460400) ENGINE = InnoDB,
 + PARTITION p201503160000 VALUES LESS THAN (1426546800) ENGINE = InnoDB,
 + PARTITION p201503170000 VALUES LESS THAN (1426633200) ENGINE = InnoDB,
 + PARTITION p201503180000 VALUES LESS THAN (1426719600) ENGINE = InnoDB,
 + PARTITION p201503190000 VALUES LESS THAN (1426806000) ENGINE = InnoDB) */
 +1 row in set (0.01 sec)
 +</code>
 +===== Strict Mode =====
 +
 +He conocido de su existencia a través de django:
 +
 +https://docs.djangoproject.com/en/1.11/ref/databases/#mysql-sql-mode
 +
 +Django recomienda habilitar el modo estricto, con la configuración "STRICT_TRANS_TABLES":
 +
 +1. Editar archivo de configuración:
 +
 +<code>
 +sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak
 +sudo vim  /etc/mysql/mariadb.conf.d/50-server.cnf
 +</code>
 +
 +2. Y añadir en la sección "[mysqld]" la siguiente linea:
 +
 +<code>
 +...
 +[mysqld]
 +sql-mode = "STRICT_TRANS_TABLES"
 +</code>
 +
 +3. Reiniciar el servicio
 +
 +  sudo service mysql restart
 +  
 +4. Verificarlo
 +
 +4.1. Iniciar sesión como usuario "root"
 +
 +  sudo mysql -u root
 +  
 +4.2. Ver el valor de la variable "sql_mode":
 +
 +  SELECT @@SESSION.sql_mode;
 +
 +Valor esperado:
 +
 +<code>
 ++---------------------+
 +| @@SESSION.sql_mode  |
 ++---------------------+
 +| STRICT_TRANS_TABLES |
 ++---------------------+
 </code> </code>
  
informatica/linux/mysql/instalacion.1412676970.txt.gz · Last modified: 2015/04/13 20:19 (external edit)