All posts in Databases

El proper dimecres 3 de Juny, tindré el plaer de participar a l’Smart Lunch que organitza el gabinet de comunicació InterMèdia, al restaurant SandwiChez de Plaça Molina, a Barcelona.

Com el nom del format indica, serà a l’hora de dinar, cap a les dues del migdia i s’intentarà que sigui el més Smarty possible ;-)

Així que tot dinant xerrarem sobre la part més humana de les Big Data. En el sentit informàtic del terme, és a dir, com les màquines emulen el raciocini humà per tal d’entendre les dades a les que tenen accès els nostres servidors.

El formant l’he trobat força interessant: Exposició + Fòrum tot dinant. El tema dóna molt de joc, així que de ben segur que ens ho passarem bé!

SmartLunch BigData

Us hi espero!

SmartLunch BigData, la informàtica més humana

Connect (really we are login with postgres user):
su - postgres

show databases:
psql -l
or after connect without a database selected
l

Connect to database:
psql [database] [username]

Show tables:
d

Describe table:
d+ table

Show rows per table:
SELECT schemaname,relname,n_live_tup
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC;

Quit:
q

Captura-Database-2BAdministration-2B-2B-253CDiagram-253E-2B-253CSchema-253E-2BEYETEST-2B-2BConnection-2B-252522db2-2BEYEOS-252522-2B-2BIBM-2BData-2BStudio-2B

Procedirem a la instal·lació de la base de dades d’IBM, la DB2 en la seva versió lliure de cost, la DB2 Express-C. Hi ha moltes versions, amb unes possibilitats molt interessants, però per a un entorn de desenvolupament, amb la CE en fem suficient.

Amb els repositoris partner activat, tal i com s’indica a l‘apartat 1 de la sèries de posts Instal·lant una màquina blava, procedirem a instal·lar DB2 desde la paqueteria d’Ubuntu.

sudo apt-get install db2exc

Un cop instal·lat canviarem les contrasenyes dels usuaris creats:

sudo passwd db2inst1
sudo passwd db2fenc1
sudo passwd dasusr1

Ens loginegem com l’usuari gestor de les instàncies DB2, i certifiquem que s’ha instal·lat correctament:

sudo su db2inst1
db2level

DB21085I Instance "db2inst1" uses "64" bits and DB2 code release "SQL09074"
with level identifier "08050107".
Informational tokens are "DB2 v9.7.0.4", "s110330", "IP23243", and Fix Pack
"4".
Product is installed at "/opt/ibm/db2/V9.7".

Creem una nova base de dades, per exemple CORRETGE ;-)


sudo su db2inst1
db2 create database CORRETGE

Cal tenir en compte que quan diem una base de dades, és un sistema de bases de dades, és a dir un objecte que conté esquemes on cada esquema conté taules i cada taula registres.

Ah, i si no voleu tenir problemes, millor definir els noms de tots els objectes en caixa alta, així evitarem haver d’emprar les cometes a l’hora de qualificar-los, i evitar perdre el temps fins que te n’adones que el problema era aquest. Avisats esteu.

Literatura sobre IBM DB2 Express-C.

Per a poder gestionar còmodament la base de dades, en una màquina client amb les X activades instal·larem l’IBM Data Studio, una perspectiva d’eclipse per a la gestió de qualsevol de les DB2 existents al mercat. Descarreguem el full client des del DownloadDirector d’IBM.

que executarem amb la instrucció

/opt/IBM/DS3.1/eclipse

IBM-2Blogo-2Bvintage

En aquesta sèrie de posts explicaré com instal·lar una màquina blava, una particular manera de celebrar el centenari d’IBM, amb l’IBM HTTP Server, IBM DB2 i PHP 5.4 en un Ubuntu Server 10.04 LTS de 64 bits.

D’ençà la versió 6.0 de l’IHS (IBM Http Server) aquest producte només s’instal·la amb el WAS (WebSphere
Application Server). Per a fer-ho des del servei de paqueteria d’ubuntu, editarem l’arxiu /etc/apt/sources.list i descomentarem els reposioris partner :

deb http://archive.canonical.com/ubuntu lucid partner

I actualitzem:
sudo apt-get update


Procedim a instal·lar el paqet WAS CE Community Edition, d’utilització lliure de pagament i més lleguer.

sudo apt-get install wasce-server

