domingo, 28 de abril de 2013

Espejeo


Se conoce como copia espejo (en inglés data mirroring) al procedimiento  de protección de datos y de acceso a los mismos en los equipos  informáticos implementado en la tecnología de RAID.

RAID.- conjunto redundante de discos independientes, hace referencia a un sistema de almacenamiento que usan múltiples discos duros o SSD entre los que se distribuyen o replican los datos.

Base de Datos Espejo (Database Mirroring).- es una configuración donde dos o tres servidores de dase de datos, ejecutándose en equipos independientes, cooperan para  mantener copias de la base de datos y archivo de registro de transacciones (log).

Tanto el servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones, mientras que el tercer servidor, llamado el servidor árbitro, es usado cuando es necesario determinar cuál de los los otros dos servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una copia de la base de datos. La configuración de los tres servidores de base de datos (el primario, el espejo y el árbitro) es llamado Sistema Espejo (Mirroring System), y el servidor primarioy espejo juntos son llamados Servidores Operacionales (Operational Servers) o Compañeros (Partners).

Beneficios
·         Este método permite hacer una réplica exacta de una base de datos de un servidor a otro. La gran ventaja de este método es que permite el failover automático sin intervención humana
·         Con este modo, se logra tener una copia exacta (un espejo de nuestra base de datos) de una instancia en otra.

·         Cualquier cambio hecho en la base de datos de la primera instancia, es replicado inmediatamente en la base de datos de la segunda instancia (la instancia y base de datos reflejada).

Hacer un mirror
Para hacer el mirror, es necesario como mínimo 2 instancia y como máximo 3. Si utilizamos 2 instancias, una de ellas contiene la base de datos y la otra la espejo. La pega de esta configuración es que el failover no es automático y se necesita intervención humana. Si utilizamos 3 instancias, entonces utilizamos una de ellas como witness server y permite que el failover sea automático, osea que cuando una caiga, la otra se ponga en marcha.

Sentencia en MySQL
mysqldump.exe --opt --password=123 --user=root mi_db  > c:\replica_db.sql

·         mysqldump opera en cooperación con el servidor MySQL. Los métodos de copia directa son externos al servidor, de manera que usted debe tomar las medidas oportunas para asegurar que ningún cliente modifique las tablas mientras usted las copia genera archivos de texto transportables a otras máquinas (aún cuando presenten distintas arquitecturas hardware). Los archivos de copia directa no lo son, a no ser que las tablas que esté copiando usen el formato de almacenamiento MyISAM.

Creación
Prepare una cuenta en el maestro que pueda usar el esclavo para conectar. Este cuenta debe tener el privilegioREPLICATION SLAVE . Si la cuenta se usa sólo para replicación (lo que se recomienda), no necesita dar ningún privilegio adicional.

mysql> GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

Si usa sólo tablas MyISAM , vuelque todas las tablas y bloquee los comandos de escritura ejecutando un comandoFLUSH TABLES WITH READ LOCK :
mysql> FLUSH TABLES WITH READ LOCK;

Para usar tar para crear un archivo que incluya todas las bases de datos, cambie la localización en el directorio de datos del maestro, luego ejecute el comando:
shell> tar -cvf /tmp/mysql-snapshot.tar .

Si quiere que el archivo sólo incluya una base de datos llamada this_db, use este comando:
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db

Luego copie el archivo en el directorio /tmp del servidor esclavo. En esa máquina, cambie la localización al directorio de datos del esclavo, y desempaquete el fichero usando este comando:

shell> tar -xvf /tmp/mysql-snapshot.tar

Mientras el bloqueo de FLUSH TABLES WITH READ LOCK está en efecto, lee el valor del nombre y el desplazamiento del log binario actual en el maestro:
mysql > SHOW MASTER STATUS;

Una vez que tiene los datos y ha guardado el nombre y desplazamiento del log, puede reanudar la actividad de escritura en el maestro:
mysql> UNLOCK TABLES;

Para guardar los nombres de ficheros actual y desplazamientos, debe ejecutar el siguiente comando antes de parar el servidor:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;


Bibliografia
http://www.techdays.com.ar/2009/08/21/tutorial-creando-backup-automaticamente-de-bases-de-datos-mysql/
http://es.wikipedia.org/wiki/Copia_espejo
http://es.wikipedia.org/wiki/RAID
http://miblogtecnico.wordpress.com/tag/failover-en-sql-server/
http://www.corporacionsybven.com/portal/index.php?option=com_content&view=article&id=362




viernes, 26 de abril de 2013

Problemas de seguridad y soluciones


Posibles problemas con la base de datos

