Está en la página 1de 86

Administracin de MySQL

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

Si +%eremos habilitar el soporte de )<) para MyS!:


rpm -i php-mysql-4.3.9-3.i386.rpm

&ambi3n podr0amos instalar los binarios +%e podemos descargar en


la 5eb o$icial 'http://dev.mysql.com/downloads/(.
Administracin de MySQL
7
8ste doc%mento eAplica alg%nas directivas de con$ig%raci#n de
MyS!.
/rchivo de con$ig%raci#n:
my.cnf (plataforma Linux)
my.ini (plataforma Windows)
Con$ig%raci#n
Administracin de MySQL
8
[client]
password = my_password
contrasea general de acceso para los clientes (es aconsea!le
usar el sistema de autentificacin de "y#$L)
port = %%&'
puerto dnde se conectaran los clientes (acceso (ia )*+,-+)
soc.et = ,(ar,run,mys/ld,mys/ld.soc.
acceso mediante soc.ets 0nix (local1ost)
Con$ig%raci#n
Administracin de MySQL
9
[safe_mys/ld]
err2log = ,(ar,log,mys/l,mys/l.err
arc1i(o dnde se registrar3n los errores del ser(idor
[mys/ld]
user = mys/l
usuario !ao el cual se eecuta el ser(idor
pid2file = ,(ar,run,mys/ld,mys/ld.pid
4ic1ero en el /ue el ser(idor guarda el -5 del proceso demonio de
escuc1a (daemon).
soc.et = ,(ar,run,mys/ld,mys/ld.soc.
4ic1ero en el /ue el ser(idor crea el soc.et
port = %%&'
+uerto desde donde se aceptaran conexiones
Con$ig%raci#n
Administracin de MySQL
10
[mys/ld]
log = ,(ar,log,mys/l.log
6rc1i(o donde se registra el log
!asedir = ,usr
5irectorio donde se encuentra "y#$L.
datadir = ,(ar,li!,mys/l
5irectorio donde est3n los datos
tmpdir = ,tmp
5irectorio temporal (para crear pe. ta!las temporales)
language = ,usr,s1are,mys/l,englis1
6rc1i(o de mensaes
s.ip2loc.ing
7o usar sistema de !lo/ueo (para 1acer c1e/ueos se tendr3 /ue
parar el ser(idor)
s.ip2networ.ing
7o escuc1a conexiones )*+,-+.
Con$ig%raci#n
Administracin de MySQL
11
[mys/l.ser(er]
.ey_!uffer=8'"
tamao de !uffer de los 9ndices
max_allowed_pac.et=8"
tamao m3ximo de un pa/uete. #e tendr3 /ue incrementar si se
/uiere utili:ar columnas ;L<; grandes.
t1read_stac.=8=>?
tamao de cada 1ilo
max_connections='@&
nAmero m3ximo de conexiones simult3neas
Con$ig%raci#n
Administracin de MySQL
12
[mys/l.ser(er]
wait_timeout=B'&&
segundos /ue el ser(idor esperar3 acti(idad en conexiones no
interacti(as antes de cerrar
connect_timeout=8&
segundos /ue el ser(idor esperar3 un pa/uete de conexin antes
de responder con ,ad handsha-e.
max_connect_errors=8&
si 1ay m3s de este nAmero de conexiones interrumpidas por el
ser(idorC el ser(idor es !lo/ueado
log2slow2/ueries = ,(ar,log,mys/l,mys/l2slow.log
registra las consultas lentas
s.ip2innod!
no utili:a !ases de datos tipo innod!
Con$ig%raci#n
Administracin de MySQL
13
&ipos de campos
&ipos n%m3ricos:
&"N="N&B'M(C B7NS"6N82C BD8.4?"!!C
8ntero m%y pe+%eEo '-:2F a :2G con signo / 0 a 255 sin signo(.
,"&/,44!/,44!8/N
Sin#nimo de &"N="N&':(.
/Eadido en MyS! 9.:.0.
Cero es $also. Halores no ;ero son considerados verdaderos.
SM/!!"N&B'M(C B7NS"6N82C BD8.4?"!!C
8ntero pe+%eEo '-@2GIF a @2GIG con signo / 0 a I55@5 sin signo(.
M82"7M"N&B'M(C B7NS"6N82C BD8.4?"!!C
8ntero medio '-F@FFI0F a F@FFI0G con signo / 0 a :IGGG2:5 sin
signo(.
"N&B'M(C B7NS"6N82C BD8.4?"!!C
8ntero '-2:9G9F@I9F a 2:9G9F@I9G con signo / 0 to 92J9JIG2J5
sin signo(.
"N&868.B'M(C B7NS"6N82C BD8.4?"!!C
Sin#nimo de "N&.
Administracin de MySQL
14
&ipos de campos
&ipos n%m3ricos:
,"6"N&B'M(C B7NS"6N82C BD8.4?"!!C
8ntero grande '-J22@@G20@IF59GG5F0F a J22@@G20@IF59GG5F0G
con signo / 0 to :F99IG990G@G0J55:I:5 sin signo(
?!4/&B'MK2(C B7NS"6N82C BD8.4?"!!C
N>mero coma $lotante pe+%eEo.
-@.902F2@9II8L@F a -:.:G59J9@5:8-@FK 0K y :.:G59J9@5:8-@F a
@.902F2@9II8L@F
247,!8B'MK2(C B7NS"6N82C BD8.4?"!!C
N>mero coma $lotante normal.
-:.GJGIJ@:@9FI2@:5G8L@0F a -2.2250G@F5F50G20:98-@0FK 0K y
2.2250G@F5F50G20:98-@0F a :.GJGIJ@:@9FI2@:5G8L@0F
247,!8 ).8C"S"4NB'MK2(C B7NS"6N82C BD8.4?"!!C
.8/!B'MK2(C B7NS"6N82C BD8.4?"!!C
Sin#nimos de 247,!8.
Administracin de MySQL
15
&ipos de campos
&ipos n%m3ricos:
28C"M/!B'MBK2C(C B7NS"6N82C BD8.4?"!!C
N>mero con decimal $i*o.
Se comporta com %n C</..
M es el total de d0gitos y 2 es el n>mero de decimales.
28CB'MBK2C(C B7NS"6N82C BD8.4?"!!C
N7M8."CB'MBK2C(C B7NS"6N82C BD8.4?"!!C
?"M82B'MBK2C(C B7NS"6N82C BD8.4?"!!C
Sin#nimos de 28C"M/!
Administracin de MySQL
16
&ipos de campos
&ipos $echa y hora:
2/&8
?echa. .ango de N:000-0:-0:N a NJJJJ-:2-@:N.
?ormato: N====-MM-22N.
2/&8&"M8
Combinaci#n de $echa y hora. .ango de N:000-0:-0: 00:00:00N a
NJJJJ-:2-@: 2@:5J:5JN.
?ormato: N====-MM-22 <<:MM:SSN.
&"M8S&/M)B'M(C
.ango de N:JG0-0:-0: 00:00:00N a aproAimadamente el aEo 20@G.
&"M8
&iempo. .ango de N-F@F:5J:5JN a NF@F:5J:5JN.
?ormato: N<<:MM:SSN.
=8/.B'2O9(C
/Eo en 2 d0gitos o 9 d0gitos. .ango de :J0: to 2:55K and 0000 para
9 d0gitos y de G0 a IJ 'de :JG0 a 20IJ( para 2 d0gitos.
Administracin de MySQL
17
&ipos de campos
&ipos string:
BN/&"4N/!C C</.'M( B,"N/.= O /SC"" O 7N"C428C
Cadena de car1cteres de longit%d $i*a.
M de 0 a 255.
C</.
Sin#nimo de C</.':(.
BN/&"4N/!C H/.C</.'M( B,"N/.=C
Cadena de car1cteres de longit%d variable.
M de 0 a 255.
&"N=,!4,/&"N=&8M&
7na col%mna ,!4, o &8M& de como m1Aimo 255 car1cteres.
,!4,/&8M&
7na col%mna ,!4, o &8M& de como m1Aimo I5K5@5 car1cteres.
M82"7M,!4,/M82"7M&8M&
7na col%mna ,!4, o &8M& de como m1Aimo :IKGGGK2:5
car1cteres.
Administracin de MySQL
18
&ipos de campos
&ipos string:
!4N6,!4,/!4N6&8M&
7na col%mna ,!4, o &8M& de como m1Aimo 9K2J9KJIGK2J5
car1cteres.
8N7M'Nval%e:NKNval%e2NK...(
8n%meraci#n.
Cadena de car1cteres +%e s#lo p%ede tener %n valor dado en la
lista.
S8&'Nval%e:NKNval%e2NK...(
!ista +%e p%ede tener valor cero o m1s valores. 2eben estar en la
lista y como m1Aimo p%eden haber I9 miembros.
Administracin de MySQL
19
"ntrod%cci#n a la administraci#n
8l sistema de base de datos MyS! est1 $ormado por diversos
componentes:
8l servidor MyS!:
mys/ld: es el demonio principalK reali;a todas las manip%laciones de
bbdd y tablas.
mys/ld_safe: %sado para iniciar el servidorK monitori;ar y reiniciar en
caso de parada 'antes de MyS! 9K sa$ePmys+ld(.
mys/ld_multi: si se e*ec%tan m>ltiples servidores en el mismo host.
8l cliente MyS! y %tilidades:
mys/l: cliente interactivo +%e permite enviar instr%cciones S!
mys/ladmin: programa de administraci#n
mys/lc1ec.K myisamc1.: %tilidades de an1lisisK optimi;aci#n y
reparaci#n de tablas.
mys/ldumpK mys/l1otcopy: herramientas de bac-%p o copia de base de
datos a otros servidores.

'/%n+%e m%chas operaciones se podr1n reali;ar con la %tilidad


mys/ladmin o alg%na otra aplicaci#n de administraci#n es pre$erible
conocer el leng%a*e S!(
Administracin de MySQL
20
"ntrod%cci#n a la administraci#n
8l directorio de datos de MyS!:
8s el directorio d#nde se almacenan las bases de datos y archivos.
8s importante conocer:
2#nde estan sit%ados los archivos +%e representan las bbdd.
/rchivos de log.
8vitar +%e el sistema de archivos est3 demasiado lleno.
Administracin de MySQL
21
"ntrod%cci#n a la administraci#n
/dministraci#n 6eneral:
"niciar y parar el servidor.
Se debe conocer c#mo iniciar y parar el servidor man%almente.
%3 hacer si no se inicia correctamente o se para inesperadamente.
Mantenimiento de las c%entas de %s%ario.
Se debe entender la di$erencia entre las c%entas 7N"M y las MyS!.
C#mo crear y mantener c%entas de %s%ario.
2e +%e $orma se deben conectar los n%evos %s%arios al servidor.
C#mo resetear %n pass5ord perdido.
Mantenimiento del archivo de log.
Se deben entender los tipos de archivos de log +%e genera MyS!.
.otar y eApirar los archivos de log para prevenir +%e se llene el sistema
de archivos.
,ac-%p y copia de base de datos.
!a copia de seg%ridad es %na tarea cr%cial.
Se debe saber como resta%rar %na bbdd.
Administracin de MySQL
22
"ntrod%cci#n a la administraci#n
/dministraci#n 6eneral:
.eplicaci#n de base de datos.
<acer %n bac-%p o copia de %na bbdd re+%iere tiempo. 7na opci#n es
%sar replicaci#n.
Con$ig%raci#n y t%ning del servidor.
Se deben conocer +%e par1metros de la con$ig%raci#n permiten a*%star
el rendimiento del servidor.
!a locali;aci#n '*%ego de car1cteres( y la ;ona horaria tambi3n debe
estar bien con$ig%rada.
Servidores m>ltiples.
8n ocasiones p%ede res%ltar >til con$ig%rar servidores sim%lt1neos en
el mismo host.
/ct%ali;aciones.
!as n%evas releases aparecen $rec%entemente.
Se debe estar al dia de los b%gsK ag%*eros de seg%ridad y n%evas
caracter0sticas.
Administracin de MySQL
23
Monitor 'aplicacin cliente(
/plicaci#n cliente +%e nos conecta al servidor.
Se le s%ele proporcionar: %s%arioK pass5ord y servidor.

shell mysql -h host -! !ser -p


"nter password: ########

$elcome to the %y&'( monitor. )ommands end with * or +,.


-o!r %y&'( connection id is 25338 to server version: 4...14-lo,

/ype 0help*0 or 0+h0 1or help. /ype 0+c0 to clear the 2!11er.

mysql

/hora podemos introd%cir comandos S! en el cliente.

)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

!os %s%arios an#nimos no tienen privilegios de administrador. )ero


en la tabla d!K se especi$ica +%e p%eden %sar la bbdd test o
c%al+%ier bbdd +%e tenga %n nombre +%e comience por test.

7ota: 8l s0mbolo R en host permite la coneAi#n desde c%al+%ier


remoto.
Administracin de MySQL
28
)ermisos: Sec%ri;ando %na n%eva instalaci#n
8stablecer pass5ords para las c%entas iniciales:
Seg>n el m3todo %sado se tendr1 +%e pedir a MyS! +%e v%elva a
leer las tablas de permisos.
:( mys+ladmin
6 mysqladmin -h localhost -! root password
8rootpass8
6 mysqladmin -h co2ra.sna7e.net -! root
password 8rootpass8
2( S8& )/SSS4.2
6 mysql -! root
mysql &"/ 9:&&$;<= >;< 0root0?0localhost0 @
9:&&$;<=A0rootpass0B*
mysql &"/ 9:&&$;<= >;<
0root0?0co2ra.sna7e.net0 @
9:&&$;<=A0rootpass0B*
@( Modi$icar directamente las tablas
6 mysql -! root
mysql 3&" mysql*
mysql 39=:/" !ser &"/
9assword@9:&&$;<=A0rootpass0B $C"<"
3ser@0root0*
mysql >(3&C 9<4D4("E"&*
Administracin de MySQL
29
)ermisos: Sec%ri;ando %na n%eva instalaci#n
2esp%3s de establecer el pass5ord deberemos conectarnos %sando:
6 mysql -p -! root
"nter password: rootpass
mysql

Si +%eremos eliminar el acceso an#nimo:


6 mysql -p -! root
"nter password: rootpass
mysql 3&" mysql*
mysql ="("/" ><;% !ser $C"<" 3ser @ 00*
mysql ="("/" ><;% d2 $C"<" 3ser @ 00*
mysql >(3&C 9<4D4("E"&*

4tra $orma de permitir el acceso an#nimo ser0a con pass5ord:


mysql &"/ 9:&&$;<= >;< 00?0localhost0 @ 9:&&$;<=A0anonpass0B*
Administracin de MySQL
30
)ermisos: .ec%perar root perdido
)asos a seg%ir:
:( )arar el servidor MyS!
/etc/init.d/mysql stop
Si no $%nciona %sar: 7ill -/"<% PID 'primero matar mys/ld_safe
y l%ego el resto(
Si tampoco $%nciona %sar: 7ill -9 PID
2( .einiciar el servidor con la opci#n s.ip2grant2ta!les
Modi$icar my.cnf y aEadir s.ip2grant2ta!les 'secci#n [mys/ld](
.einiciar.
@( 8ntrar en el monitor y e*ec%tar >(3&C 9<4D4("E"&
9( Modi$icar los privilegios seg>n nos convenga con 6./N& o S8&
)/SSS4.2.
5( No olvidar volver a de*ar my.cnf como estaba.
Administracin de MySQL
31
)ermisos: 6esti#n de c%entas de %s%ario
8l administrador establecer1 los %s%arios +%e se p%eden conectar a
MyS! y con +%3 privilegios.
2isponemos de dos comandos para ello:
6./N&: crea %n c%enta MyS! y especi$ica privilegios.
.8H4T8: borra privilegios de %na c%enta eAistente.
&ambi3n eAiste la posibilidad de:
Modi$icar directamente las tablas de permisos.
7sar los scripts mys/laccess y mys/l_setpermission.
Administracin de MySQL
32
)ermisos: 6esti#n de c%entas de %s%ario
6./N& y .8H4T8 a$ectan c%atro tablas:
user: %s%arios +%e p%eden conectarse al servidor y s%s privilegios
globales.
d!: privilegios a nivel de bbdd.
ta!les_pri(: privilegios a nivel de tabla.
columns_pri(: privilegios a nivell de col%mna.
8Aiste %na +%ina tabla '1ost( pero no est1 a$ectada por los comandos
DE67) o EFG<?F.
Administracin de MySQL
33
)ermisos: 6esti#n de c%entas de %s%ario
Crear %n n%evo %s%ario y establecer privilegios:
E<:F/ privile,es Acol!mnsB
;F what
/; acco!nt 4="F/4>4"= 5- 0password0
$4/C ,rant
<"'34<" encryption req!irements*
pri(ileges: privilegios +%e se le asignaran a la c%enta 'S8!8C&K
S<7&24SNK /!! )."H"!868S...(
columns: 'opcional( S8!8C&K "NS8.& y 7)2/&8.
w1at: nivel al +%e seran aplicados los privilegios. / nivel de bbddK
tabla o col%mna '4N dbPname.UK 4N U.U(
account: %s%ario y host 'N%serPnameNVNhostPnameN(. Se p%eden %sar
wildcards: %serPnameVN:99.:55.:II.RN
password: 'opcional( contraseEa de la c%enta.
W-)H: 'opcional( permite dar permisos a otros %s%arios.
EF$0-EF: 'opcionalK MyS! 9.0.0( establece +%e la coneAi#n debe
estar sec%ri;ada por SS!.
Administracin de MySQL
34
)ermisos: 6esti#n de c%entas de %s%ario
!a $orma mas sen;illa de con$ig%rar %na c%enta es hacerse las
sig%ientes preg%ntas:
W%i3n se p%ede conectar y desde d#ndeX
W%3 tipo de acceso deber0a tener la c%entaX
WSe re+%iere +%e la coneAi#n sea seg%raX
W2eber0a poder administrar privilegiosX
W2eber0an limitarse el cons%mo de rec%rsosX
Administracin de MySQL
35
)ermisos: 6esti#n de c%entas de %s%ario
W%i3n se p%ede conectar y desde d#ndeX
!imitar a %n s#lo host:
E<:F/ :(( ;F sampd2.# /; 02oris0?0localhost0 4="F/4>4"=
5- 0r!2y0*

E<:F/ :(( ;F sampd2.# /; 01red0?0ares.mars.net0


4="F/4>4"= 5- 0q!artG0*
)ermitir coneAiones desde todas partes:

E<:F/ :(( ;F sampd2.# /; 0maH0?060 4="F/4>4"= 5-


0diamond0*
)ermitir coneAiones desde ciertas redes:
E<:F/ :(( ;F sampd2.# /; 0mary0?06.sna7e.net0 4="F/4>4"=
5- 0topaG0*
E<:F/ :(( ;F sampd2.# /; 0Ioe0?0192.168.128.30 4="F/4>4"=
5- 0water0*

E<:F/ :(( ;F sampd2.# /; 0ardis0?0192.168.128.60


4="F/4>4"= 5- 0snow0*

E<:F/ :(( ;F sampd2.# /;


0reH0?0192.168.128../255.255.128..0 4="F/4>4"= 5-
0ice0*
Administracin de MySQL
36
)ermisos: 6esti#n de c%entas de %s%ario
W%3 tipo de acceso deber0a tener la c%entaX
<ay diversos tipos de privilegios:
C.8/&8 &8M)4./.= &/,!8S: Crear tablas temporales.
8M8C7&8: 8*ec%tar procedimientos almacenados 'MyS! 5.0.0(
?"!8: !eer y escribir archivos en el servidor.
6./N& 4)&"4N: 2ar los privilegios a otras c%entas.
!4CT &/,!8S: ,lo+%ear tablas.
).4C8SS: Her in$ormaci#n sobre la e*ec%ci#n de threads en el
servidor.
.8!4/2: .ecargar la tabla de privilegios o $l%sh de logs y cach3s.
.8)!"C/&"4N C!"8N&: )reg%ntar sobre locali;aci#n de servidor
master y slave.
.8)!"C/&"4N S!/H8: /ct%ar como %na r3plica de servidor slave.
S<4S 2/&/,/S8S: Mostrar bbdd.
S<7&24SN: )arar el servidor.
S7)8.: Matar threads y otras operaciones de s%pervisor.
/!&8.: Modi$icar tablas e 0ndices.
Administracin de MySQL
37
)ermisos: 6esti#n de c%entas de %s%ario
W%3 tipo de acceso deber0a tener la c%entaX
<ay diversos tipos de privilegios:
C.8/&8: Crear bbdd y tablas.
28!8&8: ,orrar registros de %na tabla.
2.4): 8liminar bbdd y tablas.
"N28M: Crear o eliminar 0ndices.
"NS8.&: "nsertar n%evos registros en tablas.
.8?8.8NC8S: 'reservado para $%t%ras versiones(.
S8!8C&: Cons%ltar registros en tablas.
7)2/&8: Modi$icar registros de tablas.
/!!: &odas las operaciones 'eAcepto 6./N&(Y sin#nimo de /!!
)."H"!868S.
7S/68: )rivilegio especial Qno privilegiosQ.
Administracin de MySQL
38
)ermisos: 6esti#n de c%entas de %s%ario
W%3 tipo de acceso deber0a tener la c%entaX
Se p%eden establecer privilegios a di$erentes niveles.
Se %sa la cl1%s%la 4N:
;F #.# privilegios globalesK todas las bbddK todas las tablas.
;F # privilegios globales si no se ha seleccionado bbdd sin#
privilegios en la bbdd act%al.
;F d2Jname.# privilegios a nivel de bbddY todas las tabals de la
bbdd.
;F d2Jname.t2lJname privilegios a nivell de tablaY todas las
col%mnas en la tabla.
;F t2lJname privilegios a nivell de tablaY todas las col%mnas en
la tabla por de$ecto.
Administracin de MySQL
39
)ermisos: 6esti#n de c%entas de %s%ario
WSe re+%iere +%e la coneAi#n sea seg%raX
/ partir de MyS! 9K se p%eden sec%ri;ar las coneAiones %sando
SS!.
&iene %n coste en tiempo de proceso.
Se p%ede obligar el acceso seg%ro:
E<:F/ :(( ;F sampd2.# /; 0eladio0?06.sna7e.net0
4="F/4>4"= 5- 01lint0 <"'34<" &&(*
"ncl%so re+%erir %n certi$icado M50J:
E<:F/ :(( ;F sampd2.# /; 0eladio0?06.sna7e.net0
4="F/4>4"= 5- 01lint0 <"'34<" K5.9*
Administracin de MySQL
40
)ermisos: 6esti#n de c%entas de %s%ario
W2eber0a poder administrar privilegiosX
)odr0amos permitir al d%eEo de la bbdd controlar los accesos
cediendo todos los privilegios en la bbdd y especi$icando S"&<
6./N& 4)&"4N.
E<:F/ :(( ;F sales.#
/; 0alicia0?06.2i,-corp.com0 4="F/4>4"= 5-
0shale0
$4/C E<:F/ ;9/4;F*
Administracin de MySQL
41
)ermisos: 6esti#n de c%entas de %s%ario
W2eber0an limitarse el cons%mo de rec%rsosX
/ partir de MyS! 9.0.2K se p%eden poner l0mites:
N>mero de veces por hora +%e se p%eden hacer coneAiones.
Cons%ltas o act%ali;aciones por hora.
E<:F/ :(( ;F sampd2.# /; 0spi7e0?0localhost0
4="F/4>4"= 5- 0pyrite0
$4/C

%: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

<"D;L" privile,es Acol!mnsB ;F what ><;% acco!nt*


5hat: debe coincidir con el %s%ario y el host
Se p%eden dar permisos y l%ego revocar alg%nos:
E<:F/ :(( ;F sampd2.# /; 02oris0?0localhost0 4="F/4>4"=
5- 0r!2y0*

<"D;L" ="("/"M39=:/" ;F sampd2.# ><;%


02oris0?0localhost0*
.8H4T8 no elimina totalmente %na c%entaK para eliminarla:

6 mysql -! root
mysql 3&" mysql*

mysql ="("/" ><;% !ser


- $C"<" 3ser @ 0mary0 and Cost @ 06.sna7e.net0*
mysql >(3&C 9<4D4("E"&*
Administracin de MySQL
43
)ermisos: 6esti#n de c%entas de %s%ario
Canviar pass5ords o resetear pass5ord perdidos
:( M3todo ::
mysql 39=:/" !ser &"/ 9assword@9:&&$;<=A0silicon0B
- $C"<" 3ser@02oris0 :F= Cost@0localhost0*
mysql >(3&C 9<4D4("E"&*
2( M3todo 2:

mysql &"/ 9:&&$;<= >;< 02oris0?0localhost0 @


9:&&$;<=A0silicon0B*
@( M3todo @:
mysql E<:F/ 3&:E" ;F #.# /; 02oris0?0localhost0
4="F/4>4"= 5- 0silicon0*
Administracin de MySQL
44
&%ning
4ptimi;aciones de hard5are y so$t5are.
)ar1metros de con$ig%raci#n.
C#mo %sar el comando 4)&"M"D8 &/,!8.
C#mo %sar el comando 8M)!/"N.
C#mo %sar el comando ?!7S< para limpiar tablasK caches y archivos
de log.
C#mo %sar el comando S<4S para obtener in$ormaci#n sobre base
de datosK tablas e 0ndices.
C#mo %sar el comando S<4S para obtener el estado del sistema.
Administracin de MySQL
45
&%ning
4ptimi;aciones de hard5are y so$t5are:
C)7
Simple. !o m1s r1pido posible.
<yper-threadingK d%alesK +%ads...
Memoria
N%nca hay bastante.
2isco d%ro
&iempo de accesoZ
S%ele ser el [emb%do\.
Sistema operativo
8scoger %n sistema operativo +%e no malgaste rec%rsos en
ventanas con bonitos colores...
8Aisten di$erencias de rendimiento entre di$erentes S4. Se p%eden
encontrar !enc1mar.s +%e los comparan.
Administracin de MySQL
46
&%ning
4ptimi;aciones de hard5are y so$t5are:
7so de la $%nci#n !enc1mar.()
8*ec%ta %na eApresi#n N veces.
8*ec%tada en diversas ocasiones del dia nos da %na idea del
rendimiento del servidor.

mysql select 2enchmar7A1.......M 1.N1.B*


N----------------------------N
O 2enchmar7A1.......M 1.N1.B O
N----------------------------N
O . O
N----------------------------N
1 row in set A..44 secB
Administracin de MySQL
47
&%ning
)ar1metros de con$ig%raci#n:
MyS! /, nos proporciona in$ormaci#n para a$inar los par1metros
de n%estro servidor.
Con la instalaci#n disponemos de %nos archivos de con$ig%raci#n de
m%estra:
my-small.cnf: )ara sistemas con menos de I9Mb de ./MK d#nde
MyS! se %sa de $orma ocasional.
my-medium.cnf: )ara sistemas con menos de I9Mb de ./MK
d#nde MyS! es la actividad principalK o en sistemas con hasta
:2FMb de ./MK donde MyS! %no de los procesos en el
servidor. 'con$ig%raci#n com>n de %n servidor 5eb con tr1$ico
moderado(.
my-large.cnf: )ara sistemas de :2FMb hasta 5:2Mb de ./MK
d#nde MyS! es el proceso principal.
my-huge.cnf: )ara sistemas de :6b a 2 6b de ./MK d#nde
MyS! es el proceso principal.
Administracin de MySQL
48
&%ning
)ar1metros de con$ig%raci#n:
Comparativa archivos de con$ig%raci#n de g%0a:
my-small.cnf
...
Bmys+ldC
port ] @@0I
soc-et ] /var/r%n/...
s-ip-loc-ing
-eyPb%$$er ] :IT
maAPallo5edPpac-et ] :M
tablePcache ] 9
sortPb%$$erPsi;e ] I9T
readPb%$$erPsi;e ] 25IT
readPrndPb%$$erPsi;e ] 25IT
netPb%$$erPlength ] 2T
threadPstac- ] I9T
Bmyisamch-C
-eyPb%$$er ] FM
sortPb%$$erPsi;e ] FM
...
my-medium.cnf
...
Bmys+ldC
port ] @@0I
soc-et ] /var/r%n/...
s-ip-loc-ing
-eyPb%$$er ] :IM
maAPallo5edPpac-et ] :M
tablePcache ] I9
sortPb%$$erPsi;e ] 5:2T
readPb%$$erPsi;e ] 25IT
readPrndPb%$$erPsi;e ] 5:2T
netPb%$$erPlength ] FT
myisamPsortPb%$$erPsi;e ] FM
Bmyisamch-C
-eyPb%$$er ] 20M
sortPb%$$erPsi;e ] 20M
readPb%$$er ] 2M
5ritePb%$$er ] 2M
...
my-large.cnf
...
Bmys+ldC
port ] @@0I
soc-et ] /var/r%n/...
s-ip-loc-ing
-eyPb%$$er ] 25IM
maAPallo5edPpac-et ] :M
tablePcache ] 25I
sortPb%$$erPsi;e ] :M
readPb%$$erPsi;e ] :M
readPrndPb%$$erPsi;e ] 9M
myisamPsortPb%$$erPsi;e ] I9M
threadPcache ] F
+%eryPcachePsi;e] :IM
^ &ry n%mber o$ C)7NsU2
threadPconc%rrency ] F
Bmyisamch-C
-eyPb%$$er ] :2FM
sortPb%$$erPsi;e ] :2FM
readPb%$$er ] 2M
5ritePb%$$er ] 2M
...
my-huge.cnf
...
Bmys+ldC
port ] @@0I
soc-et ] /var/r%n/...
s-ip-loc-ing
-eyPb%$$er ] @F9M
maAPallo5edPpac-et ] :M
tablePcache ] 5:2
sortPb%$$erPsi;e ] 2M
readPb%$$erPsi;e ] 2M
readPrndPb%$$erPsi;e ] FM
myisamPsortPb%$$erPsi;e ] I9M
threadPcache ] F
+%eryPcachePsi;e ] @2M
^ &ry n%mber o$ C)7NsU2
threadPconc%rrency ] F
Bmyisamch-C
-eyPb%$$er ] 25IM
sortPb%$$erPsi;e ] 25IM
readPb%$$er ] 2M
5ritePb%$$er ] 2M
...
Administracin de MySQL
49
&%ning
)ar1metros de con$ig%raci#n '.ey(:
8Aisten dos par1metros principales +%e a$ectan al sistema:
key_buffer_size
&amaEo de b%$$er %sado en los 0ndices
Heri$icar el rendimiento act%al de los b%$$ers:
7sando el comando #H<W #)6)0#:
mysql show stat!s*
Se m%estra %na larga lista de valores. ,%scar los
sig%ientes:

