Home

TOMO 2 - Repositorio CISC

image

Contents

1. 1 OR BOD_ID 2 OR BOD ID 11 OR BOD_ID 12 OR BOD_ 1 OR BOD_ID 2 OR BOD_ID 11 OR BOD_ID 12 OR BOD_ 1 OR BOD ID 2 OR BOD ID SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD_ID 11 OR BOD_ID 12 OR BOD_ SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD ID 1 OR BOD_ID 2 OR BOD ID SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD ID 11 OR BOD_ID 12 OR BOD_ 1 OR BOD ID 2 OR BOD ID 11 OR BOD ID 12 OR BOD_ SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD ID 1 OR BOD_ID 2 OR BOD ID SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD ID NN SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD ID SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD_ID 11 OR BOD ID 12 OR BOD SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD_ID 1 OR BOD_ID 2 OR BOD_ID SELECT BOD ID BOD NOM BOD LOC FROM bodega WHERE BOD ID 11 OR BOD_ID 12 OR BOD_ SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD_ID 1 OR BOD_ID 2 OR BOD ID SELECT BOD BOD_NOI Bo FROM bodega WHERE BOD 11 OR BOD ID 12 OR BOD mylog_2296_prueba sql Bloc de notas Archivo Edici n Formato Ver Ayuda S
2. BOD_NOM BOD LOC l 1 ARCHIVO BANCO CENTRAL ARCHIVO BANCO CENTRAL 2 ARCHIVO SUPER BANCOS ARCHIVO SUPER BANCOS 4 ARCHIVO BANCO PICHINCHA ARCHIVO BANCO PICHINCHA 3 rows in set 0 00 sec mysql gt i Gr fico 6 Replicaci n semi s ncrona esclavo root replica usr local mysql Archivo Editar Ver Terminal Solapas Ayuda gt nueva prestamos tipodoc user I 18 rows in set 0 00 sec mysql gt install plugin rpl semi sync slave soname semisync slave so Ouery OK 0 rows affected 0 10 sec mysql gt set global rpl semi sync slave enabled 1 Ouery OK 0 rows affected 0 01 sec mysql gt stop slave io thread start slave io thread Query OK O rows affected 0 01 sec Query OK O rows affected 0 00 sec mysql gt select from bodega BOD ID BOD_NOM BOD LOC 1 ARCHIVO BANCO CENTRAL ARCHIVO BANCO CENTRAL 2 ARCHIVO SUPER BANCOS ARCHIVO SUPER BANCOS 4 ARCHIVO BANCO PICHINCHA ARCHIVO BANCO PICHINCHA E 3 rows in set 0 00 sec Imysqi gt E E Claro que no es sencillo apreciarlo mediante im genes as que procedemos a mostrar a mostrar el archivo donde se guardan los
3. CONTROL Log queries by PID and DataBase IDC CHECK save queries by pid db Button BS_AUTOCHECKBOX WS_TABSTOP 12 26 148 10 END Con esto tenemos listo el checkbox si queremos compilamos para visualizarlo hay que tomar en cuenta que en estos momentos no hace nada Gr fico 13 Checkbox para las sentencias creado Flags 1 Flags 2 Flags3 Debug ss Settings Misc Options Log queries to myodbc sql Log queries by PID and DataBase coco _ Dentro del archivo C mysql connector odbc 5 1 6 util installer h en la estructura DataSource creamos la variable BOOL save queries by pid db 18 Esta nos servir para obtener y escribir el valor en los registros En el mismo archivo creamos la macro define FLAG LOG QUERIES BY PID DB FLAG SAFE lt lt 7 Esta se usar para el control del checkbox Ahora hay que proceder a grabar en los registros del sistema si se activa esta funci n para esto primero creamos el nombre del registro editando el archivo C mysql connector odbc 5 1 6 util installer c static SQLWCHAR W_LOG_QUERY L 0 G Q U E R Y O static SQLWCHAR W_LOG_QUERIES_BY_PID_DB CESSO Ga OA UERR Ty E Sg ABRIO P I D F is D B Q static SQLWCHAR W_NO_CACHE N 0O Sy C A C H E 0 Con el nombre que se le asigna a la variable es el con el cual se va a guardar en los registros Ahora en el mismo archivo pr
4. my_log file 0 Lo que se procede a hacer en esta funci n es terminar de crear el nombre del archivo para posteriormente pasar a guardar las sentencias claro que no se puede guardar en una variable global porque se puede usar un solo DSN para que varias aplicaciones accedan a la base de datos lo cual podr a hacer una incorrecta combinaci n de los archivos Ahora procedemos a hacer las llamadas necesarias a la funci n El archivo que principalmente se usa para ejecutar las sentencias es C mysql connector odbc 5 1 6 driver myutil h execute c En la funcion SQLRETURN do_query STMT FAR stmt char query Agregamos MYLOG_BACKUP_QUERY stmt query Para mandar a escribir las sentencias Ahora procedemos a compilar y a instalar con el archivo Install bat 28 Gr fico 15 Archivos Creados C mylog_2296_data sql Bloc de notas Archi Edi Formal Ver Ay SELECT Config nvalue FROM MSysConf SELECT bodega BOD ID FROM SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD ID SELECT BOD ID BOD_NOM BOD LOC FROM bodega WHERE BOD_ID SELECT BOD ID BOD_NOM BOD LOC FROM bodega WHERE BOD ID SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD_ID SELECT BOD_ID BOD_NOM BOD_LOC FROM bodega WHERE BOD_ID SELECT BOD ID BOD_NOM BOD LOC FROM bodega WHERE BOD_ID o o PO o Q w is
5. server_id 2 Start binlog_dump to slave_server 2 pos proyecto Start semi sync binlog_ dump to slave server_id 2 pos proyecto bin 000013 5725037 Ln 222 Col 57 INS En las dos ltimas l neas podemos apreciar que la replicaci n semi sincrona fue iniciada con el servidor esclavo Si en alg n momento queremos reiniciar el servidor y no perder las configuraciones realizadas debemos agregar en el archivo etc my cnf 10 En el maestro mysqld rpl_semi_sync_master_enabled 1 rpl_semi_sync_master_timeout 1000 En el esclavo mysqld rpl semi sync slave enabled 1 11 MANUAL DE USUARIO DEL ODBC En esta secci n se va a proceder a explicar el correcto uso del ODBC modificado en este proyecto S lo nos vamos a concentrar en lo que se le ha agregado Entre los archivos que tenemos del conector ODBC de MySQL vamos a encontrar un archivo llamado install bat ejecutamos este archivo el cual va a proceder a la instalaci n del driver de conexi n La instalaci n crear un directorio llamado log queries en el disco c en donde se guardar n los registros de todas las transacciones realizadas por el cliente al servidor Ahora procedemos a crear un DSN normalmente y damos clic en el bot n Details Gr fico 8 Configurando el conector ODBC MySQL Connector ODBC Data Source Configuration MYSA Connector ODBC Connection Parameters Data Source Name Description S
6. A B if A gt dbc gt ds gt save_queries by pid db backup query _print A gt dbc A gt dbc gt my_query_log char B define MYLOG DBC BACKUP QUERY A B if A gt ds gt save_queries by pid db backup_query_print A A gt my_query_log char B Cada vez que agregamos hagamos un llamado a estas macros se llamar a la funci n que procedera a escribir en los archivos las sentencias generadas por el usuario Por esta raz n en este mismo archivo se debe declarar aquella funci n void backup query print DBC dbc FILE my log file char query Donde DBC es un puntero que nos permita accesar a la estructura que tiene los valores de conexion a la base de datos Ahora en el archivo C mysql connector odbc 5 1 6 driver myutil h utility c procedemos a escribir la funci n void backup query print DBC dbc FILE my log file char query int pid 26 char archive_name 7 DRIVER BACKUP FOLDER char c pid 6 pid getpid itoa pid c_pid 10 strcat archive_name char dbc gt name ifdef WIN32 strcat archive_name else strcat archive_name tend if strcat archive_name mylog strcat archive_name c_pid strcat archive name strcat archive_name char dbc sdatabase strcat archive_name sql if my log file fopen archive_name a gt 27 fprintf my log file s n query fclose my_log file
7. C log_queries new Herramientas i Carpetas Ayuda Ei Carpetas B Escritorio E B Mis documentos E Y mec 4 Disco de 3 A Se Disco local C E 5 AgenteCliente El Archivos de programe E O c E 5 connector c 5 Documents and Se hola E 5 log_queries 3 data Archivo SQL 1 KB mylog_872_data sql Archivo SQL 1 KB mylog_1268_data sql Archivo SQL 14 MANUAL T CNICO DEL ODBC Lo que se plantea hacer como parte de la soluci n es usar el ODBC para extraer la informaci n que env an los usuarios hacia el servidor S lo se explicar lo que se hizo para este proyecto ya que el conector ODBC es un proyecto grande que fue iniciado desde hace varios a os El compilador que se va a usar es el de Visual Studio 2008 Express Edition Luego de haber usado el CMAKE para hacer las configuraciones necesarias procedemos a abrir el archivo Abrimos el archivo MySQL Connector ODBC sln aqu veremos del lado izquierdo dentro de las ra ces del rbol las librer as y los archivos en C necesarios para compilar el conector 15 Gr fico 11 Abriendo el c digo fuente del ODBC EN MYSA Connectar NDNC Visunl C 2008 xpress F ditian o LE Chake R des i ef msroLL_fcros r de i El CMake ste cxt O Bry bases a BE Sorzs Fles C iy iasi sa 2 E Make sts zxt l a ry bob 3 Be Sor gt Flos i 4 ny bl t i E Cabe sts ist Se Buy t3 se 2 so za Fle
8. cambios este se puede encontrar de la carpeta usr local mysql data en este caso el nombre del archivo es proyecto com err donde proyecto es el nombre del maestro Gr fico 7 Registro de la base de datos Maestro L proyecto com err usr local mysql data gedit ox Archivo Editar Ver Buscar Herramientas Documentos Ayuda B BW Q e E Nuevo Abrir Guardar Imprimir o B Pegar Buscar Reemplazar D proyecto com err x ILI UD MUCEXES aru TW_UUCRAS USE LOUD gt UWI Amp tementatruNn 100922 14 55 58 InnoDB highest supported file format is Barracuda 100922 14 55 58 InnoDB Plugin 1 0 6 started log sequence number 44438 100922 14 55 58 Note Event Scheduler Loaded 0 events 100922 14 55 58 Note usr local mysql bin mysqld ready for connections Version 5 5 3 m3 log socket tmp mysql sock port 3306 MySQL Community Server GPL 100922 15 11 15 Note bin 000004 456 100923 11 13 09 Note bin 000013 343 100923 12 22 14 Note bin 000013 509 To Start binlog dump to slave_server 2 pos proyecto Start binlog_dump to slave_server 2 pos proyecto Start binlog_dump to slave_server 2 pos proyecto 100923 13 21 26 Note 100923 13 21 26 Note 100923 13 39 52 Note 100923 13 39 52 Note bin 000013 5725037 100923 13 39 52 Note Semi sync replication initialized for transactions Semi sync replication enabled on the master Stop asynchronous binlog dump to slave
9. n el JDBC para la conexi n con la base en caso que se lo necesite e Configuraciones Aqu se encuentra el archivo Par metros txt en el cual pondremos las configuraciones para el correcto funcionamiento del Agente Por cada DSN que tengamos en un cliente deberemos llenar los siguientes par metros en el archivo Par metros txt dsn El nombre del DSN que se est usando 30 ipservidor La IP del servidor escrita en el momento que se cre el DSN puerto El n mero de puerto que se est usando MySQL 3306 es el valor por omisi n usuario El usuario que se usa para conectarse a la base puede ser el mismo usado al momento de crear el DSN contrase a La contrase a usada por el usuario antes descrito baseDatos Nombre de la base de datos a la que se conecta el DSN rutaLogs La ruta donde se est n guardando los archivos sql generados por el ODBC en este caso c log_queries ipReplicacion La IP del servidor de replicaci n que se usar para replicar la informaci n dentro de los archivos sql en caso de que el servidor principal falle replicaci nAutomatica Si se desea que se haga la replicaci n inmediatamente cuando se encuentre un error en la comunicaci n se deber poner el valor de 1 caso contrario se pondr 0 tiempoLectura Tiempo de lectura en el cual se va a indicar cada cuantos segundos se debe leer el Log del driver ODBC intentosComunicacion Cantidad de v
10. C Gr fico 13 18 Checkbox para las sentencias creado Gr fico 14 Registro agregado en Windows Gr fico 15 Archivos Creados 24 29 RESOLUCI N DEL PROYECTO INICIANDO REPLICACI N EN MYSQL Se debe tomar en cuenta que tanto el maestro como el esclavo se puedan comunicar por el puerto 3306 que es el puerto por defecto con el que trabaja MySQL Tambi n se asumir que ha sacado respaldo del maestro y los ha ejecutado en el esclavo en el caso de que tenga informaci n ingresada Tambi n que el servidor usado como de replicaci n exista en el archivo etc hosts La replicaci n presente es la llamada maestro esclavo que es la b sica y hay que recordar que la replicaci n es as ncrona El tiempo de replicaci n por defecto es de 60 segundos La IP asignada al maestro va a ser 192 168 100 10 y la del esclavo 192 168 100 20 Los siguientes pasos ser n para el servidor maestro En el archivo etc my cnf debemos tener los siguientes valores log bin proyecto bin server id 1 bin address 0 0 0 0 Para permitir conexiones remotas skip name resolve Si no se usa dominio Ahora procedemos a reiniciar el servidor MySQL para que lea las opciones dadas Ingresemos a MySQL y creemos una cuenta para que el servidor de replicaci n se pueda conectar a la base de datos mysql gt grant replication slave on to mysqlrepl proyecto com gt identified by replica86 Con esto hemos creado un usuario
11. ELECT Config nvalue FROM MSysConf SHOW TABLE STATUS SHOW TABLE STATUS LIKE empresa SHOW KEYS FROM empresa SELECT empresa EMP ID FROM empresa i SELECT EMP ID EMP NOM EMP DES FROM empresa WHERE EMP_ID 1 SELECT EMP ID EMP_NOM EMP DES FROM empresa WHERE EMP_ID 1 OR EMP ID 2 OR EMP_II SELECT EMP ID EMP NOM EMP DES FROM empresa WHERE EMP ID 7 DELETE FROM empresa WHERE EMP_ID 7 AND EMP NOM _utf8 PROBA AND EMP DES _utf8 PROBA COMMIT Como podemos darnos cuenta los archivos tienen la numeraci n 2296 este es el PID del programa en este caso es el mismo porque se ha ingresado a diferentes bases por medio del mismo programa por eso tambi n se escribe el nombre de la base en el archivo 29 MANUAL DE USUARIO DEL AGENTE Para la instalaci n del agente debemos primero copiar la carpeta AgenteCliente en el disco C luego ejecutamos el archivo instalador bat con esto el Agente iniciar cada vez que se inicie el sistema operativo Si se quiere cambiar la ubicaci n del Agente se debe editar los archivos instalador bat y ejecutable bat En el directorio del Agente tenemos tres carpetas m s e AgenteClienteFuentes Aqu se encuentra el c digo fuente del Agente e AgenteClienteClases Aqu se encuentran las clases compiladas y listas para usarse as como tambi
12. Replicacion int indiceDsn this indiceDsn indiceDsn lecturaCL new LecturaConfiguraciones try Class forName com mysql jdbc Driver newlnstance catch Exception ex Cargamos el controlador del jdbc para conectarnos a la base si es necesario public void probarComunicacionBasePrincipal String cadenaConexion try cadenaConexion jdbc mysql super ipServidor this indiceDsn 34 super baseDatos this indiceDsn user super usuario this indiceDsn 8 password super contrasefia indiceDsn DriverManager getConnection cadenaConexion Intentamos conectarnos a la base si no nos podemos conectar nos vamos por el error catch SQLException e probarComunicacionBaseSecundaria Si no podemos conectarnos con el servidor probamos la comunicaci n con el servidor de replicaci n public void probarComunicacionBaseSecundaria String cadenaConexion try cadenaConexion jdbc mysql super ipReplicacion this indiceDsn super baseDatos this indiceDsn 35 user super usuario this indiceDsn 8 password super contrasefal indiceDsn DriverManager getConnection cadenaConexion Ahora probamos la comunicaci n con la base de replicaci n si se logra conectar el agente procede a ir a la funci n para replicar las sentencias en los archivos sql catch SQLException e void ReplicarQueries Conn
13. UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEM TICAS Y F SICAS CARRERA DE INGENIER A EN SISTEMAS COMPUTACIONALES AUMENTO DE LA DISPONIBILIDAD DE BASES DE DATOS MYSQL UTILIZANDO UNA CONFIGURACI N DE BASE EN MODO DE ESPERA E INSTALACI N DE AGENTES PARA AUTOMATIZAR CONEXIONES TESIS DE GRADO Previa a la obtenci n del T tulo de INGENIERO EN SISTEMAS COMPUTACIONALES AUTOR POLL MIGUEL CEDE O TELLO TUTOR ING RAYNAUD QUIROZ GUAYAQUIL ECUADOR 2011 Guayaquil 11 de Octubre del 2010 APROBACI N DEL TUTOR En mi calidad de Tutor del trabajo de investigaci n Aumento de la disponibilidad de bases de datos MySQL utilizando una configuraci n de base en modo de espera e instalaci n de agentes para automatizar conexiones elaborado por el Sr Poll Miguel Cede o Tello egresado de la Carrera de Ingenier a en Sistemas Computacionales Facultad de Ciencias Matem ticas y F sicas de la Universidad de Guayaquil previo a la obtenci n del T tulo de Ingeniero en Sistemas me permito declarar que luego de haber orientado estudiado y revisado la Apruebo en todas sus partes Atentamente Ing Raynaud Quiroz TUTOR DEDICATORIA Agradezco a Dios que me ha dado la fuerza y capacidad para llegar hasta aqu as como a mi familia que me ha estado apoyando en toda la trayectoria de mi carrera tanto en las buenas como en las malas 111 iv TRIBUNAL DE GRADO Ing Fernando Abad Montero Ing Juan Chanaba Al
14. YISAM ACTIVE STORAGE ENGINE NULL GPL MyISAM ACTIVE STORAGE ENGINE NULL GPL I partition ACTIVE STORAGE ENGINE NULL GPL ARCHIVE ACTIVE STORAGE ENGINE NULL GPL I BLACKHOLE ACTIVE STORAGE ENGINE NULL GPL FEDERATED DISABLED STORAGE ENGINE NULL GPL I InnoDB ACTIVE STORAGE ENGINE NULL GPL I INNODB TRX ACTIVE INFORMATION SCHEMA NULL GPL INNODB_LOCKS ACTIVE INFORMATION SCHEMA NULL GPL I INNODB LOCK WAITS ACTIVE INFORMATION SCHEMA NULL GPL INNODB_CMP ACTIVE INFORMATION SCHEMA NULL GPL INNODB_CMP_RESET ACTIVE INFORMATION SCHEMA NULL GPL I INNODB CMPMEM ACTIVE INFORMATION SCHEMA NULL GPL INNODB_CMPMEM RESET ACTIVE INFORMATION SCHEMA NULL GPL I PERFORMANCE SCHEMA ACTIVE STORAGE ENGINE NULL GPL rpl_semi_sync_master ACTIVE REPLICATION semisync_master so GPL I 19 rows in set 0 00 sec mysql gt Ahora se debe habilitar las variables globales de esta replicaci n ya que por defecto est n deshabilitadas En el maestro se ejecuta lo siguiente mysql gt set global rpl semi sync master enabled 1 mysql gt set global rpl semi sync master timeout 1000 Con esto le decimos que esta activada la replicaci n semi s ncrona y que el tiempo va a ser de 1 segundo Ahora
15. _intprop ds gt name W LOG QUERY ds ssave queries goto error if ds_add_intprop ds gt name W LOG QUERIES BY PID DB ds gt save_queries_by_pid_db goto error if ds_add_intprop ds gt name W NO CACHE ds gt dont_cache_result goto error En la funci n void syncTabs HWND hwnd DataSource amp params Agregamos ds gt save_queries options FLAG LOG QUERY gt 0 ds gt save_queries_by pid_db options FLAG_LOG_QUERIES BY PID DB gt 0 ds gt dont_cache_result options 8 FLAG NO CACHE gt 0 En la funci n ulong ds get options DataSource ds Agregamos if ds gt save queries 22 options FLAG LOG QUERY if ds gt save_queries_by_pid_db options FLAG LOG QUERIES BY PID DB if ds gt dont_cache_result options FLAG NO CACHE Ahora en el archivo C mysql connector odbc 5 1 6 setupgui windows odbcdialogparams cpp En la funcion void syncTabsData HWND hwnd DataSource amp params Agregamos debug GET_BOOL 4 save_queries GET_BOOL 4 save_queries_by_pid_ db Esto nos permite obtener el valor de esta variable el n mero 4 es por el valor que tiene la pesta a Debug En la funci n 23 void syncTabs HWND hwnd DataSource amp params Agregamos SET_BOOL DEBUG_TAB save_queries by pid db En el archivo C mysql connector odbc 5 1 6 installer myodbc3i c En la funci n int list_datasource_details DataSource ds Agregam
16. c user I 4 18 rows in set 0 00 sec mysql gt REPLICACION SEMI SICRONA Ahora vamos a iniciar con la replicaci n semi sincrona a diferencia de la replicaci n normal esta tiene un tiempo para replicar por defecto de 10 segundos Lo primero que se debe hacer es instalar el Plug in En el maestro mysql gt install plugin rpl semi sync master soname semisync_master so gt Si este comando nos devuelve alg n tipo de error debemos revisar que el Plug in se encuentre en el siguiente directorio usr local mysql lib plugin Ahora en el esclavo tambi n lo instalamos pero el que corresponde al esclavo mysql gt install plugin rpl semi sync slave soname semisync_slave so Para ver los Plug in s instalados ejecutamos el siguiente comando mysql gt show plugins En el listado que se muestra a continuaci n podemos ver instalado el Plug in resiente Gr fico 4 Plug in s instalados E root proyecto usr local mysql ox Archivo Editar Ver Terminal Solapas Ayuda Query OK O rows affected 0 04 sec E mysql gt show plugins Name Status Type Library License Hon binlog ACTIVE STORAGE ENGINE NULL GPL csv ACTIVE STORAGE ENGINE NULL GPL I MEMORY ACTIVE STORAGE ENGINE NULL GPL MRG_M
17. c cer DECANO DE LA FACULTAD DIRECTOR CIENCIAS MATEMATICAS Y FISICAS Ing Raynaud Quiroz Inga Ana Maria Arellano TUTOR PROFESOR DEL AREA TRIBUNAL Ing Juan Carlos Cedefio Dr Jos Jupiter PROFESOR DEL AREA TRIBUNAL SECRETARIO UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEM TICAS Y F SICAS CARRERA DE INGENIER A EN SISTEMAS COMPUTACIONALES AUMENTO DE LA DISPONIBILIDAD DE BASES DE DATOS MYSQL UTILIZANDO UNA CONFIGURACI N DE BASE EN MODO DE ESPERA E INSTALACI N DE AGENTES PARA AUTOMATIZAR CONEXIONES MySQL es una de las bases de datos libres y de c digo abierto m s usadas en muchos ambientes laborales Tiene un sin n mero de herramientas tiles y para cada lugar de trabajo Este proyecto busca mejorar una de las reas de MySQL que es la replicaci n El problema se debe a que el m todo de replicaci n es as ncrono esto significa que no es inmediato y que se debe esperar cierta cantidad de tiempo para que la informaci n se replique y este tiempo va a depender de varios factores como pueden ser hardware software configuraciones por estos motivos se puede dar el caso de que al momento de replicar la informaci n no llegue o llegue incompleta La soluci n que se plantea consiste en extraer del cliente las consultas que se env an a la base de datos y guardarlos en archivos para lograr esto se procedi con la edici n del c digo fuente del ODBC agregando tambi n una funci n la cual va a estar indicando si las co
18. de nombre mysqlrepl con contrase a replica86 el cual solo va a servir para la replicaci n A continuaci n ejecutamos los siguientes comandos mysql gt flush tables with read lock mysql gt show master status En este momento vamos a tener la siguiente salida Gr fico 1 Estado del Maestro Show Master Status mysql gt show master status gt 1 row in set 0 00 sec Aqu copiamos los valores de File y Position Ejecutamos el comando shell gt unlock tables Para continuar con la escritura de datos en el maestro Estos son los pasos necesarios ahora procedemos con el esclavo En el archivo etc my cnf del esclavo debemos tener lo siguiente mysqld server id 2 Reiniciamos el servicio de mysql Ahora desde el cliente de mysql del cliente ejecutamos el siguiente comando mysql gt change master to gt MASTER_HOST proyecto com gt MASTER_USER mysqlrepl gt MASTER_PASSWORD replica86 MASTER LOG FILE proyecto bin 000013 MASTER LOG POS 509 Con esto indicamos los par metros de conexi n al maestro Por ltimo iniciamos el esclavo con mysql gt start slave Para probar que todo est funcionando crearemos una base de datos e importaremos un respaldo En mysql procedemos a crear una base de datos mysql gt create database data Ahora desde una terminal de Linux importamos el archivo de creaci n Para este ejemplo nos vamos a ubicar
19. dentro del directorio de instalaci n de mysql usr local mysql bin mysql u root p data lt super sql Donde super sql es donde se encuentra el respaldo Si todo ha funcionado correctamente no nos debe presentar ning n error Ahora ingresamos a MySQL para comprobar que se importaron correctamente los datos mysql gt use data mysql gt show tables Con estos comandos procedemos a ver la lista de tablas creadas dentro de la base de datos data Como la replicaci n ya ha sido iniciada encontraremos la base de datos Gr fico 2 Base de datos data creada root proy ecto usr local mysqi ENTE Archivo Editar Ver Terminal Solapas Ayuda Tables_in_data bodega contenedor documto documtoerror documtop documtoprint documtoreport dpto empresa funcionarios ingbarcode ingbarcodereport log I mdealm nueva prestamos tipodoc user 18 rows in set 0 00 sec Gr fico 3 Base de datos data replicada E rootOreplica usr local mysql Archivo Editar Ver Terminal Solapas Ayuda You can turn off this feature to get a quicker startup with A Database changed mysql gt show tables 4 o o M gt pe iz a D w bodega contenedor I documto I documtoerror I documtop I documtoprint I documtoreport I dpto I empresa I funcionarios I ingbarcode I ingbarcodereport log I mdealm I nueva I prestamos I tipodo
20. eDsn this indiceDsn indiceDsn lecturaCL new LecturaConfiguraciones hiloLectura new Thread this hiloLectura setName Integer toString indiceDsn hiloLectura start 38 public void leerLog RandomAccessFile raf String leerLinea escribirLinea String directorioLog long lineaPosInicial O lineaPosFinal O Las variables declaradas hasta este momento van a servir para leer las l neas del log y modificarlas una vez leidas directorioLog lecturaCL rutaLogs indiceDsn lecturaCL dsn indiceDsn File separator lecturaCL dsn indiceDsn log try raf new RandomAccessFile directorioLog rw while leerLinea raf readLine null if leerLinea startsWith ERROR ProcesosReplicacion rq new ProcesosReplicacion indiceDsn rq probarComunicacionBasePrincipal 1 39 Si se detecta alg n error llamamos a la clase ProcesosReplicacion para que haga su trabajo if leerLinea startsWith 113 352 Si la l nea empieza con significa gue ya ha sido le da y no se la toma en cuenta caso contrario se la lee y se le agrega para no volverla a leer lineaPosFinal raf getFilePointer lecturaCL saltoLinea length lineaPoslnicial raf getFilePointer leerLinea length lecturaCL saltoLinea length escribirLinea leerLinea lecturaCL saltoLinea while leerLinea raf readLine null escribirLinea escribirLinea leerlinea lectu
21. eces que va a intentar comunicarse el agente hacia el servidor esclavo antes de replicar 31 tiempolntento El tiempo que se va a tomar entre intentos de comunicaci n este tiempo se va a medir en segundos cambiarIpDsn Si se desea cambiar la IP de conexi n del DSN el valor ser de 1 caso contrario el valor debe ser de 0 rutaBat Ruta del archivo bat para cambiar la IP del DSN rutaDestinoLogs Ruta en donde se guardar n los registros le dos despu s de haber sido replicados Si alguna linea empieza con el s mbolo no sera tomada en cuenta 32 MANUAL T CNICO DEL AGENTE En este manual se hablar de cada una de las clases que se usan en el agente as como del c digo usado y su explicaci n Clase ProcesosReplicacion Esta clase ser la encargada de replicar la informaci n en los archivos sql siempre y cuando exista comunicaci n con el servidor El c digo es el siguiente import java sql import java io File import java io IOException import java io BufferedReader import java io FileReader public class ProcesosReplicacion extends LecturaConfiguraciones protected int indiceDsn La variable indiceDsn se va a usar para accesar a los arreglos de la clase LecturaConfiguraciones ya que podemos tener uno o m s DSN s y poder tomar la 33 informaci n correcta del mismo DSN podremos notar estos arreglos m s adelante LecturaConfiguraciones lecturaCL public Procesos
22. ection conn null Statement instruccion ResulSet tabla String linea directorioLog File directorio directoriolog lecturaCL rutaLogs indiceDsn lecturaCL dsn indiceDsn File separator lecturaCL dsn indiceDsn log directorio new File directorioLog String ficheros directorio list Tomamos todos los archivos que se encuentren dentro del directorio y los leemos uno por uno para empezar la replicaci n 36 for int i 0 i lt ficheros length i try BufferedReader br new BufferedReader new FileReader directorioLog ficheros i while linea br readLine null try cadenaConexion jdbc mysal super ipReplicacion this indiceDsn super baseDatos this indiceDsn user super usuario this indiceDsn 8 password super contrasefia indiceDsn conn DriverManager getConnection cadenaConexion instruccion conn createStatement tabla instrucci n executeQuery linea catch SQLException ex Leemos y ejecutamos linea por linea hasta haber terminado todos los archivos 37 catch IOException e Clases LecturaLogs Esta clase va a leer el log que va a ser generado por cada DSN import java io File import java io L OException import java io RandomAccessFile public class LecturaLogs extends Thread protected Thread hiloLectura protected int indiceDsn LecturaConfiguraciones lecturaCL public LecturaLogs int indic
23. ello como requisito previo para optar por el t tulo de Ingeniero cuyo problema es AUMENTO DE LA DISPONIBILIDAD DE BASES DE DATOS MYSQL UTILIZANDO UNA CONFIGURACI N DE BASE EN MODO DE ESPERA E INSTALACI N DE AGENTES PARA AUTOMATIZAR CONEXIONES considero aprobado el trabajo en su totalidad Presentado por Poll Miguel Cede o Tello 0922634670 Apellidos y Nombres completos C dula de ciudadan a N Tutor Ing Raynaud Quiroz Guayaquil de NDICE GENERAL CAR TULA CARTA DE ACEPTACI N DEL TUTOR DEDICATORIA TRIBUNAL RESUMEN ABSTRACT CERTIFICADO DE APROBACI N NDICE GENERAL NDICE DE GR FICOS RESOLUCI N DEL PROYECTO MANUAL DE USUARIO DEL ODBC MANUAL T CNICO DEL ODBC MANUAL DE USUARIO DEL AGENTE MANUAL T CNICO DEL AGENTE vi vii viii 12 15 30 33 viii 1X INDICE DE GRAFICOS Pag Gr fico 1 3 Estado del Maestro Show Master Status Grafico 2 5 Base de datos data creada Grafico 3 6 Base de datos data replicada Gr fico 4 7 Plug in s instalados Gr fico 5 9 Replicaci n semi s ncrona maestro Gr fico 6 9 Replicaci n semi s ncrona esclavo Gr fico 7 10 Registro de la base de datos Maestro Gr fico 8 12 Configurando el conector ODBC Gr fico 9 13 Activando la opci n Log queries by PID and DSN Gr fico 10 14 Archivos donde se guardan las transacciones y el log del DSN Gr fico 11 16 Abriendo el c digo fuente del ODBC Gr fico 12 16 Secci n DEBUG en ODB
24. en el esclavo ejecutamos mysql gt set global rpl_semi_sync_slave enabled 1 Al igual que en el maestro se debe indicar que la replicaci n semi s ncrona est activada Ahora debemos re inicializar el hilo de entrada y salida del esclavo mysql gt stop slave io thread start slave io thread Ahora procederemos a hacer una prueba para comprobar el funcionamiento como estamos en un ambiente de prueba la replicaci n debe hacerse casi inmediata por esto vamos a hacer 3 sentencias en el maestro Gr fico 5 Replicaci n semi s ncrona maestro l root proyecto usr local mysql 1X Archivo Editar Ver Terminal Solapas Ayuda mysql gt select from bodega BOD ID BOD_NOM BOD LOC I 1 ARCHIVO BANCO CENTRAL ARCHIVO BANCO CENTRAL 2 ARCHIVO SUPER BANCOS ARCHIVO SUPER BANCOS 2 rows in set 0 00 sec Tel mysql gt insert into bodega values 3 ARCHIVO BANCO A2UAY ARCHIVO BANCO AZUAY Query OK 1 row affected 0 00 sec mysql gt insert into bodega values 4 ARCHIVO BANCO PICHINCHA ARCHIVO BANCO PICHINCHA Query OK 1 row affected 0 00 sec mysql gt delete from bodega where BOD_ID 3 Query OK 1 row affected 0 00 sec mysql gt select from bodega 4 BOD ID
25. erver localhost Port 3306 User root Password rrr Database data y Test Details gt gt Cancel Help 12 Se nos desplegar un anexo a la ventana conteniendo varias pesta as Seleccionamos la pesta a Debug y damos click para activar la casilla Log queries by PID and DSN finalmente damos click en el bot n OK para guardar las configuraciones realizadas Gr fico 9 Activando la opci n Log queries by PID and DSN Flags 1 Flags 2 Flags 3 Debug SSL Settings Misc Options I Log queries to myodbc sql Dentro del directorio c log_queries crearemos un nuevo directorio nueva carpeta con el mismo nombre del DSN que creamos anteriormente aqu se guardar n todas las transacciones generadas en archivos con extensi n sql y sus nombres van a estar dados de la siguiente manera mylog_NombreDeLaBaseDeDatos_PIDdelPrograma EI PID de un programa es el identificador del proceso con que se ejecuta el programa 13 Dentro de la carpeta tambi n se crear un archivo con el nombre del DSN y de extensi n log Este archivo nos indicar si las transacciones est n siendo ejecutadas correctamente grabando el estado de TRANSACCION OK y en caso de que haya habido un error se grabar el estado ERROR Gr fico 10 Archivos donde se guardan las transacciones y el log del DSN Edici n Ver Favoritos Archivo Q atr s amp A B squeda Direcci n
26. ew FileReader archivoParametros while linea br readLine null if linea startsWith if linea startsWith dsn cantidad_dsn catch IOException e 43 dsn new String cantidad dsn ipServidor new String cantidad dsn puerto new String cantidad_dsn usuario new String cantidad_dsn contrase a new String cantidad_dsn baseDatos new String cantidad_dsn rutaLogs new String cantidad_dsn ipReplicacion new String cantidad_dsn replicacionAutomatica new String cantidad_dsn Se van a crear arreglos de variables dependiendo de cu ntas configuraciones de DSN s se van a encontrar en el archivo Par metros txt try inti 1 br new BufferedReader new FileReader archivoParametros while linea br readLine null if linea startsWith if linea startsWith dsn i 44 br close dsn i linea substring linea indexOf 1 if linea startsWith ipServidor amp amp i 1 pServidor i linea substring linea indexOf 1 if linea startsWith puerto amp amp i 1 puerto i linea substring linea indexOf 1 if linea startsWith usuario amp amp i 1 usuario i linea substring linea indexOf 1 if linea startsWith contrasefia amp amp i 1 contrase ali linea substring linea indexOf 1 if linea startsWith baseDatos amp amp i 1 baseDat
27. formation can be replicated and this time will depend on several factors such as hardware software configurations for these reasons it may be the case when comes the moment to replicate the information this information does not arrive or arrive incomplete The solution that arises is to extract customer queries that are send to the database and save in files to achieve this we proceeded with the release of the ODBC code source also adding a function which will be indicate if queries are running correctly otherwise if you cannot run it will write an error message in a register held by the name of the DSN It will install both agents clients like a slave server The agent may be found on the slave communication registers you with the teacher if you were to lose the communication was made necessary settings for the server to work as a teacher in order to receive the queries sent by all clients The agent on the client will be responsible for reading the record with the name of the DSN to detect any error messages shall carry out processes to replicate the information stored so that no loss of it vil CERTIFICADO DE ACEPTACI N DEL TUTOR En mi calidad de Tutor del Primer Curso de Fin de Carrera nombrado por el Departamento de Graduaci n y la Direcci n de la Carrera de Ingenier a en Sistemas Computacionales de la Universidad de Guayaquil CERTIFICO Que he analizado el Proyecto de Grado presentado por el la egresado a Poll Miguel Cede o T
28. nsultas se est n ejecutando correctamente caso contrario si alguna no se puede ejecutar se escribir un mensaje de error en un registro que llevar el nombre del DSN Se proceder a la instalaci n de agentes tanto en los clientes como en un servidor esclavo El agente que se encontrar en el servidor esclavo estar censando la comunicaci n con el maestro si se llegara a perder la comunicaci n se realizar n las configuraciones necesarias para que el servidor funcione como maestro para as poder recibir las consultas enviadas por todos los clientes El agente en el cliente va a estar encargado de leer el registro con el nombre del DSN al detectar alg n mensaje de error proceder a realizar procesos para replicar la informaci n almacenada para que as no exista p rdida de esta vi UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEM TICAS Y F SICAS CARRERA DE INGENIER A EN SISTEMAS COMPUTACIONALES AUMENTO DE LA DISPONIBILIDAD DE BASES DE DATOS MYSQL UTILIZANDO UNA CONFIGURACI N DE BASE EN MODO DE ESPERA E INSTALACI N DE AGENTES PARA AUTOMATIZAR CONEXIONES MySQL is one of the free data base and open source used in many workplaces It has different useful tools for each Workplace This project seeks to improve one of the area of MySQL that is the replication The problem is that the method of replication is asynchronous this means that is not immediate and it needs to expect a certain amount of time in order to that this in
29. ocedemos a agregar a la cadena que escribe en los registros nuestra variable creada 19 static const SQLWCHAR dsnparams W_DSN W DRIVER W DESCRIPTION W SERVER W UID W PWD W DATABASE W SOCKET W INITSTMT W PORT W_OPTION W_CHARSET W_REPLICATION_SERVER W_SSLKEY W_SSLCERT W_SSLCA W_SSLCAPATH W_SSLCIPHER W_SSLVERIFY W_READTIMEOUT W_WRITETIMEOUT W_FOUND_ROWS W BIG PACKETS W NO PROMPT W DYNAMIC CURSOR W NO SCHEMA W NO DEFAULT CURSOR W NO LOCALE W_PAD SPACE W FULL COLUMN NAMES W COMPRESSED PROTO W IGNORE SPACE W NAMED PIPE W NO BIGINT W_NO_CATALOG W_USE_MYCNF W_SAFE W_NO_TRANSACTIONS W_LOG_QUERY W LOG QUERIES BY PID DB W NO CACHE W FORWARD CURSOR W_AUTO_RECONNECT W AUTO IS NULL W ZERO DATE TO MIN W MIN DATE TO ZERO 20 W MULTI STATEMENTS W_COLUMN_SIZE_S32 W_NO_BINARY_RESULT W_DFLT_BIGINT BIND STR W_ACTIVE_SERVER En el mismo archivo dentro de la funci n void ds_map_param DataSource ds const SQLWCHAR param SQLWCHAR strdest unsigned int intdest BOOL booldest Agregamos lo siguiente else if sqlwcharcasecmp W_LOG_QUERY param booldest 8ds gt save queries else if sqlwcharcasecmp W_LOG_QUERIES BY _PID DB param booldest amp ds gt save_queries_by_pid_db else if sqlwcharcasecmp W_NO CACHE param booldest amp ds gt dont_cache result En la funci n int ds_add DataSource ds 21 Agregamos if ds_add
30. os if ds gt save_queries by pid db printf XtLOG_QUERIES_BY_PID DBAn Estos son los cambios necesarios para guardar y extraer de los registros el valor del checkbox al momento de activar esta opci n Gr fico 14 Registro agregado en Windows 2 Editor del Registro Archivo Edici n Ver Favoritos Ayuda a E mec Nombre Tipo Datos E HKEY_CLASSES_ROOT ab Predeterminado REG_SZ valor no establecido ig HKEY_CURRENT_USER lab DATABASE REG 57 data a a HKEY_LOCAL_MACHINE ab Driver REG_SZ C WINDOWS system32 myodbc5 dll H HARDWARE E G SAM Ex REG_SZ 1 Y SECURITY ab PORT REG_52 3306 SOFTWARE ab Pwp REG 52 agente86 Ga C07Ft5y ab SERVER REG_SZ localhost A Classes ab UID REG_5Z agente J Clients A Gemnlic 24 Ahora hay que escribir lo que van a hacer estas funciones En la archivo C mysql connector odbc 5 1 6 driver driver h definimos las siguientes macros Hif defined APPLE define DRIVER _QUERY_LOGFILE tmp myodbc sql define DRIVER_BACKUP_ FOLDER tmp log queries elif defined _UNIX_ define DRIVER _QUERY_LOGFILE tmp myodbc sql define DRIVER_BACKUP_ FOLDER tmp log queries else define DRIVER _QUERY_LOGFILE c myodbc sql define DRIVER_BACKUP_FOLDER c log queries endif Esta es la carpeta donde se guardar n las sentencias En el archivo C mysql connector odbc 5 1 6 driver myutil h agregamos 25 define MYLOG BACKUP QUERY
31. os i linea substring linea indexOf 1 if linea startsWith rutaLogs amp amp i 1 rutaLogs i linea substring linea indexOf 1 if linea startsWith ipReplicacion amp amp i 1 ipReplicacion i linea substring linea indexOf 1 if linea startsWith replicacionAutomatica amp amp i 1 replicacionAutomatica i linea substring linea indexOf 1 45 catch IOException e Este ultimo proceso va a indicar que cada vez que se encuentre una linea del parametro dsn comience a guardarlo en el numero x de los arreglos Clase AgenteCliente Esta clase va a llevar la funci n main y es la que inicia todo el proceso creando e iniciando los objetos de las otras clases que se van a usar Su c digo es el siguiente public class AgenteCliente public static void main String arg LecturaConfiguraciones lecturaC new LecturaConfiguraciones Creamos e iniciamos el objeto de la clase LecturaConfiguraciones para leer los par metros del archivo Par metros txt as como inicializar par metros globales for int i 0 i lt lecturaC cantidad_dsn i System out println i LecturaLogs lecturaL new LecturaLogs i lecturaL start 46 Tambi n creamos un objeto de la clase LecturaLogs por cada configuraci n de DSN encontrado e inicializamos los hilos para que empiecen a leer los logs 47
32. raCL saltoLinea raf seek lineaPoslnicial raf writeBytes escribirLinea raf seek lineaPosFinal raf close 40 catch IOException e public void run synchronized this while true leerLog try Thread sleep 3 1000 catch InterruptedException ex Aqui procedemos a leer los archivos indefinidamente hasta que se termine la ejecuci n del agente 41 Clase LecturaConfiguraciones Esta clase es la que va a leer las configuraciones iniciales del archivo Par metros txt import java io FileReader import java io BufferedReader import java io OException public class LecturaConfiguraciones protected String archivoParametros protected String saltoLinea protected String dsn protected String ipServidor protected String puerto protected String usuario protected String contrase al protected String baseDatos protected String rutaLogs protected String ipReplicacion protected String replicacionAutomatical protected int cantidad dsn 42 public LecturaConfiguraciones String linea BufferedReader br cantidad dsn 0 archivoParametros System getProperty archivo_parametros Es el par metro que se le env a al momento de ejecutar la clase desde linea de comando va a guardar la direcci n donde se encuentran las configuraciones saltoLinea System getProperty line separator try br new BufferedReader n
33. s C my_bugl 3 66 i E CMake ts ixt ir b k SB sue Fl e my_buk c 2 El CMake steixt Qa a my cazaog 3 Soszarles gala i El cake sts irt iS EH ry cure 3 E So r sFles EJ d ee B row okat fiom alada i 4 fede Derritior vindoa Col Ercwsar E vutput Boo marta Sf Find Rcsul s 1 Peacy Ahora lo primero vamos a poner la opci n que vamos a crear dentro la secci n Debug en Details del ODBC ya que se relaciona con lo que vamos a hacer Gr fico 12 Secci n DEBUG en ODBC Flags 1 Flags 2 Flags3 Debug ss Settings Misc Options T Log queries to myodbc sql 7 ee 16 Primero en el archivo C mysql connector odbc 5 1 6 setupgui windows resource h agregamos una variable para el checkbox siguiendo el formato de variables creadas define IDC CHECK save queries by pid db 10040 Ya que los archivos que se van a guardar deben diferenciarse por la aplicaci n que se usa y por la base de datos para que no interfiera en las sentencias generada por otras aplicaciones Ahora procedemos a crear el checkbox dentro de la pesta a Debug para esto editamos el archivo C mysql connector odbc 5 1 6 setupgui windows odbcdialogparams rc IDD TABA DIALOGEX 0 0 209 151 STYLE DS SETFONT DS FIXEDSYS WS CHILD FONT 8 MS Shell Dlg 400 0 0x1 BEGIN CONTROL Log queries to myodbc sql IDC CHECK save queries Button BS AUTOCHECKBOX WS _TABSTOP 12 12 148 10 17

Download Pdf Manuals

image

Related Search

Related Contents

Manuel d`utilisation  Olympus Stylus 410 Digital Quick Start Guide  Projet Ecoparc Neuchâtel (Suisse)  QUASAR - 400W MAX Z-12012-A  dl05dr-d i/o specifications  MANUEL D`UTILISATION SHINDAIWA TRONÇONNEUSE  Epson T5270 User's Guide  IT - Scorpio Polska  

Copyright © All rights reserved.
Failed to retrieve file