Académique Documents
Professionnel Documents
Culture Documents
Casoprctico
ParecequeeltrabajodeAlejandraestapuntodeconcluir.Labasededatosdeltallermecnicoesttotalmenteimplantadaylas
expectativasquelossociosdeltallertenanpuestasensutrabajosehancumplido.Enestemomentoseraimposibleprescindirde
laoperatividadqueproporcionaelSGBD,nosloconrelacinalaactividadcotidiana:registrodeingresosysalidas,reparaciones,
facturacin,controlderecambios,personal,etc.sinoquelespermiteanalizarlosresultadosobtenidosparaobtenerestadsticasy
conellohacerprevisionesyplanificarestrategiasfuturas.
Precisamenteporlaimportanciaquetienelabasededatosenlagestindeltaller,Alejandraseplanteaahoraunacuestinmuy
importante Qu pasara si por alguna causa imprevista la base de datos se daa o se destruye? En este momento eso
seraundesastreparalagestindelnegocio.
Alejandra sabe que su trabajo no estar completo hasta que no establezca una poltica de copias de seguridad de la base de datos, as como procedimientos
adecuadosderecuperacindelosdatosanteposiblesfallostantodehardwarecomodesoftware,oantecualquiercausaexternaquesepuedaproducir.
Cmopodramossaberaquclientestenemosquellamar,qufacturasnosehancobrado,cuntashorashatrabajadocadaempleado,siunfalloeneldiscoduro
quecontienelabasededatosnosimpideaccederastos?
EnTalleresFaberlotienenclaro,esimportantequelosdatosestnprotegidosyquepuedanserreconstruidosantecualquiersituacinimprevistaquesepueda
presentar.
Principalesfallosenunabasededatos.
Casoprctico
Antes de establecer las medidas y polticas de seguridad que debe tomar para evitar cualquier dao en la base de datos, Alejandra
empiezaporconsiderarculessonlosposiblesfallosquesepuedenproducir.Esoleayudaraestablecerunaestrategiaparaevitar
queseproduzcany,siesonoesposible,almenospodergarantizarquelosdatosdeTalleresFaberpuedanserrecuperadosensutotalidad.
Alejandranopuedeevitarquelabasededatosseadestruidasiocurre,porejemplo,unincendioenlaoficina,peropodrrestaurarlosdatos
sihatenidolaprecaucindemantenerunacopiadeseguridadubicadaenotrolugar.
Del mismo modo que se han tomado medidas de seguridad en las instalaciones del taller con relacin a la existencia de maquinaria
elctrica,almacenamientoymanipulacinmaterialesinflamables,etc.tambinesnecesarioprotegerunbienmuyvaliosoparalaempresa:
losdatos.
Las funciones de mantenimiento, respaldo y recuperacin constituyen un componente muy importante de los SGBD actuales. Algunos SGBD
proporcionan herramientas para que se puedan programar respaldos automticos en dispositivos de almacenamiento secundario que eviten
desastresanteproblemascomo:
Faltadesuministroelctrico.
Algnproblemadehardware:coneldiscoduro,sectoresdaados,chipsdememoria,procesador,etc.
Fallosdesoftware:imputablesalsistemaoperativo,alsoftwaredelSGBD,alosprogramasdeaplicacinovirus.
Problemasconelsistemadeficheros.
Factoresexternoscomoterremotos,inundaciones,incendios,etc.
ElSGBDdebegarantizarquelosdatospuedanserrecuperadosensutotalidadencasodeunaprdidafsicaodeunaprdidadelaintegridaddela
basededatos.
Laprdidadedatospuedesertotaloparcial.
Unaprdidaparcialpuedeserprovocadaporlaprdidafsicadeunapartedelabasededatos,oporlaprdidadeintegridaddeunapartedelamisma.
Una prdida total puede ocurrir por una prdida de integridad de toda la base de datos, pero que sta fsicamente contine existiendo o que se haya perdido por
completo.
Cuandoenunservidorconunabasededatosenfuncionamientoseproducealgunodelosproblemasanterioressernecesariodisponerdeunacopiadeseguridad
quenospermitarecuperarlosdatos.
El respaldo de la base de datos debe guardarse en lugar seguro, generalmente otro edificio para que est protegido contra catstrofes como incendios, robos,
inundacionesycualquierotropeligropotencial.
Laprdidadedatospuedesertotaloparcial,delmismomodolacopiadeseguridadpuedesercompletaoincremental,esdecir,apartirdelosdatosdesdelaltima
copiadeseguridad.
EnalgunoscasospodremosrecuperarlosdatosdelastablasmedianteelusodeutilidadesdisponiblesencualquierSGBD,ascomodesdesentenciasSQLparael
mantenimientodetablas.
Reflexiona
Losdatostienenunvalorydebensertratadoscomocualquierotroelementodelaempresa.Cuandolosdatosnoestndisponibleslaempresapuedesufrirprdidasy
dificultades de gestin muy importantes. Por eso es muy importante planificar, organizar y probar procedimientos de recuperacin que garanticen la seguridad y la
integridaddelabasededatos.
Elementosparalarecuperacindefallos.
Cuandoadministramosunabasededatossiempreesdeseablenoencontrarnoscontablascorruptasodestruidas,perosiestoocurrees
necesariominimizarlosriesgosestableciendounaestrategiapara:
Recuperardatosantecadasdelsistema:debemosconocercmorestauraryreparartablas,recuperararchivosderespaldoy
utilizarlosregistrosdeactualizacinpararecuperarloscambiosquesehayanhechodesdelaltimacopiadeseguridad.
Minimizaresascadasconunmantenimientopreventivo:debemosestablecer un programa de mantenimiento para prevenir
lasposibilidadesdedaosenlabasededatosascomorealizarcopiasdeseguridad.
El conjunto de actividades de administracin que pretenden garantizar la disponibilidad en caso de desastres incluyen: la planificacin,
organizacin,pruebasyprocedimientosderecuperacinydebenincluir:
Respaldoperidicodedatosyaplicaciones:elSGBDincorporaherramientaspararealizardiferentestiposderecuperacin:totaloincremental.
Respaldototal:produceunacopiacompletadetodalabasededatos.
Respaldoincremental:produceunrespaldodetodoslosdatosdesdelaltimacopia.
Respaldoconcurrente:ocurremientraselusuarioesttrabajandoenlabasededatos.
Identificarelrespaldodeformaapropiada:descripcindetalladayfecha.Tambinesimportanteevitarqueocupendemasiadomediantetcnicasdecomprensin.El
mediomscomneslacinta.
Almacenamiento de la copia de respaldo en sitio seguro: Cada copia de respaldo debe guardarse en un lugar diferente, dentro y fuera de la empresa,
convenientementepreparados,apruebadeincendiosycontrolandolahumedadytemperatura.
Existenempresasqueofrecenelserviciodecopiadeseguridadremota,peridica,automticaysegura.
Proteccinfsicadehardwareysoftware:usodeinstalacionesadecuadas,conaireacondicionado,proteccincontraincendios,unSGBDderespaldo,etc.
Controldelaccesodelpersonalalsoftwaremediantecontraseasysistemasdeprivilegiosmultinivel.
Coberturadeseguroparalosdatosenlabasededatosparacontarconproteccinfinanciera.
Losplanespararecuperarlosdatosdebenserprobadosfrecuentementeconsimulacrosparaverlosposiblesfallosquepuedatener.Unprogramaderespaldono
cubretodasloscomponentesdelSGBD,portantoesnecesarioestablecerprioridadesascomodistintasmedidasderespaldodedatos.
Autoevaluacin
UnaformadeevitarcompletamentelaprdidadedatosenunSGBDesestablecerunsistemadediscosespejoenelmismoservidor.Verdaderoofalso?
Verdadero Falso
HerramientasdelSGBDparalarecuperacindefallos.
EnlossiguientesapartadosdesarrollaremoslasdistintasherramientasquetodoSGBDtienedisponiblespararecuperarlosdatosantecualquierfallodelsistema.Ennuestro
casonosreferiremosaMySQL,perotodaslasbasesdedatospresentanestetipodeutilidades.
EnelcasodeMySQLtenemos:
1.Herramientasrelativasalmantenimientoyreparacindetablas.Cuando se produce una posible prdida de datos en una tabla, la primera medida que debemos
tomaresintentarrepararesatabla.ParaelloencadaSGBDdisponemosdeutilidadesyenelpropiolenguajeSQLexistentambinsentenciasconesafinalidad.
Enestafaseesmuyimportantediferenciardequtipodetablashablamos(InnoDB,MyISAM,BDB,etc.),yaquenotodaslasutilidadesfuncionancontodoslostiposde
tabla.Paralarecuperacindetablasdisponemosde:
a.Utilidadescomomyisamchk.
b.SentenciasSQLcomoANALYZETABLE,REPAIRTABLE,CHECKTABLE
2.Ficherosderegistrodeoperaciones: ficheroslog.Siactivamosestaopcindispondremosde:
a.Unficheroqueregistracadaconsultaquesehagaalabasededatos.
b.Unficheroqueregistracadaerrorqueseproduzcaenelservidor.
c.Unficheroqueregistracadaconsultaqueactualicedatos.
Estosficherosnosvanaresultarmuytilescuandoqueramossaberquhapasado,cuandoseproduceunerror,ysobretodopararecuperar
todas las acciones que se lleven a cabo a partir de la ltima copia de seguridad. Para ver el contenido del log binario disponemos de la
herramientamysqlbinlog.
3.Herramientaspararealizaryrestaurarcopiasdeseguridad.Bienporqueelproblemaquesenospresentahacausadounprdidadedatos
irrecuperable,oporquenohasidoposiblelarecuperacinconlasherramientasdereparacindetablas,necesitaremosrecurriralacopiade
respaldo.Establecerunaestrategiaadecuadaparaelaborarrespaldosperidicosdelabasededatoseslaprincipalymsbaratamedidade
seguridadparalosdatos.Algunasdeestasherramientasson:
a.Mysqldump.
b.Mysqlhotcopy.
c.HerramientasgrficasdisponiblesenaplicacionescomoPhpMyAdmin,MySQLWorkbenchoMySQLadministrator.
4.Herramientasparamigracindebasesdedatos.
Existenmltiplesaplicacionesgrficasparaexportarbasesdedatosdeunservidoraotro,tantoaMySQLcomoaotrosSGBD.Unadeestas
herramientasesMySQLMigrationToolkit.
Autoevaluacin
Emparejalasherramientasconsufuncionalidad:
Ejercicioderelacionar
Herramienta Relacin Funcionalidad
Mysqldump. 1.AnalizaryrepararunatablaMyISAM.
MySQLMigrationtoolkit. 2.ExportartablasInnoDBaunficherodetexto.
Mysqlbinlog. 3.Editarelregistrobinario.
Myisamchk. 4.ImportarunatabladeAccessaMySQL.
Enviar
Losficherosderegistrolog.
Los archivos de registro de MySQL son muy importantes para la recuperacin de datos en caso de fallos. En un SGBD es importante
conocer:
La localizacin del directorio de datos (datadir): para conocer dnde est situado podemos ejecutar el siguiente comando: SHOW
variables
En el directorio de datos se encuentran todas las bases de datos y tablas organizadas en forma de rbol. Cada base de datos
correspondeaundirectoriodentrodedata.Lastablassealmacenancomoarchivosdentrodeesedirectoriodelabasededatos,tal
comovimosenunaunidadanterior.
Elregistrodeerrores(ErrorLog):contieneinformacinsobrecundoseiniciayparaelservidor,ysihaocurridoalgnerrorcrtico
mientrasseestabaejecutando.PordefectoestearchivoseencuentraeneldirectoriodataysedenominaNombreHost.err.
Elregistrogeneraldeconsultas(GeneralLog):registratodaslasconexionesysentenciasenunarchivoenelordenenquelasrecibe.Elarchivogeneraldeconsultas
pordefectosedenominaNombreHost.log.Siestinactivo,paraactivaresteregistroesnecesarioreiniciardenuevoelservidor.
Elregistrobinario(BinaryLog):contienetodaslassentenciasquehanactualizadodatosopodranhaberlohechoycuntohantardado.Slorecogelassentenciasque
hanactualizadodatos,siqueremosregistrartodastendremosqueconsultarelregistrogeneraldeconsultas.
Esteregistroesmuyimportantepararecuperartodaslasactualizacionesquesehayanhechotraslaltimacopiadeseguridad.Sinoespecificamoslocontrario,este
registro se almacena en el directorio data en el archivo NombreHostbin. MySQL agrega un nmero consecutivo al nombre anterior cada vez que se vuelcan los
registros.Yaqueesteregistrosealmacenaenformatobinario,paraleerloesnecesarioutilizarmysqlbinlog.
El registro de consultas lentas (Slow Query Log): Registra todas las consultas que han llevado ms tiempo que el establecido por defecto en la variable
long_query_time. Por defecto este archivo se denomina NombreHostslow.log y se guarda en el directorio de datos. Se utiliza para examinar qu consultas llevan
demasiadotiempoparasuoptimizacin.Paraexaminaresteregistroseutilizamysqldumpslow.
El servidor MySQL puede crear estos archivos de registro para facilitar el ver lo que est pasando pero es necesario limpiar estos archivos para que no ocupen demasiado
cuandosehacencopiasdeseguridadyvolveraregistrarenarchivosnuevos.Estopuedehacerseconlasentencia:FLUSHLOGS.
Parasaberms
Sinecesitasmsinformacinsobrelosficherosderegistro(log)deMySQLpinchaenelsiguienteenlace:
FicherosderegistrodeMySQL.
Autoevaluacin
Relacionacadaarchivoconsufuncin:
Ejercicioderelacionar
Archivo Relacin Funcin
NombreHost.err 1.Contienetodaslasconsultasejecutadasporlosclientes
NombreHostslow.log 2.Contienetodaslasconsultasquemodificanlabasededatos
NombreHost.log 3.Registraloserroresenelservidor
NombreHostbin 4.Contienelasconsultasconsideradaslentas
Enviar
Mysqlbinlog.
Como hemos dicho los ficheros de log binario se generan en formatobinario. Este registro ser especialmente til cuando queramos
recuperarsentenciasalmacenadasenl.
Parapoderleerloseventosalmacenadosenellogbinariotenemosdosalternativas:
Lautilidadmysqlbinlog.
Lasentencia:SHOWBINLOGEVENTS.
Mysqlbinlog
Laformadelanzarestaherramientaes:
mysqlbinlog[opciones]FicheroLog
Ejemplo:leerelregistrobinarioinfoalisalbin.000001:mysqlbinloginfoalisalbin.000001
Veremosalgunasdelasopcionesmsimportantes:
OpcionesparaMysqlbinlog
OPCIONESDEmysqlbinlog Significado
database=NombreBaseDatos
Sloobtenemoslasentradasparalabasededatosseleccionada.
dNombreBaseDatos
localload=ruta,
PreparalosficherostemporalesparahacerLOADDATAINFILEeneldirectorioqueseespecifiquecomoruta.
lruta
offset=N,oN IgnoralasNprimerasentradas.
password[=contrasea],
Contraseaparaconectarsealservidor.
p[contrasea]
resultfile=nombre,
Envalasalidaaunficherocuyonombreseespecifica.
rnombre
shortform,s Slomuestraloscomandos,sinlainformacinadicional.
startdatetime=datetime Comienzaaleerloseventosapartirdelafechadada.
stopdatetime=datetime Leeloseventoshastalafechadada.
startposition=N LeeelregistrobinariodesdelaposicinN.
stopposition=N LeeelregistrobinariohastalaposicinN.
disablelogbin,D Desactivaellogbinario.
OPCIONESDEmysqlbinlog Significado
user=NombreUsuario,
Nombredelusuarioqueseconectaalservidorremoto.
uNombreUsuario
Ejemplorecuperarunfalloejecutandolassentenciasdellogbinarioenviandolasalidaaunclientemysql:
mysqlbinloginfoalisalbin.000001|mysql
Ejemploparaenviarlasalidaaunficherodetextoporsinecesitamoshaceralgunamodificacin:
mysqlbinloginfoalisalbin.000001>/tmp/fichero.sql
Ejemplo:actualizarunservidorMySQLdesdeelregistrobinario:
mysqlbinlogFicheroLog|mysqlhNombreServidor.
SentenciaSHOWBINLOGEVENTS
SHOWBINLOGEVENTS[IN'NombreFicheroLog'][FROMpos][LIMIT[offset,]row_count]
NombreFicheroLog:escribimoselnombredelficherologquequeremosver.Sinoseescribeningunomostrarelprimerodeellos.
LIMIT:puedetomarlosmismosvaloresqueenelcasodelasentenciaSELECT.Esconvenienteutilizarunvalorenestaclusulaparaevitarqueelprocesosealargoyque
consumademasiadosrecursos.
Debesconocer
Paravertodaslasopcionesdisponiblesparalaherramientamysqlbinlogconsultaelsiguienteenlace:
Laherramientamysqlbinlog.
Ejercicioresuelto
1.Activalosficheroslogsiguientes:logbin,logerror,generallog.
2.Unavezactivados,muestraelcontenidodelprimerregistrobinarioconelcomandoSHOW.
Mantenimientodetablas.
Casoprctico
AAlejandraselehanquedadograbadosdosconceptosqueconsideramuyimportantes'mantenimiento'y'preventivo'.Sindejardelado
laimportanciadelascopiasdeseguridad,pretendeahorarevisarlassentenciasquemanejaelSGBDparaloscasosenqueunatabla
pierdasuintegridadpoderrecuperarlosdatossinsufrirprdidasysiesposibleevitarqueesassituacionesseproduzcan.
Sabeque,aligualqueparanuestrosmecnicoseneltaller,paraelcorrectofuncionamientodelabasededatoselmantenimientoyla
prevencinsonesenciales.
Unodelosproblemasquenospodemosencontrarenelmantenimientodeunabasededatos,esquelastablaspuedanresultardaadasenalgnmomentoconeldesarrollode
laactividadnormaldelaempresa.
Esnecesariotenerencuentaqueademsdefallosdehardware,interrupcionesdecorriente,cierreindebidodelservidor,yotrascircunstanciasqueyahemosmencionado
distintas personas van a acceder a los datos y se pueden producir fallos por descuidos o porque estos usuarios tengan distintos niveles de conocimientos con relacin al
tratamientodelosdatos.
Vamosatratarahoraladeteccinyresolucindeproblemasconlastablas,independientementedecmosurjanesosproblemas.
ParaverificaryrepararlastablasdenuestrabasededatosconMySQL,podemosutilizardistintasherramientas:
Lasutilidadesmyisamchkymysqlcheck,paratablasdetipoMyISAM.
MediantesentenciasSQLquepodemosejecutardirectamenteomedianteunainterfazdenominadamysqlcheck.
La ventaja de utilizar las sentencias directamente es que el trabajo lo hace el servidor y con mysqlcheck tendremos que asegurarnos que el
servidornoutilizalastablasalavez,provocandointerferencias.
LassentenciasparaelmantenimientodetablasenMySQLlasclasificamosenfuncindeltipodetablasalasquesepuedenaplicaryaquenos
vamosaencontrarconqueenalgunoscasosslopuedenutilizarsecontablasdetipoMyISAMyenotroscasosconvariostiposdetablascomo
MyISAMeInnoDB(yBDB),quesonlasmsutilizadas:
SentenciasdemantenimientoparatablasMyISAM.
CHECKSUM
REPAIRTABLE
Paraotrostiposdetablas(MyISAM,InnoDB,BDB,etc.).
ANALYZETABLE
CHECKTABLE
OPTIMIZETABLE
Elprocedimientogeneralparadetectarlosdaosdelatablaycorregirloseselsiguiente:
1.Verificarlatablaenbuscadeerrores.Sinotieneerroreselprocesohabrterminado.
2.Hacercopiasdelosarchivosdelatablaantesdeempezararepararla,porsialgosalemal.
3.Intentarrepararlatabla.
4.Silareparacinfalla,restaurarlatabladesdelascopiasdeseguridadylosficheroslog.
Partimosdequehemosrealizadocopiadeseguridaddelabasededatosyqueesthabilitadoelusodellog.
Reflexiona
HacemoshincapienlastablasdetipoMyISAMeInnoDBporque,talcomosedijoenunaunidadanterior,sonlasmsutilizadasenfuncindelautilidadquevayamos
adaranuestrabasededatos.
Sinuestraintencinespublicarenlaweb:lastablasMyISAMsonmsrpidas
Parapodertrabajarcontransaccionesyclavesajenas:necesitamostablasInnoDB.
Porestemotivoesfundamentalconocerestasherramientasenfuncindeltipodetablasconlasquetrabajemos.
Autoevaluacin
SeleccionalassentenciasquepodemosaplicaraunatabladetipoMyISAM:
CHECKTABLE.
CHECKSUM.
REPAIRTABLE.
OPTIMIZETABLE.
MostrarInformacin
UtilidadesparatablasMyISAM:Myisamchk.
Estautilidadsirveparacomprobar,repararyoptimizartablasMyISAM.
Antesdeejecutarmyisamchkdebemoscomprobarqueningnotroprogramaestutilizandolastablas.Siestoocurreesnecesariocerrar
eseprogramayejecutarFLUSHTABLESparaactualizarloscambiosquesehayanpodidohacer.
Laformadeejecutaresteprogramaeslasiguiente:
myisamchk[opciones]NombreTabla1,
NombreTabla:Silatablanoseencuentraeneldirectorioactualhabrqueindicarlaruta.Puedencomprobarseunaovariastablasoindicartodaslastablasdeundirectorio
refirindonosaellasporlosarchivosdendicescomo*.MYI.
Opciones:Sonmuchaslasopcionesquesepuedenaadiramyisamchk,haremosunresumendelasmsutilizadas:
OpcionesparaMyisamchk
OPCIONESDEmyisamchk SIGNIFICADODELAOPCIN
silent,s Activaelmodosilenciosoquesloescribecuandoocurrealgnerror.
verbose,v Imprimemsinformacin.
version,V Informanicamentesobrelaversin.
wait,w Silatablaestbloqueada,esperaaquesedesbloqueeycontina.
OPCIONESPARACOMPROBARTABLAS
check,c Eslaopcinpordefecto.Compruebasihayerroresenlatabla.
checkonlychanged,C Slosecompruebanlastablasquehancambiadodesdelacomprobacinanterior.
extendedcheck,e Compruebalatabladeformaminuciosa.
fast,F Compruebalastablascerradasdeformainadecuada.
force,f Reparaautomticamentelatablasiencuentraalgnerror.
mediumcheck,m Compruebamsrpidoqueextendcheck.
updatestate,U Indicaquesehacomprobadolatablayguardainformacinenelarchivo.MYI.
OPCIONESPARAREPARARTABLAS
backup,B Haceunacopiadeseguridaddelarchivo.MYD.
OPCIONESDEmyisamchk SIGNIFICADODELAOPCIN
correctchecksum Corrigeelchecksumdelatabla.
extendcheck,e Intentareparartodoslosregistrosdelarchivodedatos.Noesconveniente.
force,f Sobreescribearchivostemporales(.TMD)sininterrumpirlareparacin.
keysused=#,k# Indicaqundicestienequeactualizar.
quick,q Nomodificaelarchivodedatosporloquelareparacinesmsrpida.
recover,r Eslaopcinmscomnparalareparacindetablas.
saferecover,o Reparaalgunoscasosquenosepuedenrepararconr.
sortrecover,n Utilizaordenacinparaestablecerlasclaves.
OTRASOPCIONES
analyze,a Analizaladistribucindelasclaves,ayudandoaescogerelordenylasclavesalunirlastablasconjoin.
description,d Imprimeunadescripcindelatabla.
setautoincrement[=value],A[value] Sirveparaespecificarunvalorparalanumeracinautoincremental.
sortindex,S Ordenalosbloquesdendicesparaquelasbsquedasseanmsrpidas.
sortrecords=#,R# Ordenalosregistrosconunndicequehacelosdatosmslocalizables.
Parasaberms
Lasopcionesdemyisamchkreferenciadassonslounresumendetodaslasquedisponeesaherramienta.Paraconocerelrestodeopciones,juntoconejemplosde
reparaciones,visitaelsiguienteenlace:
LautilidadmyisamchkparaelmantenimientodetablasMyISAM.
Ejercicioresuelto
Escribelasentenciaparacomprobartodaslastablasdelabasededatospruebasusandomyisamchk.
NOTA:Puedesdescargarelscriptdecreacindelabasededatospruebas.
CreatePruebas.zip(0.01MB)
Mysqlcheck.
Estaaplicacincomprueba,analiza,optimizayreparalastablasdetipoMyISAM.Presentamuchassimilitudesconmyisamchk,ladiferenciaesquemysqlchecknonecesita
queelservidorestparadoymyisamchks.
Laformadeejecutaresteprogramaeslasiguiente:
mysqlcheck[opciones]NombreBaseDatos[NombreTabla1,]
Paramsdeunabasededatos:
mysqlcheck[opciones]databasesNombreBaseDatos1[NombreBaseDatos2NombreBaseDatos3]
mysqlcheck[opciones]alldatabases
Esta herramienta usa los comandos SQL, CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE, segn convenga a la
operacinquequeramosrealizar.
Pordefectoutilizalaopcinc.Sienlugardemysqlchecklosustituimospor:
Mysqlrepair:reparatablas.Comolaopcinrepair.
Mysqlanalyze:analizalastablas.Comolaopcinanalyze.
Mysqloptimize:optimizalastablas.Comolaopcinoptimize.
Algunasdelasopcionesqueadmitemysqlcheckson:
OpcionesparaMysqlcheck
OPCIONESDEmysqlcheck SIGNIFICADODELAOPCIN
..alldatabases,A Paracomprobartodaslastablasdetodaslasbasesdedatos.
analyze,a Analizalastablas.
autorepair Sialcomprobarunatablaencuentrafallos,lareparaautomticamente.
check,c Compruebalastablasenbuscadeerrores.
checkonlychanged,C Compruebanicamentelastablasquehansufridocambiososehancerradomal.
extended,e Compruebalastablasal100%,perotardamuchoygeneraregistrosbasura.
mediumcheck,m Chequeomsrpidoqueextendycompruebalastablasal99,99%.
optimize,o Optimizalastablas.
quick,q Eselchequeomsrpido.
repair,r Reparaprcticamentetodotipodeerroresenlastablas.
OPCIONESDEmysqlcheck SIGNIFICADODELAOPCIN
silent,s Modosilenciosenelqueslosemuestranlosmensajesdeerror.
Parasaberms
Paraampliarlainformacinsobremysqlcheckconsultaelsiguienteenlace:
mysqlcheck.
Ejercicioresuelto
PartiendodelabasededatosdenominadapruebasydentrodeellaunatablaagendadetipoMyISAM.
Chequealatablaconmysqlcheckoptimizndola.
NOTA:Puedesdescargarelscriptdecreacindelabasededatospruebas.
CreatePruebas.zip(0.01MB)
SentenciasparaelmantenimientodetablasI:ANALYZETABLEyOPTIMIZETABLE.
ParaanalizartablastantoMyISAMcomoInnoDBpodemosusarlassiguientessentencias:ANALYZETABLE,OPTIMIZETABLEyCHECKTABLE.
ANALYZETABLE
Seutilizaparaanalizaryalmacenarlosndicesdeunatabla,paraellobloquealastablasparalectura.
Estainformacinalmacenadaseutilizarparaestablecerenquordensehacenlosjoinsenlastablas.Ladistribucindeclavesalmacenadasepuedeverconelcomando
SHOWINDEX.
Funcionadeformasimilaramyisamchka,peroenestecasosepuedeutilizarcontablasBDBeInnoDB,ademsdeMyISAM.
ANALYZE[LOCAL|NO_WRITE_TO_BINLOG]TABLENombreTabla1[,NombreTabla2,]
Elresultadodeestecomandodevuelveunatablacon4columnas:
Nombre:conelnombredelatabla.
Op:laopcinanalyze(anlisis).
Msg_type:quepuedecontenerlosvalores:status,error,infoowarning(estado,error,informacinoaviso).
Msg_text:contieneelmensajedetexto.
El resultado de este comando se escribe en el log binario excepto si incluimos NO_WRITE_TO_BINLOG o LOCAL. Si la tabla no ha
cambiadodesdeelltimoANALYZE,nosevuelveaanalizar.
UnadelasrazonesparaemitirANALYZETABLEesquecuandounatablasufremuchasmodificaciones(INSERToDELETE,porejemplo),coneltiempoeloptimizadorno
puedehacerlamejoreleccincuandosetratadedecidirsidebeutilizarunndiceespecficoono.ANALYZEayudaaloptimizadordeconsultasatomardecisiones
correctasmedianteunanlisisdetalladodelosdatos,adiferenciadeloptimizadordeconsultasquehaceunanlisisrpido.
OPTIMIZETABLE
Seutilizacuandoqueremosrecuperarelespacioqueocupabanlosdatosborradosentablasconregistrosdelongitudvariables,(sonlas
queusancolumnasdetipoVARCHAR,TEXT,BLOB,etc.).
Por defecto ese espacio no est disponible cuando insertamos nuevos datos. OPTIMIZETABLE desfragmenta el fichero que contiene los
datosresultandounatablamspequea.
FuncionacontablasInnoDB,DBDyMyISAM.Sepuedehacerfuncionarconotrostiposdetablamodificandolasopcionesdearranque.
EnelcasodetablasMyISAM:reparalatabla,ordenalosndicesyactualizalasestadsticas.
ParatablasBDB:semapeacomoANALYZETABLE.
ParatablasInnoDBsemapeacomoALTERTABLE:reconstruyelatabla,lasestadsticas,losndicesyliberaelespacionousado.
Lasintaxisdeestecomandoes:
OPTIMIZE[LOCAL|NO_WRITE_TO_BINLOG]]TABLENombreTabla1[NombreTabla2,]
EstecomandoseescribeenellogbinarioexceptoqueseestablezcaNO_WRITE_TO_BINLOGoLOCAL
Mientrasseejecuta,estasentenciabloquealatablaqueestoptimizando.
Ejercicioresuelto
Partiendodelatablapruebas.agendadelejercicioanterior,analizalatablaconlasentenciaANALYZEycompruebaqueelresultadosehaguardadoenellogbinario
conlasentenciaSHOWBINLOGEVENTS.
NOTA:Puedesdescargarelscriptdecreacindelabasededatospruebas.
CreatePruebas.zip(0.01MB)
SentenciasparaelmantenimientodetablasII:CHECKTABLE.
CHECKTABLE
Esuncomandoquechequeaunaomstablasenbuscadeerrores.Tambinpuedecomprobarerroresenlasvistascomoporejemplotablasalasquesehacerreferenciaen
unavistayyanoexisten.
CHECKTABLENombreTabla1[NombreTabla2,][Opciones]
CHECKTABLE
Esuncomandoquechequeaunaomstablasenbuscadeerrores.Tambinpuedecomprobarerroresenlasvistascomoporejemplotablasalasquesehacerreferenciaen
unavistayyanoexisten.
CHECKTABLENombreTabla1[NombreTabla2,][Opciones]
Elresultadodeestecomandodevuelveunatablacon4columnas:
Nombre:elnombredelatabla.
Op:Laopcincheck(chequear).
Msg_type:quepuedecontenerlosvalores:status,error,infoowarning(estado,error,informacinoaviso).
Msg_text:contieneelmensajedetexto.
Lasalidadeestecomandopuedeserdevariosregistrosporcadatablaquechequeamos.LonormalesqueelltimodeesosregistrostengalosvaloresdestatusenMsg_type
ydeOkounmensajesimilarenMsg_text,esosignificarquenoesnecesariochequearlatabla.Sinodevuelveesosvaloressernecesariorepararlatabla.
Lasopciones,slodisponiblesparatablasMyISAM,(enInnoDBnosetienenencuenta)puedenser:
QUICK:Noescanealosregistrosenbuscadeenlacesincorrectos.
FAST:Slochequealastablasquenosehayancerradocorrectamente.
MEDIUM: Verifica que los enlaces borrados estn correctos y calcula el checksum de la clave para los registros comparndolo con el checksum calculado para las
claves.
EXTENDED:Aseguraquelatablaestotalmenteconsistenteyaquehaceunabsquedacompletaparatodoslosndicesdecadaregistro.Esmuylento.
CHANGED:Sloverificalastablasquenosehancerradocorrectamenteosehanmodificadodesdeelchequeoanterior.
Algunosaspectosatenerencuenta:
La opcin por defecto es MEDIUM y es equivalente a ejecutar: myisamchk mediumcheck NombreTabla. (Si hemos especificado
CHANGEDoFASTpordefectolaopcinserQUICK).
Cuandounatablaestcorruptaprobablementeelproblemaestenelndiceynoenlosdatos.Sinosetieneprisanosedebeusarla
opcinQUICK.
CuandosechequeadesdeunscriptsesueleutilizarFASTyCHANGED.EsmscomnelusodeFAST.
EXTENDEDseusasidespusdeunchequeonormaltodavaquedanerrores.
AlgunoserroresdetectadosconCHECKTABLEnopuedencorregirseautomticamente,porejemploelvalor0enuncampoauto_increment
quepuedeocasionarproblemas.
Ejercicioresuelto
ChequearlatablaAgendaparaversisehacerradocorrectamente.Utilizarunchequeorpido.
NOTA:Puedesdescargarelscriptdecreacindelabasededatospruebas.
CreatePruebas.zip(0.01MB)
SentenciasparaelmantenimientodetablasIII:CHECKSUMTABLE,REPAIRTABLE.
LassentenciasdemantenimientodisponiblesparatablasMyISAMsonlassiguientes:CHECKSUMTABLEyREPAIRTABLE.
CHECKSUMTABLE
Checksum o suma de comprobacin de una tabla es una manera de controlar la redundancia, que verifica si los datos estn o no corruptos
garantizandoaslaintegridaddelosmismos.Consisteenalmacenarcadabyteyguardarelresultado.Posteriormentecomparaelchecksumquese
generaalleerlosdatosconelqueresultagrabadoalfinal.Sinocoincidensehabrproducidoalgnerror.Esuncontrolmuysimpleperonomuy
seguro.
CHECKSUMTABLENombreTabla1[,NombreTabla2,][QUICK|EXTENDED]
Si se especifica QUICK el checksum es muy rpido. Si esta opcin no est disponible devolver NULL. Para poder usar esta opcin tendremos que haber especificado
CHECKSUM=1enlasentenciaCREATETABLE.
REPAIRTABLE
Seutilizaparareparartablasqueprevisiblementeestncorruptas.nicamentefuncionaenelcasodetablasMyISAM.
Essimilarautilizarmyisamchkrecover
Lasintaxisdeestecomandoes:
REPAIR[LOCAL|NO_WRITE_TO_BINLOG]TABLENombreTabla1[,NombreTabla2,]
[QUICK][EXTENDED][USE_FRM]
Elresultadodeestecomandodevuelveunatablacon4columnas:
Tabla:elnombredelatabla.
Op:laopcinrepair(reparar).
Msg_type:quepuedecontenerlosvalores:status,error,infoowarning(estado,error,informacinoaviso).
Msg_text:contieneelmensajedetexto.
Lasalidadeestecomandopuedeserdevariosregistrosporcadatablaquereparemos.LonormalesqueelltimodeesosregistrostengalosvaloresdestatusenMsg_typey
deOkenMsg_text,esosignificarquenoesnecesariorepararlatabla.Sinodevuelveesosvaloressernecesariorepararlatablaconmyisamchksaferecoveryaque
estecomandotienemsopcionesqueREPAIRTABLE.
QUICK:esequivalenteamyisamchkrecoverquick.Reparasloelndice.
EXTENDED:esequivalenteamyisamchksaferecover.Creaelndiceregistroaregistro.
USE_FRM: se usa cuando falta o est corrupto el fichero de ndices (.MYI). Esta opcin no est disponible con myisamchk, aunque no
siempreesrecomendableporquepuedeproducirlaprdidadedatos(metadatos),porejemplosilatablaestcomprimida.
EstecomandoseescribeenellogbinarioexceptoqueseestablezcaNO_WRITE_TO_BINLOGoLOCAL.
Ejercicioresuelto
IntentarepararlatablaAgenda.
NOTA:Puedesdescargarelscriptdecreacindelabasededatospruebas.
CreatePruebas.zip(0.01MB)
Herramientasgrficasparaelmantenimientodetablas.
AdemsdelassentenciasSQLyotrosprogramasclientequeincorporaMySQLparaanalizaryreparartablas,existenherramientasgrficas
queincorporaninterfacesparalaadministracindelabasededatoseincluyenopcionesparaoptimizar,chequearyrepararlastablas.
Entreesasherramientasgrficasdisponiblesdeformagratuitaenelmercado,queincorporanopcionesparallevaracaboelmantenimiento
delastablas,seencuentranMySQLAdministratoryPhpMyAdmin.
Debesconocer
ParavercmorealizarelmantenimientodelastablasdeunabasededatosdesdePhpMyAdminconsultaenelenlacesiguiente:
MantenimientodetablasconPhpMyAdmin.(0.69MB)
MantenimientodetablasconPhpMyAdmin.(0.69MB)
Autoevaluacin
MySQL Administrator y PhpMyAdmin incorporan una interfaz grfica para el mantenimiento de tablas que implementa algunas sentencias SQL vistas en
estaunidad.Seleccionadelasiguientelista,lassentenciasalasquenosreferimos:
REPAIRTABLE.
CHECKTABLE.
OPTIMIZETABLE.
ANALYZETABLE.
MostrarInformacin
Copiasdeseguridad.
Casoprctico
EnelapartadoanteriorAlejandrahaconsideradotodaslassituacionesquepuedenprovocarfallosenlabasededatosy,havisto
quemuchasdeellassonimprevisibles.
Ellasabequelamejorsolucindelosproblemaseslaprevencin,peroenmuchoscasosestonoesposibleCmopodra
evitar que el disco duro que guarda la base de datos sufra algn dao? Ahora que TalleresFaber est en pleno funcionamiento
tiene claro que no debe correr riesgos. Si no puede evitar que en algn momento la base de datos pueda daarse, si puede
establecerunaestrategiaparapoderrecuperarlainformacin,siesoocurre.
Alejandrasedisponeaestudiarcmohacercopiasdeseguridaddeunabasededatosypoderrestaurarlosdespus.Veamos
culessonlospasosnecesarios.
Lainformacincontenidaenunabasededatosdebeestarsiempreactualizada.UnavezimplantadounSGBDesmuyimportanteaseguraresainformacin,puestoquedeello
vaadependereldesarrollodetodaslasaplicacionesposteriores.Unadelascuestionesmsimportantesatenerencuenta,esestablecerunapolticadecopiasdeseguridado
backup.Lascopiasdeseguridaddelabasededatostienenunaimportanciavitalencasodeunacadagravedelsistema.
Una copia de seguridad o respaldo se realiza con el objetivo de poder restaurar el original cuando se produzca una prdida de datos garantizando la integridad y la
disponibilidad.
Alahoradehacerunacopiadeseguridadhayqueconsiderar:
Eldispositivoenquesevanaalmacenarlosdatosdelacopiadeseguridad.
Procedimientodecopiaoptimizado.Quepermitatrabajarcondatosenuso.
Procesosdecompresinycifrado.
Aunquepareceunprocesosencilloenalgunoscasosesimportantecopiarnicamentelosficherosquesehayanmodificado.Paraellose
utilizansistemasincrementalesquepermitencopiarslolosbloquesfsicosquehansufridocambios.
Cuandolacopiadeseguridadsehacesobredatosenusoesposiblequehayaficherosabiertosyqueesteprocesotardevariosminutos,
paraellosebloqueaelficheroparaevitarqueseproduzcancambios,otraposibilidadeshacerunaimagendelficheroyrecogerunregistro
deloscambiosquesehanproducidomientrasduraesteproceso.
Larealizacindecopiasdeseguridadsiempretieneimpactoenelsistemaporesoesimportanteprogramarsuejecucinparaaumentarsu
efectividadyniveldeoptimizacin.
Reflexiona
Lacopiadeseguridadeselmejorsistemaparaprotegerlosdatosdeunaempresa,portantoesmuyimportantequestasehayarealizadocorrectamenteyquepueda
serrestauradaasuubicacinoriginal
Tiposdecopiasdeseguridad.
EnMySQLlastablassealmacenancomoarchivos,portantopodemoshacerfcilmentecopiasdeseguridad.Paraellonecesitamospreviamente:
1.BloquearlastablasrelevantesconLOCKTABLESparaevitarmodificacionesenlasmismasduranteesteproceso.nicamenteesnecesarioelbloqueodelectura,deesta
formaotrosusuariospuedenconsultarlabasededatosmientrassehacelacopia.
2.EjecutarFLUSHTABLESparaactivartodoslosndicesasociadosalastablasantesdecopiar.
Debesconocer
Para conocer la sintaxis del comando FLUSH y revisar la sintaxis de las sentencias LOCK/UNLOCKTABLES vistas en una unidad anterior, puedes acceder al manual
pinchandoenlossiguientesenlaces:
LOCK/UNLOCKTABLES
FLUSH
Podemoshacercopiasdeseguridad:
Detablas,aniveldeSQL:
ConSELECTINTOOUTFILE.
ConBACKUPTABLE.
Delabasededatos:
Conelprogramamysqldump.
Conelscriptmysqlhotcopyscript.
Consideraciones:
EnelcasodetablasISAMyMyISAMtambinpodemossimplementecopiarlosarchivosquegeneracadaunadeesastablas(.frm,.MYD,.MYI),peroestonoesvlido
paratablasInnoDB.Mysqlhotcopy.
Antesdehacerunacopiaconmysqldumpesnecesarioactivarelregistrobinarioparapoderrecogerloscambiosqueseproduzcanmientrasejecutamosmysqldump.
Podemoshacerunacopiadeseguridadincrementalparaellohabrqueactivarelregistrobinario.Parahacerlacopiadeseguridadincrementalsernecesario:
EjecutarFLUSHLOGS.
Copiaraldirectoriodeseguridadtodoslosregistrosbinariosdesdelaltimacopiadeseguridad.
Vamosavertodosestosprocedimientosmsdetenidamenteenlossiguientesapartados.
Autoevaluacin
Parahacerunacopiadeseguridaddelabasededatosesnecesariopararelservidorparaquenosemodifiquendatosduranteelproceso.Verdaderoofalso?
Verdadero Falso
CopiasdeseguridaddetablasconSELECTINTOOUTFILE.
Sirveparahacerunacopiadeseguridaddeunatablaenunfichero:
SELECTINTOOUTFILE'NombreFichero'OpcionesDeExportacin
EscribelosregistrosseleccionadosconSELECTenunficheronuevo.Esteficheronodebeexistirpreviamente.Elficherodedestinodebe
estarenlamquinaservidor,nopuedeestarenunamquinadistinta.
Suutilidadprincipalesladepermitirvolcarrpidamenteunatablaenelordenadorquehacedeservidor.
LasOpcionesDeExportacinpuedenserFIELDSyLINES,ambassonopcionalesperosiseespecificanambas,FIELDStienequeirantes
deLINES.
FIELDS
FIELDSTERMINATEDBY'Cadena'.
FIELDS[OPTIONALLY]ENCLOSEDBY'Carcter'.
FIELDSESCAPEDBY'Carcter':Controlacomoescribircaracteresespeciales.
LINES
STARTINGBY'Cadena':Ignoraelcarcterqueseusacomoprefijocomnatodaslaslneas.
LINESTERMINATEDBY'Cadena'.
Sinoseespecifican,losvalorespordefectoson:
ParaFIELDS
FIELDSTERMINATEDBY'\t'ENCLOSEDBY''ESCAPEDBY'\\'
ParaLINES
LINESTERMINATEDBY'\n'STARTINGBY''
Pordefectoestecomandofunciona:
Sincomillasenloscampos.
Contabuladoresparasepararloscampos.
Cmocarcterdeescapelabarra(\).
Alfinaldecadalneaescribeunalneanueva.
EstecomandocomplementaaLOADDATAINFILE.
LOADDATAINFILE'NombreFichero'[REPLACE|IGNORE]INTOTABLENombreTablaOpcionesDeImportacin
LasOpcionesDeImportacinsonlasmismasquelasOpcionesDeExportacinvistasparaSELECTINTO
Parasaberms
Paraconocerelrestodeopcionesdelassentenciasanterioresaccederalmanualmediantelossiguientesenlaces:
SELECTINTOOUTFILE
LOADDATA
Ejemplo:Parahacerunacopiadeseguridaddearchivosindividuales.
1.Paravolcarlatabla:
SELECT*INTOOUTFILE'NombreArchivo'FROMNombreTabla
2.Pararestaurarlatabla:
LOADDATAINFILE'NombreArchivo'INTOTABLENombreTablaREPLACE.
REPLACEseutilizaparaevitarregistrosduplicadoscuandounregistronuevoyunoviejotenganlamismaclave.Latablatienequetenerunndicequenoadmitaduplicados.
Ejercicioresuelto
RealizaunacopiadeseguridaddelatablaAgenda
CopiasdeseguridaddetablasconBACKUPTABLE.
Copiaaldirectoriodedestinoelmnimonmerodeficherosquesenecesitaparapoderrestaurarlatabla.
BACKUPTABLENombreTabla1,[,NombreTabla2..]TO'///NuevoDirectorio'
EstecomandosoloesvlidocontablasMyISAM.ComosabemoslastablasMyISAMsealmacenanendiscoen3ficherosquesedenominanigual
quelatablaperoconlasextensiones:
frm:almacenaladefinicindelatabla.
MYD:almacenalosdatos.
MYI:almacenaelndice.
Estecomandocopialosficheros.frmy.MYD,elficherodendice.MYIsereconstruyeapartirdelosotrosdos.
Antesdehacerlacopiadeseguridadseefectaunbloqueodelecturapreviodecadatabla,silacopiadeseguridadafectaavariastablas,sedebe
utilizarLOCKTABLESparahacerunbloqueodelecturadelasmismasyasevitarquesehagancambiosenalgunamientrasseesthaciendola
copiadeseguridad.
PararestaurarlacopiadeseguridadseutilizaelcomandoRESTORETABLEcuyasintaxises:
RESTORETABLENombreTabla1,[,NombreTabla2..]FROM'///NuevoDirectorio'
TantoBACKUPTABLEcomoRESTORETABLEsoncomandosqueestnendesuso.EnlaversindeMySQL5.5yposterioresyanoseincluyen.Ensulugaresmejor
utilizarmysqlhotcopy.
Conmysqldump.
Permitehacercopiasdeseguridaddeunaovariasbasesdedatos,ascomotransferirdatosacualquierotroservidorquepuedenoser
MySQL.EstosehacemediantecomandosSQLquefacilitanlacreacindelatablayelvolcadodelosdatos.
ElarchivocreadoesunarchivodetextoquecontienelassentenciasSQLnecesariasparacrearlastablaseinsertarlosdatosenlasfilas.Es
un fichero de salida que puede usarse despus para generar de nuevo la base de datos, bien desde la lnea de comandos de MySQL o
desdelapantalladecreacindesentenciasSQLdecualquierentornogrfico.
Laslimitacionesdelarestauracindependerndelasopcionesquesehanespecificadoalhacerlacopiadeseguridad,portantoesmuy
importanteelegirestasopcionescorrectamenteparanollevarnossorpresasdesagradables.
Paravolcarunaomsbasesdedatosenunficherodetextopuedenusarsedistintassintaxis:
Mysqldump[opciones]NombreBaseDatos[Tablas]
Mysqldump[opciones]databasesNombreBaseDatos1[NombreBaseDatos2NombreBaseDatos3]
Mysqldump[opciones]alldatabases
Esteprogramaadmiteunagranvariedaddeopciones,deellasvamosadestacarlasmstiles:
OpcionesparaMysqldump.
OPCIONESDEmysqldump SIGNIFICADODELAOPCIN
adddroptable Aadeelcomandodroptableantesdecreatetablealrestaurar.
addlocks Aadebloqueosdetablaparaquelasinsercionesseanmsrpidas.
alldatabases,A Copiatodaslasbasesdedatos.Eslomismoqueutilizardatabasesseleccionandotodas.
compatible=Sistema Lasalidademysqldumpsercompatibleconelsistemaelegidoquepuedeser:oracle,postgre,db2,etc.
compress,C Comprimelainformacinentreelclienteyelservidor,siamboslosoportan.
createoptions IncluyetodaslasopcionesdetablaespecficasdeMySQLenCREATETABLE.
flushlogs,F Escribeendiscotodosloslogsantesdecomenzarconlacopia.
force,f ContinaaunqueseproduzcaunerrordeSQLdurantelacopia.
lockalltables,x Bloqueatodaslastablasdetodaslasbasesdedatos,conunbloqueodelecturaglobal.
nodata,d Vuelcanicamentelaestructuradelatabla.
opt Creaunvolcadorpido.Actualmenteestactivadopordefecto,paradesactivarloconskipopt.
OPCIONESDEmysqldump SIGNIFICADODELAOPCIN
password[=contrasea],
Sirveparaintroducirlacontraseaalconectarconelservidor.Siseomitelacontrasealapidealejecutarelcomando.
p[contrasea]
quick,q Seutilizaparatablasgrandes.Guardalosregistrosdeunoenunoenlamemoriapreviamente.
singletransaction Seusacontablastransaccionales.EjecutaBEGINantesdevolcarlosdatos.Nosepuedeusarconlocktables.
tables Losargumentosquevienenacontinuacinsetomancomonombresdetablas.
User=NombreUsuario,
Nombredelusuarioparaconectarconelservidor.
uNombreUsuario
where='Condicin',w'Condicin' VuelcaslolosregistrosquecumplenlacondicinWHERE.
Parasaberms
Paraconocerelrestodeopcionesqueadmiteelprogramamysqldumpaccedealmanualenelsiguienteenlace:
mysqldump.
Ejercicioresuelto
Crea una copia de seguridad con mysqldump de la base de datos TalleresFaber en el archivo Copia20110501.sql con los datos de usuario Alejandra y password
Alisal2011.
Escribetambinelcomandopararestaurarlacopia.
Mysqlhotcopy.
SeutilizaparahacercopiasdeseguridadcuandotodaslastablasqueintegranlabasededatossondetipoMyISAM,yaquetantolacopia,comola
restauracinsonmsrpidas.
ParahacerlacopiadeseguridadestautilidadhaceunlocksobrelastablasycopialosarchivosdelabasededatosMyISAM.
Lascaractersticasmsdestacadasdeesteprogramason:
EstescritoenPerl.
Utilizalassentencias:LOCKTABLES,FLUSHTABLES,cpscp.
Necesariamentedebeejecutarseenelordenadordondeseencuentreeldirectoriodelabasededatosquesevaacopiar.
Puedehacerseunacopiadetodalabasededatos,detablasodevariasbasesdedatos.
Sintaxisenelcasodeunanicabasededatos:
MysqlhotcopyNombreBaseDatos[///NuevoDirectorio]
Paravariasbasesdedatos:
MysqlhotcopyNombreBaseDatos1,NombreBaseDatosN///NuevoDirectorio
Cuandoqueremoshacerunacopiadeseguridaddetablasquecontenganunaexpresin,lasintaxises.
MysqlhotcopyNombreBaseDatos./[~]Expresin/
Paraseleccionarlastablasquenocumplanesaexpresinanteponemosalamismaunatilde(~).
Lasopcionesquesoportamysqlhotcopysonlassiguientes:
OpcionesparaMysqlhotcopyscript.
OPCIONESDEmysqlhotcopy SIGNIFICADODELAOPCIN
allowold Sieldestinoyaexistelorenombracon_old.
flushlog Vuelcalosficheroslogdespusdebloqueartodaslastablas.
keepold Mantienesinborrarlosdestinosrenombrados.
method=# Paraelegirelmtododecopia,quepuedesercpscp.
noindices Noincluyelosndicesenlacopiadeseguridad.Posteriormentesepuedenrehacerconmyisamchkrq.
password=contrasea,
Contraseaparaconectaralservidor.Lacontraseanoesopcional.
pcontrasea
port=nmerodepuerto,
PuertoTCP/IPporelquenosconectamosalservidorlocal.
pnmerodepuerto
OPCIONESDEmysqlhotcopy SIGNIFICADODELAOPCIN
regexp=expresin Copialasbasesdedatoscuyosnombrescumplanlaexpresindada.
triggers Vuelcalostriggersasociadosalastablas.Estactivadapordefecto,paradesativarlaconskiptriggers.
user=NombreUsuario,
NombredelusuariodeMySQLparaconectarsealservidor.
uNomnreUsuario
Paratenerinformacinadicionalejecutar:perldocmysqlhotcopy.
Parasaberms
Paraconocerelrestodeopcionesqueadmiteelprogramamysqlhotcopyaccedealmanualenelsiguienteenlace:
mysqlhotcopy.
Ejercicioresuelto
Hazunacopiadeseguridaddelabasededatospruebasconmysqlhotcopy.
Mysqlimport.
EsunprogramaqueseejecutadesdelalneadecomandosyproporcionatodaslasopcionesdelasentenciaLOADDATAINFILE
Lasintaxisdeestaherramientaseslasiguiente:
Mysqlimport[opciones]NombreBaseDatosFicheroTexto1[FicheroTexto2]
FicheroTexto:Elnombredelatabladedestinolotomadelnombredelficherodetexto,sintenerencuentalaextensin.
Ejemplo:siimportamoslosficherosTalleresFaber.txtyTalleresFaber,ambosseimportanalatablaTalleresFaber.
Algunasdelasopcionesquesoportason:
OpcionesparaMysqlimport.
OPCIONESDEMysqlimport SIGNIFICADODELAOPCIN
columns=listacolumnas,
Listadecolumnasseparadasporcomas.Elordendelascolumnasdedatosindicaelordendelascolumnasdelatabla.
clistacolumnas
delete,D Vacalatablaantesdeimportarelficherodetexto.
fieldsterminatedby=...,
fieldsenclosedby=...,
fieldsoptionallyenclosed
SonopcionesequivalentesalasclusulasdeLOADDATAINFILE.
by=...,
fieldsescapedby=...,
linesterminatedby=...
host=NombreHost,
LosdatosseimportanalservidorMySQLdelequipo.
hNombreHost
local,L Leelosficherosdelequipolocal.
locktables,l Bloquealastablasparaescritura.
password[=contrasea],
Contraseaparaconectarsealservidor.
p[contrasea]
Controlancmotratarlosregistrosqueduplicanclaves.replacehacequelosregistrosnuevossustituyanalosanteriores,
replace,r
ignorelosignora.
ignore
Sinoseponeopcinesosvaloresprovocanunerror.
OPCIONESDEMysqlimport SIGNIFICADODELAOPCIN
silent,s Slomuestramensajescuandohayerror.
user=NombreUsuario,
UsuarioparaconectarsealservidorMySQL.
uNombreUsuario
Parasaberms
Paraconocerelrestodeopcionesqueadmiteelprogramamysqlimportaccedealmanualenelsiguienteenlace:
mysqlimport.
Tanto para cargar archivos con LOAD DATA INFILE como para hacerlo con mysqlimport, debes asegurarte de que LOAD DATA LOCAL INFILE est activado en el
ficheromy.ini.
Ejercicioresuelto
PartiendodelficheroCopiaClientescreadoapartirdelatablaTalleresFaber.CLIENTES,conlainstruccin:
SELECT*INTOOUTFILE'CopiaClientes'FROMCLIENTES;
Importarlacopiaconmysqlimport:
Planificacindecopiasdeseguridad.
Debido a su importancia, no podemosdejarquelarealizacindecopiasdeseguridad dependa de que las personas que gestionan la
basededatosejecutenesteprocesocadaciertotiempo. Si queremos evitar muchos dolores de cabeza stas deben programarse para
queseejecutenperidicamente,deformaautomtica.
Lascopiaspuedenhacersecondiferentesherramientas:
InnoDbHotBackup:copiadeseguridadenlnea,sinbloqueos,paraarchivosInnoDB,quenomolestaalaslecturasyescriturasde
lastablas.ActualmentehacambiadosunombreporMySQLEnterpriseBackup.EspropiedaddeOracleynoesunaherramienta
gratuita
Mysqldump:copiadeseguridadonlinequeyahemosvistoenestaunidad.
MysqlhotcopyexclusivamenteparatablasMyISAM.
HerramientasgrficascomoPhpMyAdmin,MySQLAdministrator,MySQLWorkbench,etc.
1.Cundohacerlacopiadeseguridad:esimportanteprogramarestascopiascuandolacargadetrabajoesbaja,sobretodosilacopiadeseguridadescompleta.
2.Qu tipo de copia de seguridad se debe hacer: las copias de seguridad completas no siempre son convenientes porque incluyen tambin los datos que no han
cambiadodesdelaltimacopia,llevanmuchotiempoysonmuygrandes.Esconvenienterealizarunacopiadeseguridadcompletainicialmenteydespushacercopias
incrementales.Pararecuperarlasserecargalacopiacompletaylascopiasincrementales.
3.Cmo hacer las copiasdeseguridad:para hacer la copiadeseguridadcompleta podemos utilizar mysqldump. Porejemplo: mysqldump singletransaction
TalleresFaber>Backup_20110501.sql(domingo)
SiutilizamossingletransactionsuponemosquetodaslastablassonInnoDBynosaseguramosquelabasededatossevuelcaenestadoconsistente.Obtendremosunarchivo
SQLconloscomandosINSERTpararecuperarlastablasvolcadas.
Parahaceruna copiadeseguridadincrementalnecesitamosguardarloscambiosquesehayanproducidodesdelaanteriorcopiadeseguridad,paraesoesnecesario
activarelregistrobinarioaliniciarelservidorparaquetodosloscambiosqueactualicendatosseguardenenunarchivoderegistrobinario.Estosarchivosseguardanenel
directorio data y se crea uno nuevo cada vez que se arranca el servidor. Junto a estos archivos se guarda tambin un archvio .index. Para iniciar un nuevo registro binario
cuandoqueramospodemosejecutarFLUSHLOGSomysqladminflushlogs,peromysqldumptambintieneunaopcinparavolcarloslogs.
Ejemplodecopiasdeseguridad:supongamosqueennuestrotallerseactualizadiariamenteelregistrobinariopararecogertodosloscambios,portantoalhacerla
copiadeseguridadnosinteresavolcarelregistrobinarioeinicializarunonuevoquerecojanicamenteloscambiosapartirdeesacopia.Sitenemosestoencuenta
lacopiadeseguridaddeldomingosehar:
Ejemplo:mysqldumpsingletransactionflushlogsTalleresFaber>Backup_20110501.sql(domingo)
Unavezhechalacopiadeseguridadeldomingo,eneldirectoriodatahabrunnuevoarchivoderegistrobinarioquerecogerloscambiosposterioresalacopia
quehemoshecho.
Silacopiaincrementalesdiaria,comohemosdicho,cadadaejecutaremosmysqladminflushlogsoFLUSHLOGSparacrearelsiguienteregistrobinario.
4.Cmoborrarlosregistrosbinariosquenosenecesiten:losregistrosbinariosocupanespacio,devezencuandosernecesarioeliminarlosquenosenecesiten.
Paraelloalhacerlacopiadeseguridadseescribe:
Ejemplo:mysqldumpsingletransactionflushlogsTalleresFaberdeletemasterlogs>Backup_20110501.sql
5.Cmorestaurarlacopiadeseguridad:silaltimacopiadeseguridadesladeldomingoharemos:
a.Restaurarlosdatosaldomingo:
mysql>Backup_20110501.sql
b.Restaurarloscambioshechosdesdeentonces,(supongamosdosdasdespus):
mysqlbinloginfoalisal11bin.000007infoalisal11bin.000008|mysql
Autoevaluacin
Conrelacinalaaplicacindellogbinarioalltimorespaldodeunabasededatos,eligelaopcincorrecta:
MysqldumpNombreHostbin.000001|mysql
MysqlbinlogNombreHostbin.000001|mysql
MysqlhotcopyNombreHostbin.000001|mysql
MysqlcheckNombreHostbin.000001|mysql
Herramientasgrficasparalaimportacinyexportacindedatosycopiasdeseguridad.
Casoprctico
LossociosdeTalleresFaberestnsatisfechosconelfuncionamientodelSGBDysuimplantacinenelnegocio.Tantoesasque
han decidido instalar un nuevo servidor, de mayores prestaciones, y colocarlo en un nuevo espacio que cumpla con todas las
medidasnecesariasparagarantizaralmximolaseguridaddelosdatos.
Para Alejandra esto plantea la necesidad de exportar la base de datos a un fichero, incluyendo en l la estructura de tablas e
ndices,ascomolosdatos,procedimientosyfuncionesalmacenados,eimportarlodespusenelservidordedestino.
Decideempezarporanalizartodaslasherramientasquelepuedenayudarenestetrabajoparaelegirlamsconveniente.
Enlosapartadosanterioreshemosvistoalgunasopcionesparaexportarlosdatosdeunabasededatosaunficheroypoderrecuperarlosdespusdeformasdistintas:
MedianteelusodesentenciasSQL.
ConherramientasyprogramasclientequeincorporaMySQL.
Enesteapartadoveremoscmorealizaresasfuncionesutilizandounainterfazgrfica.
Las herramientas grficas que venimos utilizando hasta ahora incorporan funcionalidades relativas a la administracin del servidor entre las que se incluye la posibilidad de
exportareimportardatos.
Seanalizanenestaunidad:
PhpMyAdmin.
MySQLWorkbench.
MySQLAdministrator
Existenotrasherramientasnogratuitasdisponiblesenelmercado.
Lascaractersticasqueofrecenson:
Lamayoradelasherramientasofrecenlaposibilidaddevolcarlabasededatoscompletaoseleccionartablas.
Laexportacinpuedehacerseendistintosformatos:SQL,CSV,texto,etc.ascomolaposteriorrecuperacin.
Enalgunoscasosseofrecelaposibilidaddeprogramarlascopiasdeseguridadparaqueserealicenautomticamenteenundayhorasealados.
MySQLpermitecopiartablasendiferentesformatosdetexto,ascomoimportardatosapartirdeficherosdetextotambinendiferentesformatos.
Esto se puede usar para exportar los datos de nuestras bases de datos a otras aplicaciones, o bien para importar datos desde otras fuentes a nuestras tablas.
Tambinsepuedeusarparahacercopiasdeseguridadyrestaurarlasposteriormente.
PhpMyAdmin.
EsunaherramientaparamanejarlaadministracindeMySQLatravsdepginasweb,utilizandoInternet.
CuandoaccedemosaPhpMyAdminenlaportadaprincipaltenemoslasopciones:
Importar.
Exportar.
Parasaberms
SiquieresverunvdeotutorialsobrecomoImportarExportardatosutilizandoPhpMyAdminpinchaenelsiguienteenlace:
ComoExportareImportarunabasededatosMySQLconPhpMyAdmin.
Tutorial: Como Expo...
Autoevaluacin
SealalaprincipalcaractersticaquediferenciaaPhpMyAdmindelasotrasherramientasparaadministrarbasesdedatosquehemoscitado:
EsunaherramientaparaMySQL.
Permitelaadministracindelabasededatos.
LaadministracinsehacedesdeunapginaWeb.
SedistribuyebajolicenciaGNU.
MySQLWorkbench.
SetratadeunaaplicacindesarrolladaparaMySQLquesepuededescargardesdelapginaweboficial.Cuandoaccedemosaestaaplicacin,en
lazonadeadministracindelservidor(ServerAdministracin),podemosseleccionarenelmendeopciones:DATAEXPORT/RESTORE.
Desdeaqupodemosvolcarorestaurardatosdeunarchivoalabasededatosmedianteelusodeunasistente.
Lasopcionesdisponiblesson:
Exportaradisco.
Importardesdedisco.
Opcionesavanzadas.
Autoevaluacin
Sealasiesverdaderaofalsalasiguienteafirmacin:
DesdeMySQLWorkbenchpodemosimportarunacopiadeseguridaddeunabasededatoshechaconMySQLAdministrator.
Verdadero Falso
MySQLAdministrator.
SetratadeunaaplicacindestinadaalaadministracindeservidoresdebasesdedatosdeMySQLconunentornogrficomuyaccesible.
Entretodaslastareasadministrativasquepermiterealizar,estlagestindecopiasdeseguridadyrecuperacionesatravsdelasopciones
mostradasenelpanelprincipal:
Backup.
Restore.
Autoevaluacin
Ladiferenciafundamentalentreestaherramientaparahacercopiasdeseguridadyelrestodeherramientasvistasenestaunidades:
Permitehacercopiasdeseguridadyrestaurarlas.
Permiteelegirentrecopiadetablasindependientesodetodalabasededatos.
Permiteprogramarlascopiasdeseguridad.(CORRECTO).
Permiteejecutarelbackupenunatransaccin.
MigracindedatosentreS.G.B.D.
Casoprctico
AntesdequeAlejandrafueracontratadaporTalleresFaberparadesarrollarunabasededatos,Silvia,lagerentedeadministracin,
manejabaunapequeabasededatosenAccessconalgunosdatosdelostrabajadoresdelaempresa.
AlejandrapretendetrasladaresabasededatosasuactualSGBDqueesMySQL.
SabemoscmotraspasarinformacindeunSGBDaotro?Sinoesas,serconvenienteseguirlospasosdeAlejandraen
estetrabajoquepuederesultarmuytilcuando,comoenestecaso,nuestroSGBDanteriorsenosquedapequeoynecesitamos
unaherramientamspotente.Trataremospuesenesteapartadodela migracindedatosentredistintosSGBD.
VamosavercmopodemosmigrarbasesdedatosentredistintosSGBDconlasherramientasquenosproporcionanlasaplicacionesquevenimosutilizandohastaahora,para
gestionarnuestrasbasesdedatos.
EnconcretoutilizaremosMySQLMigationToolkitquenospermitemigraraMySQLbasesdedatosdeotrossistemascomoson:
MsAccess.
MaxDbDatabaseServer.
OracleDatabaseServer.
MsSQLServer.
Etc.
Cuandotenemosunaaplicacinenunformato,porejemploAccess, y necesitamos pasarla a otro, como en nuestro caso MySQL, ser necesario convertir esos datos bien
creando nuevas tablas o modificando las existentes ya que algunos tipos de datos pueden diferir de unas bases de datos a otras, especialmente los datos de tipo fecha,
numricos,losdetipomemo(textomayorde256caracteres),imgenes,etc.quepuedenalmacenarsedeformadistinta.
Debido a que se trata de un proceso delicado no lo daremos por finalizado hasta que no estemos seguros de no haber perdido datos y nos ayudaremos para ello de
herramientasfiables.
Conestaherramientapodemosmigrardatosqueresidenenequiposdiferentesdirectamente,usandounagenteespecialdemigracin.
Debesconocer
ParaverpasoapasoelprocesodemigracindebasesdedatosconlaherramientaMySQLMigrationToolkitaccedealadireccinquetemostramosenelenlacea
continuacin.
MySQLMigrationToolkit.
Esta herramienta est descrita en el manual de MySQL, pero no est disponible en la versin traducida en espaol. Si tienes problemas con el ingls, te
recomendamosqueutilicesuntraductoroqueejecuteselenlaceconelnavegadorGoogleChrome,cuyatraduccinesautomtica.
Ejercicioresuelto
PartiendodelabasededatosHorasExtra.mdbenAccess2003quecontieneunanicatabladenominadaHorasExtra,migrarlabasededatosdeAccessaMySQL
utilizandolaherramientaMySQLMigrationToolkit.
Documentacindelasmedidasypolticasdeseguridad.
Casoprctico
AlejandraestapuntodefinalizarlaimplantacindelabasededatosparalagestindeTalleresFaber.Enestaltimafaseseha
encargadodelosaspectosrelativosalaintegridadyalaseguridaddelosdatos.Unavezhechotodoestetrabajoesnecesario
recogerlasmedidasypolticasdeseguridadquehadiseadoenalgndocumentodeformaquetodaslaspersonasqueintegranla
empresaloconozcanylocumplan.
Porotraparte,altratardatosdecarcterpersonal,todaslaspersonasquemanejanlainformacintendrnquetomarunaseriede
medidasexigidasporlaLeydeProteccindeDatos.
DebidoaquehoyendalasempresasadmitenelaccesoalsistemaatravsdeInternet,esfundamentalprotegerlosrecursosycontrolarelaccesoalsistema.Laseguridad
informticaconsisteengarantizarquelosrecursosmateriales,elsoftwareylosdatosseutilicenparaaquelloparaloquesecrearon.
La poltica de seguridad es el documento de referencia que define los objetivos de seguridad y las medidas que deben implementarse para tener la certeza de
alcanzarestosobjetivos.
Enlsedefinenunnmerodereglas,procedimientos,controlesyprcticasptimasqueasegurenunniveldeseguridadqueestalaalturadelas
necesidades de la organizacin. Este documento se debe presentar como un proyecto que incluya a todos. Una vez redactada la poltica de
seguridad,sedebenenviaralosempleadoslasclusulasquelosimpliquenparaquelapolticadeseguridadtengaelmayorimpactoposible.
Laspolticasdeseguridadincluyenlossiguientesaspectos:
Concienciaralosusuariossobrelaimportanciadelaseguridad.
Seguridadlgica:aniveldelosdatosdeleempresa,delasaplicaciones,delosdatosdelosclientes,etc.
Seguridadenlastelecomunicaciones,servidores,redes,etc.
Seguridadfsica:deinfraestructurasmateriales,alojamientodeservidores,estacionesdetrabajodelosempleados,etc.
Seguridadinformtica:incluyeprocedimientosparaadministraractualizacionesyunaestrategiadecopiasdeseguridadplanificada.
Unplanderecuperacinsiseproduceunaccidente.
Unsistemadedocumentacinactualizado.
Unavezestablecidaslasmedidasdeseguridadesnecesarioprobarstasparadetectarposiblesvulnerabilidades.
Unmtodomseficazparagarantizarlaseguridadesrealizarunaauditoradeseguridad,queconsisteenquelasmedidasseanverificadasporuntercero,generalmenteuna
empresaespecializada.
Delamismaformaenquelossimulacrosdeincendiosonfundamentalespararepasarunplandeescapeencasodeincendio,laprcticadelplancontradesastrespermitea
unaorganizacinconfirmarqueelplanfunciona,ygarantizarquetodaslaspersonasinvolucradassepanquhacer.
Debesconocer
Parasaberquaspectosdebecontenereldocumentodeseguridadylanormativaaaplicaralrespecto,debesleerdetenidamenteeldocumentoreferenciadomediante
elsiguienteenlace:
Lasmedidasdeseguridadanivelbsico.
Autoevaluacin
Consultando el documento Las medidas de seguridad a nivel bsico, referenciado en el enlace anterior contesta si es verdadera o falsa la siguiente
afirmacin:
EnelRealDecreto994/1999.Seestablecequedebernrealizarsecopiasderespaldoalmenossemanalmente.
Verdadero Falso
Anexo.Licenciasderecursos.
LicenciasderecursosutilizadosenlaUnidaddeTrabajo.
Recurso(1) Datosdelrecurso(1) Recurso(2) Datosdelrecurso(2)
Autora:Topato.
Autora:Benja.
Licencia:CCbyncnd.
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/benja316/5386104768
http://www.flickr.com/photos/roadhunter/68017745
Autora:IRRIImages.
Autora:JvagabondShutterbug.
Licencia:CCby.
Licencia:CCbynd.
Procedencia:
Procedencia:http://www.flickr.com/photos/waikikiweekly/3740503355
http://www.flickr.com/photos/ricephotos/2698406532
Autora:Foreverdigital.
Autora:SetoTheTech.
Licencia:CCbyncnd.
Licencia:CCbyncnd.
Procedencia:
Procedencia:http://www.flickr.com/photos/setothetech/4798385795
http://www.flickr.com/photos/foreverdigital/357103120
Autora:pst. Autora:Jpst.
Licencia:GPL. Licencia:GPL.
Autora:CalixtoeloctavosatlitedeJpiter.
Autora:adesigna.
Licencia:CCbyncsa.
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/adesigna/4967712037
http://www.flickr.com/photos/calixto8/134972253
Autora:Pst. Autora:Cayusa.
Licencia:GPL. Licencia:CCbync.
Procedencia:Elaboracinpropiaapartirdecapturasdepantalladel Procedencia:
programaMySQLWorkbench. http://www.flickr.com/photos/cayusa/2221656599
Autora:Treball.
Autora:RennettStowe.
Licencia:CCbynd.
Licencia:CCby.
Procedencia:
Procedencia:http://www.flickr.com/photos/tomsaint/2868226565/
http://www.flickr.com/photos/treballcat/4554279235
Autora:Isafmedia.
Autora:DavidVelasquez.
Licencia:CCby
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/diurno/3030112528
http://www.flickr.com/photos/isafmedia/3103875643
Autora:Pst.
Autora:RenatoPizarroOsses.
Licencia:GPL.
Licencia:CCbyncsa.
Procedencia: Captura de pantalla del programa MySQL
Procedencia:http://www.flickr.com/photos/ranzio/2829083155
Workbench.
Autora:Pst.
Autora:AndyvanderRaadt(minimum).
Licencia:GPL.
Licencia:CCbyncnd.
Procedencia: Captura de pantalla del programa MySQL
Procedencia:http://www.flickr.com/photos/minimum/47846172
Workbench.
Autora:Pragmagraphr.
Autora:hugovk.
Licencia:CCbyncnd.
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/hugovk/2182758972
http://www.flickr.com/photos/sveinhal/2416609728
Autora:Pst. Autora:(Lolita)+8.
Licencia:GPL. Licencia:CCbyncsa.
Procedencia:CapturadepantalladelprogramaMySQLWorkbench.
Procedencia:
http://www.flickr.com/photos/lolita8fotos/2965513112
Autora:Pst. Autora:tavopp.
Licencia:GPL. Licencia:CCbync.
Autora:Daryl_mitchell.
Autora:Betacontinua.
Licencia:CCbyncsa.
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/betacontinua/2461625385
http://www.flickr.com/photos/daryl_mitchell/1199598508
Autora:laffy4k.
Autora:BjrnSderqvist.
Licencia:CCby.
Licencia:CCbysa.
Procedencia:
Procedencia:http://www.flickr.com/photos/kapten/416527996
http://www.flickr.com/photos/ranzio/2829083155
Autora:SybrenA.Stvel.
Autora:Auzigog.
Licencia:CCbyncnd.
Licencia:CCbyncsa.
Procedencia:
Procedencia:http://www.flickr.com/photos/ranzio/2829083155
http://www.flickr.com/photos/sybrenstuvel/2468506922
Autora:brianwc.
Autora:TonyAustin.
Licencia:CCbysa.
Licencia:CCby.
Procedencia:
Procedencia:http://www.flickr.com/photos/tonyaustin/2355186770
http://www.flickr.com/photos/brianwc/153108445
Autora:Pst. Autora:jennaream.
Licencia:GPL. Licencia:CCbyncsa.
Procedencia:Elaboracinpropiaapartirdecapturadelpantalladel Procedencia:
programaMySQLAdministrator. http://www.flickr.com/photos/33478010@N02/4175034274
Autora:justingaynor.
Autora:GaleradeJoshuaDavisPhotography.
Licencia:CCbyncnd.
Licencia:CCbysa.
Procedencia:
Procedencia:http://www.flickr.com/photos/ranzio/2829083155.
http://www.flickr.com/photos/justingaynor/10614438/
Autora:_N_I_C_K_
Autora:PatrickHoesl.
Licencia:CCbyncsa.
Licencia:CCby.
Procedencia:
Procedencia:http://www.flickr.com/photos/ranzio/2829083155
http://www.flickr.com/photos/nicksart/4630169586
Autora:Inworldprofessionalls. Autora:Ray_from_LA.
Licencia:CCby. Licencia:CC
Procedencia: Procedencia:
http://www.flickr.com/photos/inworldmomentum/489755720 http://www.flickr.com/photos/15132846@N00/5640557375
Autora:Pst. Autora:Alphadesigner.
Licencia:GPL Licencia:CCbync.
Procedencia:Elaboracinpropiaapartirdecapturasdepantalladel Procedencia:
programaMySQLMigrationToolkit. http://www.flickr.com/photos/jesstyle/4904264107
Autora:DarioCutin.
Licencia:CCbync.
Procedencia:http://picasaweb.google.com/lh/view?q=seguridad
&psc=G&filter=1&imglic=creative_commons#5475048819141860754