CLUSTER Flashcards
El objetivo de este Deck de Mysql es tener un dominio avanzado de conocimientos acerca de la herramienta
¿que es mysql?
MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario
¿sentencia para crear un usuario llamado jmedina con privilegios de consulta, borrado y actualización de registros en la base de datos sakila y solo para las tabla actor con la clave mysqlp@ssw0rd?
grant select,delete,update on sakila.actor to javier identified by ‘mysqlp@ssw0rd’
indique como desde terminal de linux nos conectamos a mysql teniendo el usuario jmedina y el password p@ssw0rd
$ mysql -ujmedina -pp@ssw0rd
¿En Linux las opciones de arranque de Mysql se encuentran en:?
/etc/mycnf con propósito global /etc/mysql/mycnf propósito global SYSCONFDIR/my.cnf propósito global $MYSQL_HOME/my.cnf opciones específicas del servidor defaults-extra-file este se especifica con –defaults-extra-file=path ~/.my.cnf opciones específicas de usuario.
¿Para que sirve la sentencia show grants for <nombre_del_usuario>?</nombre_del_usuario>
Esta sentencia sirve para desplegar todos los privilegios que tiene el usuario <nombre></nombre>
por ejemplo nos mostraría algo así:
mysql> show grants for javier;
+————————————————–+
| Grants for javier@% |
+————————————————–+
| GRANT USAGE ON *.* TO ‘javier’@’%’ |
| GRANT SELECT ON sakila
.actor
TO ‘javier’@’%’ |
+————————————————–+
2 rows in set (0.00 sec)
Describa la forma en que usted podria empezar a conecer el entorno cuando ya se encuentra en el prompt de mysql(mysql>)
show databases; : me indica las bases de datos con las que contamos
use <nombre> ; </nombre> con use nos conectamos a la BD seleccionada
show tables;: nos muestra las tablas con las que cuenta la BD
desc<nombre>; </nombre>nos describe la tabla( es decir nos muestra el nombre del campo y su tipo de datos
show create table <nombre>;</nombre> nos muestra el script con el que fue creado la tabla
ejemplo
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| pedidos |
| performance_schema |
| sakila |
| test |
+——————–+
6 rows in set (0.06 sec)
mysql> use sakila;
Database changed
mysql> show tables;
+—————————-+
| Tables_in_sakila |
+—————————-+
| actor |
| actor_info |
| address |
| category |
| city |
| country |
| customer |
| customer_list |
| film |
| film_actor |
| film_category |
| film_list |
| film_text |
| inventory |
| language |
| nicer_but_slower_film_list |
| payment |
| rental |
| sales_by_film_category |
| sales_by_store |
| staff |
| staff_list |
| store |
+—————————-+
23 rows in set (0.00 sec)
mysql> desc actor;
+————-+———————-+——+—–+——————-+—————————–+
| Field | Type | Null | Key | Default | Extra |
+————-+———————-+——+—–+——————-+—————————–+
| actor_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| first_name | varchar(45) | NO | | NULL | |
| last_name | varchar(45) | NO | MUL | NULL | |
| last_update | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+————-+———————-+——+—–+——————-+—————————–+
4 rows in set (0.02 sec)
¿cuantas formas existen para crear un usuario en mysql, mencionelas?
En mysql se pueden crear usuarios de dos formas:
- Se pueden crear mediante la sentencia create user <nombre>;</nombre>
de esta forma solo se crea el usuario , este usuario no tiene permisos ni contraseña
create user <nombre> identified by '<password>';</password></nombre>
crea usuario y contraseña , sin embardo no tiene privilegios de nada
- Se pueden crear usuarios y asignarles contraseñas y privilegios de una vez con la sentencia grant select, update, delete,drop on <bd>.<tbl> to <nombre> identified by '<contrase>' ejemplo: grant select, update on sakila.actor to jmedina identified by 's3rv3r'</contrase></nombre></tbl></bd>
Procedimiento correcto para borrar un usuario
quitar los privilegios con revoke, si no estamos seguros de que privilegios tiene ese usuario lo averiguamos con la sentencia show grants<nombre>:</nombre>
Consultamos que privilegios tiene el usuario jmedina mysql\> show grants for jmedina;
Luego revocamos los privilegios:
mysql\> revoke select,update,delete,drop from jmedina;
Por último borramos el usuario
mysql>drop user jmedina
¿como veo la lista de procesos y usuarios en mysql, ademas indique como eliminar un proceso?
se puede ver la lista de procesos activos con:
mysql> show processlist;
+—-+——+———–+——–+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+——–+———+——+——-+——————+
| 1 | root | localhost | sakila | Query | 0 | NULL | show processlist |
+—-+——+———–+——–+———+——+——-+——————+
1 row in set (0.00 sec)
mysql> kill 1;
ERROR 1317 (70100): Query execution was interrupted
mysql>
¿cual parametro hay que cambiar para el auto incremento y el parametro de inicio del auto incremento?
por ejemplo setee los parametros para que inicie en 100 y vaya de 10 en 10
el parametro para aumentar el auto incremento es auto_increment_increment, por default esta en 1
el parametro para fijar el número en que inicia el autoincremento es el auto_increment_offset por default esta en 1
mysql> SHOW VARIABLES LIKE ‘auto_inc%’;
+————————–+——-+
| Variable_name | Value |
+————————–+——-+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+————————–+——-+
2 rows in set (0.01 sec)
mysql> SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘auto_inc%’;
+————————–+——-+
| Variable_name | Value |
+————————–+——-+
| auto_increment_increment | 10 |
| auto_increment_offset | 1 |
+————————–+——-+
mysql> SET @@auto_increment_offset=100;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘auto_inc%’;
+————————–+——-+
| Variable_name | Value |
+————————–+——-+
| auto_increment_increment | 10 |
| auto_increment_offset | 100 |
+————————–+——-+
¿Qué es mysql Cluster?
MySQL Cluster
MySQL Cluster, como lo comentamos al principio de ésta entrada, es otro producto para administración de bases de datos, el cual puede proveer arquitecturas con 99.999% de alta disponibilidad, esto es alrededor de solo 5 minutos de tiempo NO operable al año.
MySQL Cluster, a diferencia de MySQL Server configura su servicio a través de 3 tipos de nodos:
- SQL / Application Nodes: Nodos transaccionales, los cuales reciben las peticiones de los clientes y transfieren éstas al grupo de Data Nodes, para proveer un cluster de HA, se necesitan al menos 2 instancias de SQL / Application Nodes.
- Data Nodes: Nodos de datos, lo cuales se encargan de la persistencia y sincronización de datos entre los nodos, para proveer un cluster de HA, se necesitan al menos 2 instancias de Data Nodes.
- Management Node: Nodo para administración de los servicios de MySQL Cluster, su función principal es iniciar servicios, y administrar el cluster a través de comandos CLI.
En este caso de MySQL Cluster es: Shared Nothing Architecture, a diferencia de MySQL Server (el cual puede trabajar con SAN); MySQL Cluster opera con su propia infraestructura en disco, pudiendo ser éstos discos attachados al server. MySQL Cluster, se encargará de replicar los datos y sincronizar la información entre todos los data nodes.
En materia de costos, MySQL Cluster se licencia por CPU, y adicionalmente se paga un monto anual por mantenimiento, en tanto que MySQL Server, se subscribe por un monto anual, el cual te da derecho de uso del software y servicios de mantenimiento soporte anual.
En próximas entradas escribiremos más detalles sobre MySQL Cluster, así como un ejemplos de como habilitar arquitecturas de HA con MySQL Server, o MySQL Cluster.
¿Cuántas máquinas necesito para ejecutar un cluster mysql, y porqué?
omo mínimo se necesitan tres máquinas. Sin embargo, el número mínimo recomendado en MySQL Cluster es cuatro: una para el nodo de administración y otra para el de SQL, y dos para servir como nodos de almacenamiento. El propósito de los dos nodos de datos es proporcionar redundancia; el nodo de administración debe ejecutarse en una máquina separada para garantizar servicio de arbitración contínuo en caso que un nodo de datos falle.
¿Qué hacen las distintas máquinas en un cluster?
Un MySQL Cluster tiene organización física y lógica, con máquinas como elementos físicos. Los elementos lógicos son los nodos, y una máquina hospedando un nodo es un huésped cluster. Idealmente, habrá un nodo por huésped cluster, aunque es posible ejecutar más de un nodo en una máquina. Hay tres tipos de nodos, cada uno correspondiente a un rol específico en el cluster. Son:
nodo de administración (nodo MGM) : Proporciona servicios de administración para todo el cluster, incluyendo arranque, parada, copias de seguridad, y datos de configuración en otros nodos. El nodo de administración se implementa como la aplicación ndb_mgmd; el cliente de administración usado para controlar MySQL Cluster via nodo MGM es ndb_mgm.
nodo de datos: Almacena y replica datos. La funcionalidad de los nodos de datos la trata una instancia del proceso NDB ndbd.
nodo SQL: Símplemente es una instancia de MySQL Server (mysqld) arrancado con la opción –ndb-cluster.
¿Qué sistemas operativos pueden usar Cluster?
En MySQL 5.0, MySQL Cluster se soporta oficialmente en Linux, Mac OS X, y Solaris. Estamos trabajando para añadir soporte a cluster para otras plataformas, incluyendo Windows, y nuestra finalidad es eventualmente ofrecer MySQL Cluster en todas las plataformas en que se soporta MySQL .
Puede ser posible ejecutar procesos Cluster en otros sistemas operativos. Hemos tenido reportes de usuarios que dicen que han ejecutado Cluster en FreeBSD. Sin embargo, Cluster en cualquier plataforma que no sen las 3 mencionadas aquí se considera software alfa (como mucho), no puede garantizarse el buen funcionamiento en un entorno de producción, y no lo soporta MySQL AB.
¿Cuáles son los requerimientos de hardware para ejecutar MySQL Cluster?
luster debe ejecutarse en cualquier plataforma en que los binarios de NDB estén disponibles. Naturalmente, una CPU más rápida y más memoria mejora el rendimiento, y CPUs de 64 bits serán mejores que los procesadores de 32. Debe haber suficiente memoria en las máquinas usadas por los nodos de datos para tratar cada parte de la base de datos (consulte ¿Cuánta RAM necesito? para más información). Los nodos pueden comunicarse via TCP/IP estándar y su hardware. Para soporte SCI, se necesita hardware especial de red.
¿Necesito hacer alguna configuración especial de red para el Cluster? (¿Cómo se comunican las máquinas en un cluster?)
MySQL Cluster está pensado para usarse en un entorno de gran ancho de banda, con máquinas conectadas via TCP/IP. Su rendimiento depende directamente en la velocidad de conexión entre las máquinas del cluster. Los requerimientos de conectividad mínimo para cluster incluyen una red típica 100-megabit Ethernet o equivalente. Recomendamos usar Ethernet cuando sea posible.
También se soporta el protocolo SCI (más rápido), pero necesita hardware especial. Consulte Sección 16.7, “Usar interconexiones de alta velocidad con MySQL Cluster” para más información acerca de SCI.