Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Desde mi punto de vista, como nuevo administrador de una Base de Datos en una empresa
es fundamental, como primera actividad en mi primer día, conocer y familiarizarse con la
estructura y la forma de la base de datos.
Por otro lado, debo conocer e identificar el medio físico donde esta almacenada la base de
la empresa, el tipo de hardware que se está utilizando, como por ejemplo el tipo de disco
duro y su partición asignada en el servidor. Además, también debo conocer las políticas que
se están llevando a cabo en cuestión de la seguridad, es decir, los métodos específicos de
acceso y los estándares que se están utilizando para la definición de permisos para los
usuarios y los grupos.
Considero que debo obtener de este análisis un reporte preciso de todos los privilegios que
están establecidos, esto con el fin de garantizar la integridad de la información contenida
en la base, pues ahora como nuevo administrador es mi responsabilidad salvaguardar las
operaciones diarias de la empresa.
Dentro de este primer reporte que debo generar en cuanto a la seguridad de la base de
datos, debo determinar si el software encargado del combate al malware y las utilerías
propias del servidor para la administración de las operaciones son los ideales o debo buscar
una mejor opción para proponerla, con el fin de realizar la óptima y correcta configuración
del servidor.
Una ves analizado a detalle todos los puntos que he mencionado anteriormente, y antes de
adentrarme a las tareas de monitoreo y mantenimiento de la base de datos, considero que
existen una serie de actividades mas a realizar. Una de ellas es, en primera instancia, crear
un informe detallado dirigido a la gerencia sobre el estado en el cual estoy recibiendo la
base de datos, donde debo indicar y describir los puntos a trabajar y las propuestas que
tengo en mente para llevar a cabo mis actividades como nuevo DBA.
Otro punto a tratar, que a grandes rasgos es uno de los puntos más importantes como
nuevo responsable de la administración de una base de datos, es el entender y conocer las
necesidades de los usuarios. Aquí es importante aclarar que, como parte del área de
sistemas y tecnologías de la información, somos personas que ofrecemos un servicio a los
demás por lo que, en el aspecto personal, es fundamental ser empático con los usuarios y
con nuestros compañeros, comprender que cada uno tiene diferentes necesidades y
diferentes objetivos por cumplir.
Entonces, tomando en cuenta las necesidades, estaré en posición de asignar los accesos,
permisos y privilegios para las áreas de la empresa que así lo requieran, y a su ves evaluar
si las políticas de seguridad que encontré al llegar a la gestión de la base son idóneas y no
se compromete la integridad de los datos.
Una vez que me haya familiarizado con la estructura, funcionalidad y seguridad de la base
de datos y antes de realizar cualquier otra actividad al respecto, el paso a seguir es realizar
el respaldo correspondiente de los datos, con objeto de que no exista ningún inconveniente
cuando se implementen las nuevas disposiciones de gestión que llevare a acabo, una ves
que se hayan aprobado por la gerencia.
En estos primeros pasos debo ser minucioso y cuidadoso, pues la transición en un DBA a
otro no solo afecta una sola parte de la empresa, sino a toda la organización.
Una vez que he podido conocer la base, realizar su respaldo y después de realizar los
reportes correspondientes para implementar mi forma de gestionar la base de datos,
entonces si llego el momento de monitorear la actividad y el rendimiento de la base.
En primer lugar, debo saber cuales son las tareas que el sistema operativo esta ejecutando,
cuantas de estas tareas realizan otros procesos en segundo plano, cual es el consumo de
memoria que estas tareas gastan para que, con base en ello, determine la prioridad entre
los procesos, con el fin de conocer el alcance y el limite de operación del servidor que estoy
administrando.
Es claro que el monitoreo empieza desde el sistema operativo, por lo que, desde la consola
de comandos del mismo, ejecuto el comando ps para conseguir información del uso del
CPU, de la memoria RAM y sobre todo de la actividad de la interacción entre los clientes y
el servidor.
También, ejecutar el comando ps -fea | grep postgres | grep -v grep me permitirá conocer
el estado de uso tanto del CPU y de la memoria RAM. Ejecutar este proceso es primordial
en mis primeros días de trabajo con el nuevo administrador, ya que puedo estar al tanto del
consumo de ambos, pues si su actividad es muy alta provocaría la inestabilidad del servidor
y podría significar un gran problema para las operaciones de las áreas que componen la
organización.
Como se puede notar, es muy importante que la memoria RAM tenga capacidad suficiente
para el buen funcionamiento del servidor, entonces, al ser minucioso en mi trabajo, debo
vigilar el rendimiento y obtener los detalles necesarios mediante la ejecución el comando
vmstat para evitar un colapso por el acceso excesivo al disco y por la saturación de la
memoria.
Ahora bien, desde la perspectiva del sistema operativo conozco cual es mi labor, entonces
es momento de monitorear las actividades desde el mismo gestor de base de datos, que en
este caso es PostgreSQL, como ya había mencionado.
Oto procedimiento obligatorio que necesito realizar en mis primeros días como DBA es
saber el tamaño de la base que estoy administrando, para ello, debo ejecutar la sintaxis
correcta de la función pg_database_size (oid). Esta acción me será de utilidad para visualizar
el espacio ocupado y el espacio libre en el disco.
Y aunque parte de esta fluidez depende de la conexión del servidor y del tipo de hardware
que se utiliza, también puedo revisar este flujo mediante el comando pg_stat_activity, el
cual me permite visualizar el numero total de usuarios conectados.
A pesar de que mi labor demanda mucha atención de mi parte para que todo funcione
correctamente, no siempre se podrá tener todo en orden o funcionando como yo deseo,
por lo que optimizar lo mas posible el rendimiento de nuestra base es primordial, esto lo
podemos gestionar mediante el comando pg_stat_bgwriter, el cual nos permite asignar
mas espacio en los buffers a los procesos que lo demandan.
Respecto a las tareas rutinarias, estas se enfocan a la limpieza y mantenimiento de los datos
contenidos en cada tabla de la base. Para la realización de este procedimiento debo utilizar
el comando vacuum, el cual me permite realizar dicha limpieza de la base. De esta manera,
podré recuperar espacio en disco perdido principalmente por las actualizaciones, actualizar
la planificación de las consultas y me brinda protección ante la pérdida de datos. Por lo que
es altamente recomendable ejecutar de forma periódica este comando para que, en caso
de algún problema, el sistema me avise que acción debo tomar.
En cuanto a las tareas programadas, estas me resultan de gran ayuda sobre todo al
momento de realizar un backup. Gracias estas tareas me es posible programar el respaldo
de la base a una cierta hora en un periodo de tiempo determinado por mí. Esta se realizará
en automático y además de guardar en forma física en el disco dicho respaldo, me puede
enviar una copia a mi correo electrónico y libera espacio eliminando antiguos respaldos.
Ahora bien, es verdad que gestores de bases de datos como SQL Server u Oracle son mucho
más populares y más utilizadas por sus estándares y robustez. Pero a pesar de ello en esta
empresa se elige trabajar con PostgreSQL por diversas razones, entre las que se encuentran
su fácil accesibilidad para usuarios avanzados o novatos y su rápido ajuste para gestionar
grandes volúmenes de información.
Además de contar con el hardware necesario y óptimo para administrar la base y ofrecer
un mejor servicio, es necesario que realice modificaciones al archivo de configuración de
postgres, el cual se encuentra ubicado en /usr/local/pgsql/data/. Pero antes de que realice
cualquier acción, es altamente recomendable la elaboración de un respaldo de este archivo
de configuración (postgres.conf).
Una vez ubicado en la edición de este archivo puedo realizar las modificaciones necesarias
para mejorar el rendimiento. Entre estas se encuentran el aumento del tamaño del buffer
sobre el total de memoria RAM disponible. Pero debo tener en cuenta que existen
parámetros del kernel que se necesitan modificar debido a los limites de la cantidad de
memoria que asigna, con el fin de evitar inconvenientes.
Dentro del mismo archivo, puedo modificar el parámetro work_mem, el cual me permitirá
tener control del total de la memoria que se utiliza en la realización de consultas complejas.
El tamaño de la memoria cache siempre será un asunto muy importante, no para los
usuarios, sino para mí, ya que de ello depende que los usuarios trabajen de la forma mas
optima posible. Para saber el total de chache que tengo disponible debo modificar el
parámetro effective_cache_size para establecer la cantidad de memoria.
Por otro lado, existe una técnica no tan compleja para ofrecer un mejor rendimiento y un
opimo servicio, esta es la partición de tablas. Su función principal es reducir los datos que
se leen en cada consulta realizada, pues se trabaja en bloques mas simples y la realización
de respaldos es mucho más rápida.
Mi trabajo parece muy complicado de llevar a cabo, ya lo había mencionado. Mis
actividades requieren un porcentaje de atención muy alto, pero es gratificante y
emocionante cuando me doy cuenta que de mi depende gran parte de los objetivos de cada
departamento y de la organización como tal.
Algunas personas podrán preguntarse: “¿Y de que sirve realizar todas esas operaciones y
actividades tan complejas? De seguro tu trabajo no se toma muy en cuenta”. Y no se podría
estar mas equivocado. El objetivo de realizar todas y cada una de las actividades descritas
en este documente es que me permiten crear estadísticas de desempeño, las cuales debo
reportar periódicamente a la gerencia y contribuir así a la adecuada toma de decisiones.
1. Los datos se encuentran contenidos en una hoja de cálculo, por lo que procedo a
respaldar esta información en un archivo llamado codpost.csv en la ubicación
/usr/local/pgsql/.
2. En la terminal del sistema operativo, específicamente en la base de datos “cp_cdmx”
creo la tabla “codigos”.
4. Se realiza una consulta para verificar que los datos se han restaurado correctamente.
cp_cdmx=# \q
-bash-4.2$ exit
logout
[root@localhost diplomado]# ps
PID TTY TIME CMD
9647 pts/1 00:00:00 su
9667 pts/1 00:00:00 bash
9979 pts/1 00:00:00 ps
cp_cdmx=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype
| Access privileges
---------------------+----------+----------+-------------+--------
-----+-----------------------
biblioteca | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
cp_cdmx | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
postgres | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
prueba | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
respaldo_biblioteca | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
respaldo_prueba | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 |
template0 | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 | =c/postgres +
| | | | |
postgres=CTc/postgres
template1 | postgres | UTF8 | es_MX.UTF-8 | es_MX.UTF-
8 | =c/postgres +
| | | | |
postgres=CTc/postgres
(8 rows)