I bé, ja el tenim instal·lat, comprovem l’status del servidor
sudo /etc/init.d/wasce-server status
* Websphere CE is running

Però no el veiem operatiu!
Executant el que fa l’start de wasce-server des de root, veiem que es triga prop de quatre minuts en arrencar, en una màquina amb dos processadors i 4GB de RAM, així que és questió d’esperar-se fins accedir al WebSphere Application Server Community Edition pel port 8090 i accedir a la cònsola administrativa.

Usuari: system
Contrasenya: manager

No cal dir que s’ha de canviar anant al menú Security/Users and Groups.

Si fem backup de dades MySQL amb mysqldump, necessitarem un usuari que pugui accedir a les dades únicament per a executar el backup. Els privilegis mínims que necessita són:

  • SELECT: permet la lectura dels registres.
  • LOCK TABLES: permet el bloqueig de taules, per tal de garantir la consistència de les dades guardades.
  • SHOW DATABASES: permet conèixer el directori de bases de dades existent.
  • SHOW VIEW: permet veure la definició de les vistes.
  • EXECUTE: permet executar stored procedures, necessaris per a SHOW FIELDS FROM de les vistes.
  • RELOAD: permet l’ús de FLUSH per a la neteja de la memòria cau (cache).

Així doncs, amb l’ordre GRANT crearem l’usuari de backup amb els permisos adhients:

GRANT SELECT, LOCK TABLES, SHOW DATABASES, SHOW VIEW, EXECUTE, RELOAD ON *.* to 'backup'@'host'
IDENTIFIED BY 'password';

El llistat complert de privilegis el trobarem a la documentació de MySQL.

A partir de la versió 4.1 de MySQL va canviar el mètode de creació de contrasenyes, la funció PASSWORD() retorna una cadena molt més gran i segura amb una encriptació unidireccional.

Si des de PHP volem generar una contrasenya validable des de MySQL ens dotarem d’aquest mètode:


/**
* Retornem una cadena entenedora per la funció PASSWORD()
* de MySQL
*
* @see http://php.net/manual/en/function.sha1.php
* @see http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_password
* @param string $pwd
* @return string
*/
protected function mySqlPassword($pwd)
{
return "*" . strtoupper(sha1(sha1((string) $pwd,true)));
}

Amb aquest senzill script obtindrem una còpia de seguretat de tots els schemes MySQL un per arxiu emprant mysqldump i arxivant-los tots en un arxiu comprimit tipus .tar.gz.

#!/bin/bash

# Filtrem les bases de dades per a obtenir únicament el nom
for db in `mysql -u admin -pxxx -e "show databases;" | grep "| " | sed 1d`
do
##  Fem el volcat de les dades de la base de dades
    echo $db
    mysqldump -u admin -pxxx --routines --skip-extended-insert $db > dump.$db.sql
done
tar -zcpf sql-byDb.tar.gz dump.*
##rm -vf dump.*

Hem de substituir admin per l’usuari amb prous privilegis per a fer mysqldump i xxx per la contrasenya d’aquest.

Fem servir –routines per afegir la creació d’stored procedures si s’escau i –skip-extended-insert per a fer un insert per registre i així facilitar la trobada de diferències entre còpies.

Captura-MySQL-Query-Browser

De vegades, ja sigui per seguretat o per necessitat de saltar-se proteccions d’accés a xarxa de servidors MySQL, necessitem accedir-hi al servidor a través d’un tunel assegurat amb ssh.

Seguin les passes indicades per Marion Bates a l’article MySQL ssh tunnel Quickstart crearem ràpidament una connexió per ssh cap a un servidor MySQL.

Només cal picar en una terminal:

ssh -L 3307:nom.servidor.mysql:3306 usuari@nom.servidor.ssh

Això obre un tunel a localhost:3307 que apunta al servidorMySQL:3306 via connexió ssh.
Hem indicat el port local 3307 pq a la màquina on fem això tenim un servidor MySQL de proves.
Si la màquina oberta a ssh és la mateixa que te el servidor MySQL, nom.servidor.mysql serà localhost.
Aquesta connexió la deixarem oberta, mentre estigui activa la terminal, estarà actiu el tunel.
Per a connectar-nos, obrim el MySQL QueryBrowser i indiquem host 127.0.0.1, port el 3307 i un usuari i contrasenya vàlid per a connectar-se a la base de dades MySQL.