O LeyJreadJreq!ests O 6.2843 O
O LeyJreads O 151 O
O LeyJwriteJreq!ests O 1PP3 O
O LeyJwrites O 8.5 O

Si se divide .ey_read por .ey_reads_re/uestsK el res%ltado


deber0a ser menor +%e 0.0:.
&ambi3n si se divide .ey_write por .ey_writes_re/uestsK el
res%ltado deber0a ser menor +%e :.
8n este e*emplo los res%ltados son 0.0002509GJF0JF@990: y
0.9590@2G:2J:5JI2K respectivamente. /ceptables.
"ntentando ba*ar estos valores se obtiene me*or rendimiento.
Administracin de MySQL
50
&%ning
)ar1metros de con$ig%raci#n '-ey(:

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:

mysql eHplain select # 1rom ,roceryJinventory*


N-------------------N------N---------------N-----N--------N-----
N-----N------N
O ta2le O type O possi2leJ7eys O 7ey O 7eyJlenO re1 O
rowsO "HtraO
N-------------------N------N---------------N-----N--------N-----
N-----N------N
O ,roceryJinventory O :(( O F3(( O F3((O F3((O F3((O
6O O
N-------------------N------N---------------N-----N--------N-----
N-----N------N
1 row in set A.... secB

/+%0 no se p%eden hacer demasiadas optimi;aciones eAcepto aEadir


%na cla%s%la S<8.8 con la clave primaria.
Administracin de MySQL
54
&%ning
C#mo %sar el comando ?!7S< para limpiar tablasK caches y archivos
de log:
?!7S< &/,!8S:
Cierra todas las tablas abiertas o en %so.
8sencialmente da al servidor %n respiro de %n miliseg%ndo antes de
volver al traba*o. C%ando las cach3s estan vac0asK MyS! p%ede
%tili;ar me*or la memoria disponible.
mysql 1l!sh ta2les*
'!ery ;LM . rows a11ected A..21 secB
?!7S< <4S&S:
/ct%a sobre la cach3 del servidor.
Si no se p%ede conectar al servidorK lo habit%al es +%e se hayan
s%perado el n>mero m1Aimo de coneAiones para %n servidor
partic%lar.
mysql 1l!sh hosts*
'!ery ;LM . rows a11ected A.... secB
?!7S< !46S:
Cierra y reabre todos los archivos de log creando %n n%evo archivo.
mysql 1l!sh lo,s*
'!ery ;LM . rows a11ected A...4 secB
Administracin de MySQL
55
&%ning
S<4S para obtener in$ormaci#n sobre base de datosK tablas e
0ndices.
/lg%nos comandos dependen de los privilegios +%e dispongamos.
S<4S 6./N&S ?4. %ser
M%estra los privilegios de %n %s%ario en %n host determinado.

mysql show ,rants 1or Ioe?localhost*


N--------------------------------------------------------
----N
O Erants 1or Ioe!ser?localhost
O
N--------------------------------------------------------
----N
O E<:F/ 3&:E" ;F #.# /; 0Ioe!ser0?0localhost0
4="F/4>4"= 5- 9:&&$;<= 03413a6996d856e1d0
O
O E<:F/ :(( 9<4D4("E"& ;F test=5.# /;
0Ioe!ser0?0localhost0 O
N--------------------------------------------------------
----N

Administracin de MySQL
56
&%ning
S<4S 2/&/,/S8S B!"T8 somethingC

!istado de bases de datos.

mysql show data2ases*


N-------------------N
O =ata2ase O
N-------------------N
O test=5 O
O mysql O
N-------------------N
2 rows in set A.... secB

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

mysql show open ta2les*


N-------------N-----------------------------N--------
N-------------N
O =ata2ase O /a2le O 4nJ!se O
FameJloc7ed O
N-------------N-----------------------------N--------
N-------------N
O dvddata2ase O tdp O . O
. O
O dvddata2ase O p!rchaseJreqest O . O
. O
O mysql O timeJGone O . O
. O
O dvddata2ase O !serJcollection O . O
. O
O mysql O 1!nc O . O
. O
N-------------N-----------------------------N--------
N-------------N
5 rows in set A...1 secB
)odemos %sar esta in$ormaci#n con ?!7S< &/,!8S.
Administracin de MySQL
58
&%ning
S<4S C.8/&8 &/,!8 tablePname

M%estra el S! %sado para la creaci#n de %na tabla.


mysql show create ta2le ,roceryJinventory*
N--------------------
N---------------------------------------------N
O /a2le O )reate /a2le
ON-------------------
N---------------------------------------------N
O ,roceryJinventory O )<":/" /:5(" 0,roceryJinventory0 A
0id0 intA11B F;/ F3((
a!toJincrementM
0itemJname0 varcharA5.B F;/ F3((
de1a!lt 8M
0itemJdesc0 teHtM
0itemJprice0 1loat F;/ F3(( de1a!lt
0.0M
0c!rrJqty0 intA11B F;/ F3(( de1a!lt
0.0M
9<4%:<- L"- A0id0B
B /-9"@%y4&:%
N--------------------
N---------------------------------------------N
1 row in set A.... secB

,1sicamente es la misma in$ormaci#n +%e se obtiene al volcar el


es+%ema de la tabla.
Administracin de MySQL
59
&%ning
S<4S B?7!!C C4!7MNS ?.4M tablePname B?.4M
databasePnameC B!"T8 somethingC

Si se necesita conocer la estr%ct%ra de la tabla pero no el S!.

mysql show col!mns 1rom ,roceryJinventory*


N------------N-------------N------N-----N---------
N----------------N
O >ield O /ype O F!ll O Ley O =e1a!lt O "Htra
O
N------------N-------------N------N-----N---------
N----------------N
O id O intA11B O O 9<4 O F3(( O
a!toJincrement O
O itemJname O varcharA5.B O O O O
O
O itemJdesc O teHt O -"& O O F3(( O
O
O itemJprice O 1loat O O O . O
O
O c!rrJqty O intA11B O O O . O
O
N------------N-------------N------N-----N---------
N----------------N
5 rows in set A.... secB
Administracin de MySQL
60
&%ning
S<4S "N28M ?.4M tablePname B?.4M databasePnameC
M%estra in$ormaci#n de todos los 0ndices de %na tabla.
Se obtiene %na tabla con las sig%ientes col%mnas:
)a!le: Nombre de la tabla.
7on_uni/ue: :]p%ede contener d%plicadoY 0]no p%ede
contener d%plicados
?ey_name: Nombre del 0ndice.
#e/_in_index: N>mero de sec%encia para el 0ndiceY
comien;a en :.
*olumn_name: Nombre de la col%mna.
*ollation: 4rdenK / 'ascendiente( o N7!! 'no ordenado(.
*ardinality: N>mero de valores >nicos en el 0ndice.
#u!_part: N>mero de car1cteres indeAados o N7!! si est1
toda la clave indeAada.
+ac.ed: 8l tamaEo de las col%mnas n%m3ricas.
7ull: Si permite valores n%los.
-ndex_type: M3todo %sado de indeAado ';)EFFC 40LL)FJ)C
H6#HC E)EFF(.
*omment: Comentarios.
Administracin de MySQL
61
&%ning
C#mo %sar el comando S<4S para obtener el estado del sistema.
S<4S &/,!8 S&/&7S B?.4M dbPnameC B!"T8 somethingC
M%estra in$ormaci#n completa de tablas.
Se obtiene %na tabla con las sig%ientes col%mnas:
7ame: Nombre de la tabla.
)ype: &ipo de tabla 'My"S/MK ,2,K "nno2, o 6emini(.
Eow_format: ?ormato de almacena*e de $ila: $iAedK dynamic o
compressed.
Eows: N>mero de $ilas.
6(g_row_lengt1: !ongit%d de $ila media.
5ata_lengt1: !ongit%d del archivo de datos.
"ax_data_lengt1: M1Aima longit%d del archivo de datos.
-ndex_lengt1: !ongit%d del archivo 0ndice.
5ata_free: ,ytes reservados y a>n no %sados.
6uto_increment: Sig%iente valor a %sar en los campos
a%toPincrement.
*reate_time: ?echa y hora c%ando se cre# la tabla.
0pdate_time: ?echa y hora c%ando el archivo de datos $%e
act%ali;ado por >ltima ve;.
*1ec._time: ?echa y hora del >ltimo che+%eo.
*reate_options: 4pciones eAtra en la sentencia de creaci#n
C.8/&8 &/,!8.
*omment: Comentarios.
Administracin de MySQL
62
&%ning
S<4S S&/&7S B!"T8 somethingC
"n$ormaci#n del servidor.
!as variables m1s importantes:

6!orted_connects: N>mero de intentos $allidos de coneAi#n


al servidor. )%ede ser debido a %n %sername y pass5ord
incorrectos o %n n>mero sim%lt1neo de coneAiones
s%perior a las permitidas.
*onnections: S%ma de coneAiones atendidas por el servidor
en el periodo de %ptime.
"ax_used_connections: N>mero m1Aimo de coneAiones
%sadas sim%lt1neamente d%rante el periodo de %ptime.
#low_/ueries: N>mero de cons%ltas +%e han tardado en
e*ec%tarse m1s del valor de longP+%eryPtime 'por de$ecto
:0 s(.
0ptime: N>mero total de seg%ndos +%e el servidor ha estado
$%ncionando en el periodo de %ptime.
Administracin de MySQL
63
&%ning
S<4S H/."/,!8S B!"T8 somethingC
"n$ormaci#n de con$ig%raci#n del servidor.
!as variables m1s importantes:

connect_timeout: N>mero de seg%ndos +%e MyS! esperar1


d%rante %na coneAi#n antes de cerrarla.
1a(e_innod!: Si soporta las tablas "nno2,.
1a(e_!d!: Si soporta las tablas ,er-eley 2,.
max_connections: 8l n>mero de coneAiones sim%lt1neas
permitidas.
port: )%erto d#nde est1 $%ncionando MyS!.
ta!le_type: &ipo de tabla por de$ectoK s%ele ser:My"S/M.
(ersion: N>mero de versi#n de MyS!.
Administracin de MySQL
64
Monitora*e: mytop
7tilidad al estilo de top de 0nix.
_til para encontrar cons%ltas problem1ticas o para hacerse %na idea
de por+%3 el servidor est1 tan cargado.

Modos de vis%alit;ar datos:


&hread vie5 'defecto(
Command vie5
Stat%s vie5
Administracin de MySQL
65
Monitora*e: mytop
&hread vie5:
Hisi#n general de los procesos del momento.
Administracin de MySQL
66
Monitora*e: mytop
Command vie5:
N>mero de veces +%e se cons%lta al servidor determinados
comandos.
Administracin de MySQL
67
Monitora*e: mytop
Stat%s vie5:
.es%men de los contadores de los [no comandos\.
Administracin de MySQL
68
Che+%ear y reparar tablas
/lg%nas veces las tablas tipo My"S/M contienen errores.
!os s0ntomas son cons%ltas +%e abortan inesperadamente y
observaci#n de errores como:
`tblPname.$rmN is loc-ed against change
CanNt $ind $ile `tblPname.M="N '8rrcode: ^^^(
7neApected end o$ $ile
.ecord $ile is crashed
6ot error ^^^ $rom table handler
Administracin de MySQL
69
Che+%ear y reparar tablas
Che+%eo de %na tabla:
7saremos el comando myisamc1.:

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,(

:( Copiar los archivos: U.$rmK U.M=2K U.M="


2( mys+la ,+C-$. +,LE tblPname BK tblPnameC ... &4
N/path/to/bac-%p/directoryN
%) 6l restaurar se de!er9a parar el ser(idor "y#$L o !ien eecutar
EF+6-E )6;LF so!re la ta!la restaurada.
Administracin de MySQL
74
Sistema para copiar todos los datos de %n servidor a otro.
)or e*emplo para compartir datos con %na o$icina remota.
!a replicaci#n permite con$ig%rar $1cilmente %n seg%ndo servidor
como sla(e de %n master.

8n esta doc%mentaci#n se tratar1 brevemente a%n+%e la replicaci#n


es %n tema eAtensa +%e merecer0a %n c%rso entero.
.eplicar
Administracin de MySQL
75
)roblemas solventados con r3plicas:
2istrib%ci#n de datos:
8*.
Mantener %na copia de datos a :0.000 Tm con %na coneAi#n
decente.
,alanceo de carga:
8*.
Servidor 5eb d#nde la mayoria de operaciones son #FLF*)
)odr0amos %tili;ar round2ro!in 57#C LG#...
,ac-%p y resta%raci#n:
C%ando la demanda del acceso es 29h la me*or sol%ci#n es
con$ig%rar %n sla(e.
/lta disponibilidad:
Con$ig%rando la r3plica se evita +%e "y#$L sea %n p%nto de $allada
de n%estra aplicaci#n.
Se p%eden preparar mecanismos a%tom1ticos +%e en caso de
$allada del master se desvien las coneAiones al sla(e.
.eplicar
Administracin de MySQL
76
)roblemas no solventados con r3plicas:
8l mayor inconveniente de las r3plicas es el rendimiento.
8n aplicaciones +%e re+%ieren %n m%y alto 0ndice de escrit%ras en la
bbddK los servidores sla(es deben de ser como m0nimo tan
potentes com el master. )ara este caso el balanceo de carga con
r3plicas es %na mala opci#n.
Si la carga en el sla(e es alta no se p%ede aseg%rar +%e los datos
estar1n sincroni;ados a cada instante.
8l ancho de banda y latencia de la red tambi3n s%pone %n
inconveniente.
2os e*emplos +%e no son $1ciles de implementar con r3plicas:
&ransmisi#n de datos en tiempo real.
)eticiones online 'e*ec%ci#n de largas transaccionesK e*: in$ormesK
estad0sticas...(.
.eplicar
Administracin de MySQL
77
Con$ig%rando r3plicas en 9 pasos:
:. Crear %na c%enta de r3plica en cada servidor.
2. /Eadir entradas de con$ig%raci#n en my.cn$ en cada servidor.
@. .einiciar el master y veri$icar la creaci#n del log binario.
9. .einiciar el slave y veri$icar +%e la replicaci#n $%ncione.

Se s%pone %na n%eva instalaci#n si ya eAist0an datos deber0amos


copiarlos pr3viamente al sla(e como snaps1ot.
.eplicar
Administracin de MySQL
78
:. Crear %na c%enta de r3plica en cada servidor:

mysql E<:F/ <"9(4):/4;F &(:D"M <"9(4):/4;F )(4"F/ ;F #.# /;


repl?8192.168.1../255.255.255..8 4="F/4>4"= 5- 0c.py4/Q0*
'!ery ;LM . rows a11ected A.... secB

Heri$icamos +%e sea correcto:


mysql &C;$ E<:F/& >;< repl*
N-------------------------------------------------------------------------------
------N
OErants 1or repl?8192.168.1../255.255.255..8
O
N-------------------------------------------------------------------------------
------N
O E<:F/ <"9(4):/4;F &(:D"M <"9(4):/4;F )(4"F/ ;F #.# /; 0repl0?0...0 4="F/4>4"=
5- ...O
N-------------------------------------------------------------------------------
------N
1 row in set A.... secB

W)or+%3 crear las c%entas en los dos servidoresX


Si $alla el master con$ig%raremos el sla(e como master y c%ando se
resta%re el antig%o master tal ve; +%eramos de*arlo con$ig%rado
como sla(e.
.eplicar
Administracin de MySQL
79
2. /Eadir entradas de con$ig%raci#n en my.cn$ en cada servidor:
8n el masterK en la secci#n [mys/ld]:

lo,-2in

server-id @ 1 #cada servidor debe tener un identificador


nico!

lo,-2in @ /var/d2/repl/lo,-

8n el sla(eK secci#n [mys/ld]:

server-id @ 2 RScada servidor de2e tener !n identi1icador


TnicoQ

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

R.2.922 14:59:11 server id 1 lo,Jpos 4 &tart:


2inlo, v 3M server v 4...4-2eta-lo, created
.2.922 14:59:11
.eplicar
Administracin de MySQL
81
9. .einiciar el sla(e y veri$icar +%e la replicaci#n $%ncione:
)aramos y reiniciamos el sla(e.
Heri$icamos el log de errores:

.211.3 13:58:1. &lave 4/; thread: connected to


master 0repl?master:33.60M replication started
in lo, 0lo,-2in...10 at position 4
Nos indica +%e $%nciona.

=a podemos insertar alg>n registro en el master y ver el re$le*o en el


sla(e.
.eplicar
Administracin de MySQL
82
.eplicar
/r+%itect%ras:
Normas:
Cada sla(e debe tener %n >nico -5.
7n sla(e p%ede tener s#lo %n master.
7n master p%ede tener m%chos sla(es.
!os sla(es tambi3n p%eden ser master de otros sla(es.

Master con slaves Slave con dos masters 'Z(


Administracin de MySQL
83
.eplicar
2%al master /nillo de r3plica

)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:

)yS/L0 Second Edition


,y )a%l 2%,ois
)%blisher: Sams
)%b 2ate: can%ary :GK 200@
"S,N: 0-G@5G-:2:2-@
)ages: :29F

Sams each *ourself .1.0 )yS/L2 and +(ache +ll in #ne


,y c%lie C. Meloni
)%blisher: Sams )%blishing
)%b 2ate: 2ecember :FK 200@
"S,N: 0-IG2-@2I20-5
)ages: I29

1igh .erformance )yS/L

,y 2ere- c. ,allingK ceremy Da5odny

)%blisher: 4N.eilly

)%b 2ate: /pril 2009

"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

También podría gustarte