el usuario.- causa del mayor problema ligado a la seguridad de un sistema informativo (porque no le importa, no se da cuenta o es causado a propósito).

programas maliciosos.- programas destinados a perjudicar o hacer un uso ilícito de los recursos del sistema. Es instalado a propósito o sin intención en el ordenador abriendo una puerta a intrusos.

un intruso .- persona que consigue acceder a los datos o programas de los cuales no tiene acceso permitido

Siniestro (robo, incendio, etc).- una mala manipulación o una mala intención derivan a la perdida del material o de los archivos

personal interno de sistemas.- disociaciones entre los sectores y soluciones incompatibles para la seguridad informática

Soluciones

Físicas: Controlar el acceso al equipo. Tarjetas de acceso, etc

Personal: Acceso sólo del personal autorizado. Evitar sobornos, etc.

SO: Seguridad a nivel de SO

SGBD: Uso herramientas de seguridad que proporcione el SGBD. Perfiles de usuario, vistas, restricciones de uso de vistas, etc.

Autorización:  usar  derechos  de  acceso  dados  por el terminal,  por  la operación que puede realizar o por la hora del día.

Uso de técnicas de cifrado: para proteger datos en Base de Datos distribuidas o con acceso por red o internet.

Diferentes tipos de cuentas:  en especial del ABD  con   permisos  para:  creación de cuentas,   concesión  y  revocación   de  privilegios y  asignación  de   los niveles de seguridad.


http://html.rincondelvago.com/seguridad-en-bases-de-datos.html
http://www.slideshare.net/faaTiimaaG/actividad-6-problemas-de-seguridad-y-sus-soluciones

jueves, 11 de abril de 2013

Transacciones Oracle y MySQL


Transacciones          

Rollback.-es un término inglés que designa la anulación de operaciones realizadas anteriormente en uno o varios servidores de bases de datos. Concierne uno o varios tipos de operaciones precisas, según el modo en que se archiven los datos del servidor. En cualquier caso nunca conciernen a una cuenta o a un personaje individualmente.

Commit.-la instrucción commit garantiza que todas las modificaciones de la transacción se conviertan en una parte permanente de la base de datos. la instrucción commit también libera recursos que utiliza la transacción como, por ejemplo, los bloqueos.

Recovery (Restore).-Restaura copias de seguridad realizadas con el comando BACKUP. La base de datos se restaura a su estado de copia de seguridad completa de base de datos. Al recuperar una base de datos, se recomienda especificar explícitamente la opción RECOVERY por motivos de claridad, aunque es la opción predeterminada.

 
Rollback en MySQL
mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
mysql> INSERT INTO innotest VALUES(1);
mysql> INSERT INTO innotest VALUES(2);
mysql> INSERT INTO innotest VALUES(3);
mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

|     1 |

|     2 |

|     3 |

+-------+

mysql> BEGIN;
mysql> INSERT INTO innotest VALUES(4);
mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

|     1 |

|     2 |

|     3 |

|     4 |

+-------+

mysql> ROLLBACK; 
mysql> SELECT * FROM innotest;

+-------+

| campo |

+-------+

|     1 |

|     2 |

|     3 |

+-------+

Commit en MySQL
mysql> CREATE TABLE t (name CHAR(20), UNIQUE (name)) TYPE = INNODB;
mysql> BEGIN;
mysql> INSERT INTO t SET name = 'William';
mysql> INSERT INTO t SET name = 'Wallace';
mysql> COMMIT;
mysql> SELECT * FROM t;

+---------+

| name    |

+---------+

| Wallace |

| William |

+---------+

 

Restore Table en MySQL
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'


Commit en Oracle
INSERT INTO paisVALUES(‘PY’, ‘PARAGUAY’);
UPDATE persona SET pais = ‘PY’ WHERE id = 1;
COMMIT;

Rollback en Oracle
INSERT INTO paisVALUES(1, ‘PY’, ‘PARAGUAY’);
UPDATE persona SET pais = ‘PY’ WHERE id = 1;
ROLLBACK;

 

Restore Base de datos Oracle

RECOVER [AUTOMATIC] [FROM 'localizacion'] [BD]

   [UNTIL CANCEL]

   [UNTIL TIME fecha]

   [UNTIL CHANGE entero]

[USING BACKUP CONTROLFILE]

 

Restore (tabla) en Oracle

RECOVER [AUTOMATIC] [FROM 'localizacion']

   TABLESPACE nombre_tablespace [, nombre_tablespace]

 

Bibliografía    






miércoles, 10 de abril de 2013















 
Codificación.- Enunciación de un mensaje mediante un código determinado de palabras, letras, números o signos.
 
Decodificación.- descifrado de un mensaje cifrado con las reglas de su código