Está en la página 1de 22
swinots (Guia Admirist-acién de Bases de Datos en MYSQL Guia Administracién de Bases de Datos en MYSQL Guia Administracin de Bases de Datos Sitio Didactco~ Aprende en lines Curse: GESTION DE BASES DE DATOS Libro: Guia Administacién de Bases de Datos en MYSQL. Imprimido por Enzo Reyes Dia: jueves, 12 de noviembre de 2015, 00:59 pe cectcoladalmexbooktoalprinkindex chpid=96 ea swinots (Guia Admirist-acién de Bases de Datos en MYSQL Tabla de contenidos 4. Funcionamiento del Servidr de My Motores de Almacenamienta 5 Repaso de Consuls 6 Administacién de Teblas y Bases de Datos {LAdministracién de Usuario SRealizar v Restaurar Copias de Seguridad 13 Consstando Aplicaciones con Bases de Da 14 Repliccién y Diswibucion de Carga 15 Cluster de Servidores MYSOL pe cectcoladalmexbooktoalprinkindex chpid=96 nos Gila Admirtstacén de Bases de Datos en MYSQL. 1 Funciones del Administrador Las funciones de un sdministeador de bases de dtos son * Gest del wtare instatacin del software, actulizacin del software, conexin de programas (pore. ofimética) con el servidor de bases de datos. * Genin de as bates de dats: «reacin de bases de datos, importacin y exportaiin de datos, cpias de seguridad y recuperacién, opimizaci6n de las ables, anlisis dela intepridad {yreparacién.* Gestén de los usuarios: ceaciGn de usuarios ybaje,asignacin de permisos. + Gestinde to monitorizacin del rendimientoy el ‘ama, gestion de espacio yasignacién de quota, configuraciin 6ptima del servidor * Gestién de a seguridad: ‘monitorizacin de ls accesos, configuracia segura del servider. ip ecactcoladalmodtooktoliprinuindex php2ide95 ze nos Gila Admirtstacén de Bases de Datos en MYSQL. 2 Instalac n de la Base de Datos de Ejemplo Para las diferentes pruchas que haremos necesitaremos una bate de dos. Podemos descargar una sencilla base de datos de facurascion agui ‘Opcionalmente, también se puede desargar el dseio dela base de datos de factra normalizada con Power Designer Madelo concepiual y el madale fisica Para trabajar con la base de dats actus! haremos lo siguiente: 1) bajar el archivo de factura la extensién que tiene es "sql". Obendremos un cher Zactur.s" con scntencias SOL que a eecutarlo en el servidor rear las fablas de la base de datos. 2) Inca cliente de MySQL: rvs [oh eirectonservider] -p -ewwvario rseston Le fhtero sal] a mist cs: Sys stow srarus; 2) ysgladatn extended-status + Vera configuacion del servior: rysal> Show VARIABLES; 21> nysaladnin variables *Lecturas para profundizar nupuidex veg con/doc/rfinan'STe/index hil ip ecactcoladalmodtooktoliprinuindex php2ide95 22 nos Gila Admirtstacén de Bases de Datos en MYSQL. 4 Motores de Almacenamiento * Bl sevidor MySQL incorpora un carateristica Gnice Ilamada “motores de almacenamieno", que nos permite seleccionarel tipo de almacenamiento {interno decade ‘abl, en base al que mejor se adecte a una situacion particular. Dichaseleccién, la hace el desarollador a nivel de tabla, y no afecta a la manera en que el servdorinteractia con el cliente: los comandos SOL ser los mismos sea cual sea el motor de almacenamientoescogido, EL lente no necesita saber como se guardan los datos MySQL. dispone de una docena de motores de slmacenamiento propios, mis los motores extemos desrcllados por tereras partes que se pueden incorporar al servidor. Algusos de los mis conocios son: MyISAM, InnoDB, HEAP, NDB. + Selescionarel motor de almacenamiento de uns tabla (AGATE TABLE nonbre tabla (GeFinctSn) ENGINE = nonbre_noters Ejemplos CREATE TABLE chug (...) EMGINE+TO006; ALTER TABLE cludes ENGINEHytSIM to rca del motor MSISAM: No transactional. - Blogueos a nivel de abla, “Muy ripido en lectura yesritura (excepto esciturassimultancas en la misma table). - Bajo requerimiento de espacio en disco y memoria Los datos se guardan ea disco: diferentes ficheros para la defnicin dela abl, los datos y ls indices. Esl motor por defecto de MySQL. Fs una buena eleccién cuando necesitamos velocidad, y tenemos poces modificaciones simultaneas de Ia tbla + Trantaccionl. - Multiversionado: cuando miitiplestanstesiones modifica restos, InnoDB manteneaisladas las transaeciones guardando para cada una de ella un versén dstnta de un mismo registro, a cada irnsacei la versién que le correspond. Biogueos a nivel de registro Restricciones en claves fordneas, Fei ecuperacion de dato en caso de enor. ‘Ala conetrrencia ms seyura en esriu, Deshace transacciones a medias ("olback") Los datos se guardan en disco: un ficher paral definicin de la taba, y un “tablespace” para guardarconjuntamente datos e indices. EL tablespace puede consistr en uno o mis ficheros, incluso una prtcin enter en disco. + Podemios especificar como ereven ls tablespaces enelfchero de configuracion/es/mysql'my-cnf. Por ejemplo: * [myseld)innodb data. file_path = ibdstal-100Miihdata2:[00Msautoextend:max:S00M + Necesita mas espacio ch disco y iemoria que MyISAM para guardat los datos (unas tres veces mas de espacio en disco, y montones de RAM para las memoriastemporaes si queremos conseguir un rendimiento ptm), + Esuna buena eleeiin cuando necesitamos transacciones,resticcions enclaves forineas,o tenemos muchas eserituras simultaneas + Caractsticas del motor HEAP, *+ Los datos se guardan en memoria tlizando algoritmos que hacen un uso Spine de este medio, + Es muy, muy pido, - Podemos crear una tabla HEAP a partir de ua tabla en disco con: * CREATE TABLE nombre_fabla ENGINE=MEMORY SELECT * FROM nomre_tabla_disco; + Esuna buena elesién cuando netesitamos realizar operaciones muy répidas sobre conus pequetos de datos * carntitea el motor NDB: Es el motor de almacenamiento de los clister de MySQL LLabase de dats esta repatida por ls diferentes nodos del ester. roporciona alta disponiilidad mediante redundanc Proporciona alto rendimiento mediante fragmentacion d datos sobre los grupos de nodos Proporciona alta escalailidad mediante Ia combinacién dls dos caracteristias anteriores. [Los dato se guardan en memoria pero los logs van a disco, Es una buena eleccién cuando disponiendo de varios srvidoresnecesitams # la ver velocidad, tansuesionesy redundancta de datos; repicaci sinrona;y resistencia caidas de servidores. * Compartin dos motores MyISAM InnoDB HEAP NDB Multi-statement transactions, ROLLBACK == XX, Forcign key constraints a Locking evel Table ROW TABLE ROW BIRER indexes xX xX = Xx ip ecactcoladalmodtooktoliprinuindex php2ide95 a nos Gila Admirtstacén de Bases de Datos en MYSQL. FULLTEXT indexes Xo. ee HASH lookups - xX xX Xx (Other in-memory tree-based index =e 410 GIS, RTREE indexes 4g ee Unicode 410 41202 Merge (union views) Xoo. ee ‘Compress reed-oly storage Xoo. ee Relative disk use Low HIGH =~ Low Relative memory use LOW HIGH LOW HIGH + Podemos deshabiltar los motores de slmacenamiento que no nscestameos para shorrar memoria dal servidor, ya que no necesitaremos reservar memoria para ls bers y otras estructura de datos asociadss con el motor. Por ejemplo: A> nyse kp-beb --akp-tmnode nupidex veg com/doc/rtinan' Glewinnodb-storage-engin html nips, myeglconvdooirefman's Glen mvsal-cluster hia ip ecactcoladalmodtooktoliprinuindex php2ide95 2 ‘wri Chia Adminsaion de Bases de Dates en MYSOL 5 Repaso de Consultas SELECT columas FROM tabla [HERE condictén] [nour By coluwa ( RIVING condicién }) [onoen sy caiuma { Asc | o€SC J) [GONTT [loteto,} aun registros] (se pusde usar el conodin'* para seleccionar todas Lat cclumnss) jem: ERE dept =" 73" LIRIT 8,205 SELECT Facturaventa.td elie, SuM(facturaventa.val_tota fact) OH facturaventa GaouP ay 24 cise HAVING SUM(eacturaventa-val-sota fact) > 2000085, SELECT c1sente.apet_cise, cltente.nond_clie, facturaventa.num fact FROM citente, facturavents DORLETE FROM cable MERE coneteténs Ejemplos: DELETE FROM ciudad WHERE nom_civd ~ Mari DELETE FROM ciuded WHERE. | depto-0S' AND id id like 'cocorns' INSERT ITO tabia (columa, colunna2, ...) VALUES (valor, valor2, Ejemplos INSERT INTO ciudad (d_ciud,id_depto, om_eiud) VALUES (7355573 ianadas), INSERT INTO City SET Name~'JoanBrosse’, CountryCode~ ESP’, Distrct~"Katalonia’, Population3800000;, + Modine POATE tabia SET columatovalort, colunraz-valor2, «+. [WEE condiciénls [Bjemplos ‘UPDATE City SET Population: 100000 WHERE NameToanBross', UPDATE City SET Population=S000000 WHERE Popultion™ 1000000; specifica ia tabla de 1s cual ae seleccfonan Tox regtstror + crausula siene ‘Details 135 condictones que han de reunir los registros resultantes + ciausula tour: Separe los registros selecctorados en grupos especificos + ctausula eave: aaresa la condicién que debe cunplir caéa grupo + ciausula moeR 8: ‘Ordena Tos registros seleccionados de acuerdo # una ordenacién especitica + ctausula Umer estringe 1 ndnero de resultados deweltor ip ecactcoladalmodtooktoliprinuindex php2ide95 nos Gila Admirtstacén de Bases de Datos en MYSQL. 6 Administracién de Tablas y Bases de Datos * crear una nueva base de datos: * Bora toda una base de datos: ho DATABASE base_ datos; * Ver las bases de datos del sistema stom oArApastss * Seleceionar una base de dates para trabajar com ell: USE base_eatons + Crear una nueva abla Sintaxis completa en htpdev mysql com/doctefnan'S Hen ereate-table hm Bora toda una abla + Cambiar la definicibn de una ta Sintaxs completa en htp/dev mvsel.com/doetefinanS, Tenaltertable ml Ver las tablas de na base de datos: * Ver la descripcion de ls campos de una DescRrBe tabla; * Bloguea una abla y sélo deja leer quien la blogueoy al resto de usuarios: Lock TABLES abla 8540; * Bloguea una tabla y s6lo deja ler y escribir a quien la bloguec: Lock TABLES table WRITES * Desbloguet las tabla: + Bjecuta un fchero de sentencias SOL: SOURCE Fichere_S@li * Marea el inicio y fin de una tansacein,y hace Tos cambios permanentes; BEGIN (nonbre): cencr (nonbre}; + Marca el inicio fin de una tansacein, pero al final deshace Tos cambios: Econ (nonbre): foieaace [rowire); + Muestta variables del servidor: * Bjempio: CREATE TABLE alunnos ( on tne(8) ROT Mote, Nonore char(35) aefSult **, Note tnt(2), Dass KEY (ONE))s DESCRIBE abutos: ALTER TABLE slunnos MODIFY Wot 2086(2,5); ho? TABLE aluRnoss DROP DATABASE es worieamt Isaleanp ov root op --vabe/tno world Imsalainp ou root op ~vall-aatabases > backup. sal Iysalaunp ou root cp --a9t world | aysal nyse world - oot =p -e "SHOM TABLE STATUS LIKE ‘eity'™ ip ecactcoladalmodtooktoliprinuindex php2ide95 wen snzois Guia Admini de Bases do Dats en MYSQL 9 Importar y Exportar Datos + £1 méiodo estindar pra importr y expat ficilmente bases de datos es mediante fcheros de texto, dande cada fichero comesponde a una tabla de la base de datos, ead ila del fchero es un regsto, y los valores de los eampos se separa por tabuladores u otras marcas * Podemos importar mediante a sentencia LOAD DATA [LOCAL] INFILE' (la palabra LOCAL se utiliza euands el fchero a importa esti en el ‘ordenador del cliente, y no se utiliza cuando el fichero esti en el servidr) LORD OATA LOCAL INFILE ‘eudacos. txt" INTO TABLE Citys Lo OATA LOCAL INFILE ‘cSudades tt" FIELOS TERNATED BY "ENCLOSED BY LINES TERMINATED BY “\r\n! KGNDRE 1 LINES INTO TABLE citys * También podemos importar con el comando exter mysalimpor sysalingont base de datos fieharottet leheroa.tet * Podemos exportar mediante le sentencia'SELECT .. INTO OUTFILE’ el fichero &exporarquedard en el srvidor: SHLECT + FRam City INTO GUTFILE etude SELECT * FROW city ZTO OUTFILE ‘cludsces. txt" FEELOS TERMINATED BY °," ENCLOSED 8Y °"" LINES TERMINATED BY “\r\n'y * También podemos export redirscionande la sla (el fchoro a exportar quedaré en el cliente: ysl works -u root -p =e “SELECT, FROW City” » cfudages. txt (sal worde “u foot “p “chenl ve, "SELECT * FROW city" > cludades.htal (sal merle “4 fest “p “lanl -e“seLecr * rRaw city" > cludades.xm * Lectura para profundizar: tn /ddev mesa). con /doc/netnan/5.f/en/load- data. ‘MEI /ddev musa condo (retaan/ Sen /aveniangact, bea) Http //dev_avaghcon/ doc oefaat/S8/en/selects ato. hind ip ecactcoladalmodtooktoliprinuindex php2ide95 1922 ‘wri Chia Adminsaion de Bases de Dates en MYSOL 10 Integridad y Reparacién de Tablas + lseci yborradomasivo de datos + blog dl sistema ofall del iso ~ abla nde eomupto SELECT * FROM City; ERROR 1016: No puedo abrir archivo: ‘City MYD’. (Error: 148) system perror 145 MySQL enor code 145: Table was matked as crashed and should ‘be repaired Si tenemos copia de seguridad podemos restauraray reeupear la abl, Si no tenemos copa tendremos que reparar la abl, proceso en el cual Se suelen perder ls registrosdefectuosos. * Consulta reparacin dela integrided mediante sentencias SOL: CK TABLE City PxTENDED; Repaan raLe citys, * Consulta y eparacin con la utilidad myisamchk’ esta uid ce para tablas’MyISAM accede a los fichero det necesita parar el servidor. Ejemplos: directamente, y por lo tanto sudo /ete/inte.c/mysal stop sylsancne =veneck Yvan) sb yseh!*/* ot ‘yisenche recover fvar/biysel/woria/* AVE fyisanche “osare-recover _/var/lib/mysal/worda/city. m0 “rendbutfer sizecih write. buffer slaesiM Seilent so forea sofast “vupdatecstate /var/1ib/aysqi/worle/* MVE sudo /ete/inie-a/mysal stare * Consulta y eparaci6n con la utlidad mysqlcheck’ este uildad es para ablas‘MyISAM, InnoDB y 'BDB!, se conecta como client al servidor y le ‘envia sentencias SOL, y por lo tanto nose debe parar el servidor. Pjemplos: ysalcheck -u root -p Iyaticheck ou root -p sysaieheck “u Peat “p check wonke city Fepair works city ‘force. world €1ty * Reparar tablas InnoDB: si se ha producido una cad del servider, con reiniiaro hay suficients. InnoDB rosonocsré que no se apagé correctamente © injciaré una reeuperacin automisca. An asl, podemos detecar erores mediante la senteneia ‘CHECK TABLE" o mediante la ulidad 'mysalcheck. Pero para rparat una abla InnoDB no se puede utilizar la sentncia REPAIR TABLE" o la wlidad 'mysqleheck’ Fl nico método es exportar Ie abla ‘consid, despuds borrar Ia abla defectuosa, y por time importarla de nuevo. * Lecturas para profindizar eto: //dev ave con /dot /refaat/S,6/en/check table, i: Hidoe.nysah con /doc/netnga/S, 2eniresaicatable bial et: / de avsq)con/doc/refnan/S,6/en/ayisancht Mn /Jdev nso), con /doc/netnan/ 5, tlen/mysaichect btn) ip ecactcoladalmodtooktoliprinuindex php2ide95 622 ‘wri Chia Adminsaion de Bases de Dates en MYSOL 11 Anilisis y Optimizacién de Tablas ‘Tres métodos para optimiza el rendimieto del sistema ‘Mejrarl estructura de as tabla. 1 2. Mejrar ls consulta (pero depende de cada aplicaién), 3. Mejrarla configuacisn del servidor MySQL. * Las tablasdesordenadas provocan bisqueda secuencial Leta, Pero una tabla ordenada tambia tiene su coste: 1. Ordenar una tabla desordenada es costoso. 2. Constante acceso de eserituredesordena de nuevo los estos de la table 53. Lainsercigny eliminacién ordenada de registos es costes. {4 Cuando ordenamos por una columa desordenamos el resto de columnas * Creando indices conseguiremos consultas mucho mis répidas: 1. Es menos costoso de insertar. modifica y climinar en un indice que hacerlo en toda una tabla ordenada 2, Puedo tener varios indices de una tabla, lo que permite ordenar abla por varios criterios als ve 5, Los indices ocupan espatio en disco y memoria, ls operaciones de insereidn, moifieaciin y borado serén un poco mis Tentas (habré gue actalizar indices), por lo que no debemos index todas las colummas, sino so as mas usadas en bisque, ‘Cuanto més peqacio es el indice mis rpidas ern las operaciones, * Algunassentencas se ejecutan mucho mis efiientemente si hay indices: SELECT * FROW A,B,C WHERE Aa = 8.6 00 8, Sin indices > producto catesiano + fltrado = Con indices > A + (filtro A.8~ Bb) + (ited Bb ~ Ce) * Crear una nueva abla con indices RERTE TABLE nonbre_tabla (deFinetSn, INDEX nonbre Indice (eampa(loreltud)), --)5 Fjemplo: CREATE, TABLE “Atanas” ( OMI” int (8) HOT MULL, Monbre”enar(38) NOT MULL, nets" an) NOT MULL, panty KEY CONE }y snoexC wonbre’) )s * Crear un indice en una tabla ya existente (dos maneras) ‘CREATE {UNZQUE]_:NOEX nonbre_sndice OW nonore tabla (ronbre_columma(longstus), ALTER TABLE Ponbre, table AOD INDEX nombre Indice (nonore cola Longitad), Ejemplo:, ‘CREATE INDEX indice ON Alunnos (Nonbre(30))3 ALTER TARLE alunos R00 TABEX (Nonbre(I8)); ‘+ Borrar un indice en una tabla ya existente (dos maneras: ROP IIOEK rendre Indice OM ponbre tabla; jemplo: ono TOEK Ledice OW ALuMos; + Las consltas por columnas que pusden contener valores NULL. son més lenas + El rendimiento mejora silos epstros de la tab tiene una longitud fia entonces cada registro (ines) sicnen longitu fj (sin campos de ipo VARCHAR, TEXT o BLOB). Si cada campo (columns) bign tended un Foglia fi 1. Dismsinuye la fapmentacin: os repstos bartados son substitudos por reistos dela misma longitud 2, Aumont fa Velocidad los repisttos son secedidos por "mero de rgisro" en higar de "desplazarnento dento del fichero", 5, Disminuye el consumo de memoria: el indice es mis peat, pe cactcoladalmedbookolprinuindex php2ide95 m2 swinots (Guia Admirist-acién de Bases de Datos en MYSQL tablas para ganer espacio y velocidad: * Tambign se puede desragment opriwaze TABLE tablas * Lectuas para profundizar: pe cectcoladalmexbooktoalprinkindex chpid=96 wea swinots (Guia Admirist-acién de Bases de Datos en MYSQL 12 Anilisis y Optimizacién del Servidor MYSQL «en proceso de documentacion pe cectcoladalmexbooktoalprinkindex chpid=96 1922 swinots (Guia Admirist-acién de Bases de Datos en MYSQL 13 Conectando Aplicaciones con Bases de Datos Ea proceso de documentacién pe cectcoladalmexbooktoalprinkindex chpid=96 ae ‘0s Chia Aminstaion de Bases de Datos en MYSQL 14 Replicacién y Distribucién de Carga En proceso de documentacén pe cectcoladalmexbooktoalprinkindex chpid=96 2 swinots (Guia Admirist-acién de Bases de Datos en MYSQL 15 Cluster de Servidores MYSQL En Proceso de Documentaciin pe cectcoladalmexbooktoalprinkindex chpid=96

También podría gustarte