Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Noviembre 2005
Jordi Llonch
jordi@laigu.net
http://creativecommons.org/licenses/by-sa/2.0/
Administracin de MySQL
2
ndice
Conceptos de MyS!
"nstalaci#n
Con$ig%raci#n
&ipos de campos
"ntrod%cci#n a la administraci#n
Monitor 'aplicacin cliente(
)ermisos
&%ning
Monitora*e 'mytop(
Che+%ear y reparar tablas
,ac-%p
.eplicar
phpMy/dmin
Administracin de MySQL
3
MyS! es %n motor de base de datos S! con las sig%ientes
caracter0sticas:
M%y r1pido.
M%lti-thread.
M%lti%s%ario.
2isponemos de dos tipos de lic3ncia:
4pen So%rce/So$t5are libre '6N7 6eneral )%blic !icense(.
Standard commercial license.
Conceptos de MyS!
Administracin de MySQL
4
Conceptos de MyS!: Motores y tipos de tablas
"S/M
8s el motor original. 8n deprecated a partir de la versi#n 9.:.
My"S/M
.eempla;o de "S/M.
&ipo de tabla por de$ecto.
No soporta transacciones.
<8/)
&ablas en memoria.
/ct%almente se conoce como M8M4.=.
No soporta transacciones.
M8.68
)ermite +%e %na colecci#n de tablas My"S/M sean tratadas como
%na >nica tabla.
No soporta transacciones.
Administracin de MySQL
5
Conceptos de MyS!: Motores y tipos de tablas
,2, ',er-eley 2,(
Soporta transacciones.
No $%nciona en todas las plata$ormas.
"nno2,
Soporta transacciones '/C"2 compliant(.
,lo+%eo a nivel de $ila 'incrementa la capacidad de conc%rrencia y
rendimiento(.
Se p%ede me;clar "nno2, con otros tipos de tablas en la misma
bbdd.
N2, Cl%ster
Soporta tablas +%e se enc%entran particionadas en di$erentes
ordenadores.
Administracin de MySQL
6
"nstalaci#n
S%pondremos %n sistema ?edora Core @:
"nstalaremos los sig%ientes pa+%etes:
rpm -i mysql-3.23.58-13.i386.rpm
/ype 0help*0 or 0+h0 1or help. /ype 0+c0 to clear the 2!11er.
mysql
)ara desconectar:
mysql '34/
5ye
8n !in%A/7niA... podemos %sar C&.!L2
Administracin de MySQL
24
)ermisos
Sec%ri;ando %na n%eva instalaci#n.
.ec%perar root perdido.
6esti#n de c%entas de %s%ario.
Administracin de MySQL
25
)ermisos: Sec%ri;ando %na n%eva instalaci#n
!a instalaci#n de MyS! crea dos bases de datos:
mysql: contiene las tablas de permisos.
test: para %so de pr%ebas.
8n la primera instalaci#n los permisos en la bbdd mys/l estan de
$orma +%e permiten la coneAi#n sin pass5ord.
Si se act%ali;a la versi#n de MyS! no es necesario la
resec%ri;aci#n.
Administracin de MySQL
26
)ermisos: Sec%ri;ando %na n%eva instalaci#n
Heamos %n e*emplo de c#mo sec%ri;ar el servidor cobra.sna-e.net:
"nicialmente eAisten dos tipos de c%entas:
C%enta +%e tiene root como %s%ario. C%enta de s%per%s%ario para
administraci#n. 2ispone de todos los privilegios.
C%enta +%e no tiene asociado ning>n %s%ario. C%enta Qanonymo%sQK
>til para test por+%3 permite la coneAi#n sin tener %na c%enta
eApl0cita. &iene m%y pocos privilegios.
Ning%na de estas c%entas tiene asociado pass5ord. Se espera +%e
el administrador los proporcione.
&abla !ser de la bbdd mys+l:
Administracin de MySQL
27
)ermisos: Sec%ri;ando %na n%eva instalaci#n
8stas entradas permiten las sig%ientes coneAiones:
6 mysql -h localhost -! root
6 mysql -h co2ra.sna7e.net -! root
8ntradas an#nimas:
6 mysql -h localhost
6 mysql -h co2ra.sna7e.net
%:KJ);FF")/4;F&J9"<JC;3< 1.
%:KJ'3"<4"&J9"<JC;3< 2..
%:KJ39=:/"&J9"<JC;3< 5.*
?!7S< 7S8.P.8S47.C8S o ?!7S< )."H"!868S resetan los
valores contados a 0.
Administracin de MySQL
42
)ermisos: 6esti#n de c%entas de %s%ario
.evocar privilegios y eliminar %s%arios
6 mysql -! root
mysql 3&" mysql*
O LeyJreadJreq!ests O 6.2843 O
O LeyJreads O 151 O
O LeyJwriteJreq!ests O 1PP3 O
O LeyJwrites O 8.5 O
table_cache
N>mero de tablas abiertas para todos los threads.
7sando S<4S S&/&7SK mirar openPtables. Si el n>mero es
grande se deber1 incrementar tablePcache.
Administracin de MySQL
51
&%ning
C#mo %sar el comando 4)&"M"D8 &/,!8:
Se %sa para optimi;ar la estr%ct%ra de la tabla 'no tiene nada +%e ver
con el b%en diseEo de tablas(.
.eclama el espacio no %sado desp%3s del borrado o modi$icaci#n de
estr%ct%ra.
Se debe tener en c%enta +%e d%rante el proceso se blo+%ea la tabla.
mysql optimiGe ta2le ,roceryJinventory*
N--------------------------N----------N----------N----------N
O /a2le O ;p O %s,Jtype O %s,JteHt O
N--------------------------N----------N----------N----------N
O test=5.,roceryJinventory O optimiGe O stat!s O ;L O
N--------------------------N----------N----------N----------N
1 row in set A...8 secB
mysql optimiGe ta2le ,roceryJinventory*
N-------------------------N----------N----------N-----------------------------N
O /a2le O ;p O %s,Jtype O %s,JteHt O
N-------------------------N----------N----------N-----------------------------N
O test=5.,roceryJinventoryO optimiGe O stat!s O /a2le is already !p to date O
N-------------------------N----------N----------N-----------------------------N
1 row in set A...3 secB
Administracin de MySQL
52
&%ning
C#mo %sar el comando 8M)!/"N:
4ptimi;aci#n de cons%ltas.
7so correcto de los 0ndices.
8specialmente >til para anali;ar cons%ltas comple*as +%e implican
I<-7s.
!a salida del comando contiene las sig%ientes col%mnas:
ta!le: nombre de tabla
type: tipo de %nion '*oin(
possi!le_.eys: indica +%e 0ndices podr0an %sarse para encontrar los
registros. Si es 70LLK no se podran %sar 0ndices.
.ey: el 0ndice %sado en esta cons%lta. Si es 70LL no se %sa 0ndice.
.ey_len: la longit%d del 0ndice %sado.
ref: col%mnas %sadas con el 0ndice.
rows: n>mero de registros +%e se deben eAaminar para e*ect%ar la
cons%lta.
extra: in$ormaci#n adicional 'using indexC w1ere...(.
Administracin de MySQL
53
&%ning
C#mo %sar el comando 8M)!/"N:
8*emplo:
Administracin de MySQL
56
&%ning
S<4S 2/&/,/S8S B!"T8 somethingC
Administracin de MySQL
57
&%ning
S<4S B4)8NC &/,!8S B?.4M databasePnameC B!"T8 somethingC
M%estra tablas de la base de datos seleccionada.
mysql show ta2les*
N---------------------N
O /a2lesJinJtest=5 O
N---------------------N
O ,roceryJinventory O
O email O
O masterJname O
O my/est O
O test/a2le O
N---------------------N
5 rows in set A...1 secB
myisamch7 t2lJname
8ncontrar1 el JJ.JJR de los errores. No b%sca corr%pci#n en
los datos 'es m%y in%s%al(
myisamch7 -m t2lJname
8ncontrar1 el JJ.JJJR de los errores
myisamch7 -e t2lJname
Che+%eo completo.
M%y lento para tablas grandes.
Administracin de MySQL
70
Che+%ear y reparar tablas
.eparaci#n de %na tabla:
2ebemos parar el servidor MyS! antes de reparar las tablas.
7saremos el comando myisamc1.:
)rimero probaremos myisamch7 -r -q t2lJname '[+%ic-
recovery mode\(
"ntentar1 reparar el archivo 0ndice sin tocar el archivo de
datos.
Si no $%nciona el sig%iente paso ser1:
<acer bac-%p de los archivos de datos.
7sar myisamch7 -r t2lJname '[recovery mode\(.
,orrar1 registros incorrectos y borrados del
archivo de datos y reconstr%ir1 el archivo 0ndice.
8l sig%iente paso en caso +%e no $%ncione el precedente es:
7sar myisamch7 --sa1e-recover t2lJname
M3todo antig%o de rec%peraci#n +%e en alg%nos
casos rec%pera lo +%e el modo normal no
p%ede.
8s m%y lento.
'a>n eAisten m1s pasosK cons%ltar al man%al(
Administracin de MySQL
71
,ac-%p
Se dispone de dos opciones:
Holcar datos 'a nivel de S! o en cs((
Copiando los archivos del directorio de la base de datos.
,ac-%ps de como m0nimo %na tabla.
/ntes de iniciar el proceso se debe blo+%ear la escrit%ra en las tablas
y vaciar las cach3s.
!4CT &/,!8
?!7S< &/,!8S
Administracin de MySQL
72
,ac-%p
,ac-%p volcando datos:
:( CSH 's#lo datos(:
mys+la SELEC !"# ... #$%!LE
&estaurar con: mys+la L<65 56)6 -74-LF Kdata.txtK -7)<
)6;LF d!=.my_ta!le
2( S! 'datos y/o estr%ct%ra(:
shella mys'ldum(
mys+ld%mp BoptionsC dbPname BtablesC
mys+ld%mp BoptionsC --databases 2,: B2,2 2,@...C
mys+ld%mp BoptionsC ball-databases
8A: mys+ld%mp --all-databases a allPdatabases.s+l
&estaurar con: shella mys/l data!ase_name L data!ase.s/l
Administracin de MySQL
73
,ac-%p
,ac-%p de archivos del directorio de base de datos:
S4!4 )/./ !4S &")4S )*!S+) 8 !S+) 'N7NC/ "nno2,(
lo,-2in
lo,-2in @ /var/d2/repl/lo,-
master-host @ master.eHample.com
master-!ser @ repl
master-password @ c.py4/Q
master-port @ 33.6
.eplicar
Administracin de MySQL
80
@. .einiciar el master y veri$icar la creaci#n del log binario:
)aramos y reiniciamos el master.
Heri$icamos +%e se cree el archivo master-2in...1 'el $ormato del
nombre es hostname-2in...1(
&ambi3n podemos %tili;ar la %tilidad mysql2inlo, para ver el
contenido
U mysql2inlo, master-2in...1
R at 4
)ir1mide
Administracin de MySQL
84
phpMy/dmin
<erramienta de administraci#n y desarrollo de MyS! en entorno
5eb.
Administracin de MySQL
85
.ec%rsos
!in-s recomendados:
2oc%mentaci#n o$icial:
http://dev.mys+l.com/doc/
Administracin de MySQL
86
.ec%rsos
,ibliogra$ia recomendada:
)%blisher: 4N.eilly
"S,N: 0-5JI-00@0I-9
)ages: 2J9
)yS/L Cookbook
,y )a%l 2%bois
)%blisher: 4N.eilly
)%b 2ate: 4ctober 2002
"S,N: 0-5JI-00:95-2
)ages: :022