"Escribo conforme voy viviendo. El trabajo emana de mí en un flujo no diferenciado y continuo." Alfonso Reyes (1889-1959) Escritor y poeta mexicano.
sábado, 16 de febrero de 2013
lunes, 11 de febrero de 2013
Disponibilidad de Datos
Fragmentos
A medida que el uso de TI y de los servicios activados por TI, se vuelven más y más dominantes en todos los aspectos de las operaciones de negocio, las empresas modernas dependen cada vez más de su infraestructura de TI para tener éxito.
–Pérdida de productividad e ingresos
–Clientes insatisfechos
Mala imagen corporativa
Beneficios
A medida que el uso de TI y de los servicios activados por TI, se vuelven más y más dominantes en todos los aspectos de las operaciones de negocio, las empresas modernas dependen cada vez más de su infraestructura de TI para tener éxito.
Subra Sripada, Vicepresidente Senior y CIO de Beaumont Health System, una cadena de
hospitales en Michigan:
"Como las empresas se
vuelven más y más dependientes
de la informática y la tecnología y como esta
continuamente cambia de manera vertiginosa, se ha convertido en un tema de debate continuo, en las sala
de juntas.
Las principales
organizaciones de TI están aprovechando a la informática y la tecnología, como
un activo estratégico". http://www.oracle.com/us/corporate/profit/features/071111-itsuccess-432556.html
La no disponibilidad de una aplicación o dato crítico puede implicar un costo significativo para las empresas en términos de:
–Clientes insatisfechos
Mala imagen corporativa
Beneficios
- Servicio de 7 por 24 a los usuarios.
- Disminución del tiempo de respuesta al mínimo en caso de contingencias.
- Tecnología de vanguardia.
- Integración de instancias legadas de diversos servicios de datos.
- Logra una rápida recuperación de fallas no planeadas.
- Infraestructura de TI más sólida y con mejores prácticas.
- Tolerancia a fallas, en el servidor, datos, software, red y discos.
- Máxima eficiencia y eficacia de la infraestructura de alta disponibilidad.
- Flexibilidad y eficiencia de costos para escalar a cualquier capacidad deseada por los cambios tecnológicos.
viernes, 1 de febrero de 2013
Usando el comando mysqldump para respaldar sólo una base de datos
Usando el comando mysqldump para respaldar sólo una base de datos:
shell> mysqldump [opciones] nombre_base_datos
Usando el comando mysqldump para respaldar varias tablas de una base de datos:
shell> mysqldump [opciones] nombre_base_datos tabla1 tabla2. . . tablaN
Usando mysqldump para respaldar varias bases de datos:
shell> mysqldump [opciones] --databases [opciones] nombre_bd1 nombre_bd2...
Usando mysqldump para respaldar todas las bases de datos:
shell> mysqldump [opciones] --all-databases [opciones]
Las opciones pueden ser vistas ejecutando el siguiente comando:
shell> mysqldump --help
Veámoslo con parámetros definidos:
Mysqldump, es una herramienta de mysql que sirve para realizar copias de seguridad de bases de datos. Es sustancial tener un sistema de backups pertinente para cualquier dato almacenado. Veamos algunas opciones básicas, con detalle en el comando.
1.- Realizar backup de una única base de datos:
mysqldump -u root -p nombre_base_de_datos > archivo_con_resp.sql
Así se realizará el backup de la base de datos, solicitando clave del usuario root mysql, se puede especificar pegado a la letra “p” -pclave.
2.- Para restaurar esa base de datos, haríamos lo siguiente:
mysql -u root -p nombre_base_de_datos < archivo_con_resp.sql
Igual con la clave del usuario root, la podemos indicar o esperar a que la pida.
3.- Para realizar un backup de todas las bases de datos:
mysqldump -u root -p --all-databases > archivo_con_resp.sql
4.- Para sólo hacer backup de un par de bases de datos:
mysqldump -u root -p --databases base_datos1 base_datos2 > archivo_con_resp.sql
5.- Para un sólo backup de una sola tabla, dentro de una base de datos:
mysqldump -u root -p base_datos tabla > archivo_con_resp.sql
6.- Para consultar la ayuda damos lo siquiente:
mysqldump --help
Otras referencias MySQL
Iniciando para una versión
mysqladmin -u root password nuevo_password
mysqladmin -u root password 'xxxccceee'
mysqladmin -u root -p xxxccceee
mysqladmin -u root -p password 'xxxccceee'
mysqladmin -u root -h '99.11.6.17' -p password 'xxxccceee'
--- =========================
Para otra versión
[root@serv1 ~]# mysql -u root -h localhost
---------------------------------------------------------------
Generemos cuentas iniciales
UPDATE user SET Password=PASSWORD('xxxccceee') WHERE user='root';
CREATE USER 'root' @ '99.11.6.17' IDENTIFIED BY 'xxxccceee';
FLUSH PRIVILEGES;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'99.11.6.17'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Para un usuario
serv1 -----> es el hostname del servidor
usaurio ----> es el usuario a crear así se llma aqui en el ejemplo
---- CREATE USER 'usuario' @ 'serv1' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'serv1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'127.0.0.1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' WITH GRANT OPTION;
UPDATE user SET Password=PASSWORD('password') WHERE user='usuario';
CREATE USER 'usuario' @ '99.11.6.17' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Creando la base de datos.
CREATE DATABASE nombase
mysql> use nombase
mysql> show databases;
show tables;
describe tabla;
----------------------------------------------------------------------------
http://dev.mysql.com/doc/refman/5.0/es/charset-database.html
10.3.2. Conjuntos de caracteres y colaciones de la base de datos
Cada base de datos tiene un conjunto de caracteres y una colación que no pueden ser nulos. Los comandos CREATE DATABASE y ALTER DATABASE tienen cláusulas opcionales para especificar el conjunto de caracteres y colación de la base de datos:
CREATE DATABASE nombre_de_base_de_datos
[[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
[[DEFAULT] COLLATE nombre_de_colación]
ALTER DATABASE nombre_de_base_de_datos
[[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
[[DEFAULT] COLLATE nombre_de_colación]
Ejemplo:
CREATE DATABASE nombre_de_base_de_datos
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL elige el conjunto de caracteres y colación de la base de datos así:
Si tanto CHARACTER SET X como COLLATE Y se especifican, entonces el conjunto de caracteres es X y la colación Y.
Si CHARACTER SET X se especifica sin COLLATE, entonces el conjunto de caracteres es X y la colación es la de defecto.
En el resto de casos, es el conjunto de caracteres y la colación del servidor.
La sintaxis de MySQL CREATE DATABASE ... DEFAULT CHARACTER SET ... es análoga a la sintaxis estándar SQL CREATE SCHEMA ... CHARACTER SET .... Por ello, es posible crear bases de datos con distintos conjuntos de caracteres y colaciones en el mismo servidor MySQL.
El conjunto de caracteres de la base de datos y la colación se usan como valores por defecto para una tabla si no se especifica el conjunto de caracteres y colación en el comando CREATE TABLE. No tienen otro propósito.
El conjunto de caracteres y colación para la base de datos por defecto están disponibles como los valores de las variables character_set_database y collation_database . El servidor obtiene estas variables siempre que la base de datos por defecto cambia. Si no hay base de datos por defecto, las variables tienen el mismo valor que las variables correspondiente del lado del servidor, character_set_server y collation_server.
----------------------------------------------------------------------------
http://dev.mysql.com/doc/refman/5.0/es/charset-database.html
10.3.2. Conjuntos de caracteres y colaciones de la base de datos
Cada base de datos tiene un conjunto de caracteres y una colación que no pueden ser nulos. Los comandos CREATE DATABASE y ALTER DATABASE tienen cláusulas opcionales para especificar el conjunto de caracteres y colación de la base de datos:
CREATE DATABASE nombre_de_base_de_datos
[[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
[[DEFAULT] COLLATE nombre_de_colación]
ALTER DATABASE nombre_de_base_de_datos
[[DEFAULT] CHARACTER SET nombre_de_conjunto_de_caracteres]
[[DEFAULT] COLLATE nombre_de_colación]
Ejemplo:
CREATE DATABASE nombre_de_base_de_datos
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL elige el conjunto de caracteres y colación de la base de datos así:
Si tanto CHARACTER SET X como COLLATE Y se especifican, entonces el conjunto de caracteres es X y la colación Y.
Si CHARACTER SET X se especifica sin COLLATE, entonces el conjunto de caracteres es X y la colación es la de defecto.
En el resto de casos, es el conjunto de caracteres y la colación del servidor.
La sintaxis de MySQL CREATE DATABASE ... DEFAULT CHARACTER SET ... es análoga a la sintaxis estándar SQL CREATE SCHEMA ... CHARACTER SET .... Por ello, es posible crear bases de datos con distintos conjuntos de caracteres y colaciones en el mismo servidor MySQL.
El conjunto de caracteres de la base de datos y la colación se usan como valores por defecto para una tabla si no se especifica el conjunto de caracteres y colación en el comando CREATE TABLE. No tienen otro propósito.
El conjunto de caracteres y colación para la base de datos por defecto están disponibles como los valores de las variables character_set_database y collation_database . El servidor obtiene estas variables siempre que la base de datos por defecto cambia. Si no hay base de datos por defecto, las variables tienen el mismo valor que las variables correspondiente del lado del servidor, character_set_server y collation_server.
---------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
Revisando tabla de usuarios
Revisando tabla de usuarios
[root@serv1 ~]# mysql -u root -h localhost
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.95 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host, user, grant_priv from user;
+-----------+------+------------+
| host | user | grant_priv |
+-----------+------+------------+
| localhost | root | Y |
| serv1 | root | Y |
| 127.0.0.1 | root | Y |
| localhost | | N |
| serv1| | N |
+-----------+------+------------+
5 rows in set (0.00 sec)
mysql>
mysql>
mysql> select host, user, grant_priv from user;
+-----------+------+------------+
| host | user | grant_priv |
+-----------+------+------------+
| localhost | root | Y |
| serv1| root | Y |
| 127.0.0.1 | root | Y |
| localhost | | N |
| serv1| | N |
+-----------+------+------------+
5 rows in set (0.00 sec)
mysql> select host, user, grant_priv,
-> select_priv,
-> Insert_priv,
-> update_priv,
-> delete_priv,
-> create_priv,
-> drop_priv,
-> reload_priv,
-> show_view_priv from user;
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
| host | user | grant_priv | select_priv | Insert_priv | update_priv | delete_priv | create_priv | drop_priv | reload_priv | show_view_priv |
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
| localhost | root | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| serv1 | root | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| 127.0.0.1 | root | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| localhost | | N | N | N | N | N | N | N | N | N |
| serv1 | | N | N | N | N | N | N | N | N | N |
+-----------+------+------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+----------------+
5 rows in set (0.00 sec)
mysql> EXIT
Bye
[root@serv1 ~]# mysql -u root
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
mysql> select host, user, grant_priv from user;
+----------------+------+------------+
| host | user | grant_priv |
+----------------+------+------------+
| localhost | root | Y |
| serv1 | root | Y |
| 127.0.0.1 | root | Y |
| localhost | | N |
| serv1 | | N |
| 99.11.6.17 | root | Y |
+----------------+------+------------+
6 rows in set (0.00 sec)
===========================================
Creando tablas
CREATE TABLE esquema.tabla (
id NUMERIC(2,0) NOT NULL,
id_area VARCHAR(2) NOT NULL,
fecha_creacion DATE NULL,
) ;
CREATE INDEX nom_index
ON esquema.tabla (
campo1
) ;
Creando tablas
CREATE TABLE esquema.tabla (
id NUMERIC(2,0) NOT NULL,
id_area VARCHAR(2) NOT NULL,
fecha_creacion DATE NULL,
) ;
CREATE INDEX nom_index
ON esquema.tabla (
campo1
) ;
ALTER TABLE esquema.tabla
ADD CONSTRAINT nom_constraint PRIMARY KEY (
campo1
) ;
=================================
Sobre campos memo o clob o lob
MySQL server support CLOB with 4 data types:
TINYTEXT - A CLOB column with a maximum length of 255 (2**8 - 1) characters.
TEXT - A CLOB column with a maximum length of 65,535 (2**16 - 1) characters.
MEDIUMTEXT - A CLOB column with a maximum length of 16,777,215 (2**24 - 1) characters.
LONGTEXT - A CLOB column with a maximum length of 4,294,967,295 or 4GB (2**32 - 1) characters.
In order to test CLOB columns in MySQL server, I used the MySQL commnand line interface to create a test table with one CLOB column:
C:\>\local\mysql\bin\mysql -u Herong -pTopSecret
Mysql> CREATE TABLE Article (ID INTEGER PRIMARY KEY AUTO_INCREMENT,
-> Subject VARCHAR(256) NOT NULL,
-> Body LONGTEXT);
campo_memo LONGTEXT NULL,
log sentencias mysql
Para poder visualizar todas las sentencias SQL que se ejecutan en MySQL así como los detalles de quien las ejecutó, basta con añadir al fichero de configuración (/etc/my.cnf en Linux o my.ini en Windows) la opción:log=fichero
Por ejemplo:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log=/var/log/mysqld.log
Nota: el fichero de log tiene que tener permisos de escritura para los usuarios de los que se desean ver las sentencias SQL. Para dar permiso de lectura/escritura a todos en Linux: chmod a+rw fichero
Por ejemplo:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log=/var/log/mysqld.log
Nota: el fichero de log tiene que tener permisos de escritura para los usuarios de los que se desean ver las sentencias SQL. Para dar permiso de lectura/escritura a todos en Linux: chmod a+rw fichero
Para monitorear el rendimiento de MySQL, que mejor que arrancar por las consultas, para hacer esto disponemos de una serie de alternativas:
- Activar el Slow Query Log: loguea todas las consultas que se excedan de un tiempo dado (log_query_time) o bien, que no utilicen íncides (log-queries-not-using-indexes). Para activarlo, debemos editar el archivo my.cnf y agregar en la sección [mysqld]:
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
log-queries-not-using-indexes
- Describir una consulta: utilizar el comando DESCRIBE (o DESC es su forma abreviada). Por ejemplo: “DESC SELECT … FROM … WHERE … ORDER BY …”, este nos devolverá si está utilizando índices y cuales son.
- Analizar mediante EXPLAIN, como ejecuta las consultas MySQL y determinar si se utilizan índices, el número de filas exploradas e información adicional. Ver, Optimización de consultas con EXPLAIN
Sentencias SQL básicas con mysql
Obtener datos en texto de MySQL con separadores.
SELECT * FROM esquema.tabla
INTO OUTFILE "nombrearchivotexto.txt"
FIELDS TERMINATED BY '||' ;
Generalmente nos deja los archivos en el origen en que se instalo y alojan los archivos dbf de mysql.
---- trayectoria de las bases de mysql
--------------------------------------------------------------------------------------------
Si pasamos de oracle a mysql, la fecha es un punto por verificar, podemos generar los datos de tal manera que modifiquemos la fecha previamente ya luego generamos el archivo de texto con los registros para su carga.
CREATE TABLE esquema.tabla
AS
SELECT
nombre,
To_Char(campo_fecha, 'YYYY-MM-DD') AS campo_fechae ,
FROM esquema.tabla_origen
WHERE nombre = 'xxx'
--------------------------------------------------------------------------------------------
Cargamos datos de un archivo de texto en mysql:
source /tmp/I_SIIAA_REINSCRIPCION_TMP_13A_01.sql
también puede ser:
punto y la trayectoria y archivo
ver la ayuda de mysql esta referenciado
--------------------------------------------------------------------------------------------
Una consulta con EXISTSen oracle:
SELECT DISTINCT campo1 FROM esquema.tabla WHERE EXISTS
(SELECT Max(campos2) FROM esquema.tabla2 WHERE campo3 = campo1)
Consultemos un campo memo o clob en texto en oracle.
SELECT DBMS_LOB.substr(campo1,DBMS_LOB.getlength(campo1),1)
FROM esquema.tabla ;
podemos dar un where etc.
SELECT * FROM esquema.tabla
INTO OUTFILE "nombrearchivotexto.txt"
FIELDS TERMINATED BY '||' ;
Generalmente nos deja los archivos en el origen en que se instalo y alojan los archivos dbf de mysql.
---- trayectoria de las bases de mysql
- /var/lib/mysql/"basedatos"
--------------------------------------------------------------------------------------------
Si pasamos de oracle a mysql, la fecha es un punto por verificar, podemos generar los datos de tal manera que modifiquemos la fecha previamente ya luego generamos el archivo de texto con los registros para su carga.
CREATE TABLE esquema.tabla
AS
SELECT
nombre,
To_Char(campo_fecha, 'YYYY-MM-DD') AS campo_fechae ,
FROM esquema.tabla_origen
WHERE nombre = 'xxx'
--------------------------------------------------------------------------------------------
Cargamos datos de un archivo de texto en mysql:
source /tmp/I_SIIAA_REINSCRIPCION_TMP_13A_01.sql
también puede ser:
punto y la trayectoria y archivo
ver la ayuda de mysql esta referenciado
--------------------------------------------------------------------------------------------
Una consulta con EXISTSen oracle:
SELECT DISTINCT campo1 FROM esquema.tabla WHERE EXISTS
(SELECT Max(campos2) FROM esquema.tabla2 WHERE campo3 = campo1)
--------------------------------------------------------------------------------------------
Amperson en un campo de texto:
Si voy a insertar en un campo de texto de oracle un amperson &, puedo pensar que concateno:
'Bob & '| |' Sons '
Sin embargo no es del todo aplicables, por lo que podemos acudir a : set define OFF
esto en una consola directamente, posteriormente lo regresamos a ON.
Otra opción es utilizar la sentencia de escape: set escape \
En tanto recordemos: set define off ----- set define ON
--------------------------------------------------------------------------------------------
Consultemos un campo memo o clob en texto en oracle.
SELECT DBMS_LOB.substr(campo1,DBMS_LOB.getlength(campo1),1)
FROM esquema.tabla ;
podemos dar un where etc.
FRASE
"La inteligencia no es un don individual, es siempre distribuida, compartida con otros, contruida más allá del sujeto único."
Dra. Martha Rizo García
Dra. Martha Rizo García
Suscribirse a:
Entradas (Atom)