Google Translate:
Un plan de respaldo que no requiera apagar jRDC2 podría ser algo como esto:
1) Pero el servidor jRDC2 está en modo de respaldo. En este modo, todas las solicitudes a / rdc devuelven un código de error 503
2) Utilice la URL / backup para informar a un cliente si se está realizando una copia de seguridad.
Entonces, al recibir un código de error 503, el cliente puede verificar la URL / backup para ver si se está realizando una copia de seguridad (podría ser tan simple como que el servidor devuelva "verdadero" o "falso"
3) En el modo de respaldo, jRDC2 permite finalizar las solicitudes existentes. Nota: sería necesario establecer un mecanismo para rastrear la conexión existente
4) Una vez que todos los clientes hayan terminado (o hayan agotado el tiempo de espera), deje que jRDC2 cierre el grupo y luego copie la base de datos en otra ubicación. El software de copia de seguridad puede hacer una copia de seguridad de los archivos en esta ubicación.
5) Una vez que se haya copiado la base de datos, reinicie el grupo, salga del modo de respaldo y comience a aceptar solicitudes de clientes una vez más
De esta manera, no se necesitan modificaciones en el DBRequestManager real en el lado del cliente. Habría que programar el cliente para poder detectar estas fases de respaldo. Esto se hace comprobando el código HTTP después de que una solicitud no tuvo éxito en el cliente. Si el código HTTP es 503, el cliente puede entonces
a) Informar al usuario que la conectividad de la base de datos no está disponible temporalmente
b) Verifique la URL / backup en el servidor y hágalo cada (solo por ejemplo) 100ms hasta que termine. Luego reanude cualquier actividad de la base de datos
c) Un cliente también siempre puede verificar primero la URL / backup antes de realizar una solicitud. En una red interna, esto no debería plantear problemas de tiempo.
d) Y así sucesivamente ...
==================================================================
Original:
A backup plan that would not require shutting down jRDC2 could be something like this:
1) But jRDC2 server into backup mode. In this mode, all requests to /rdc return a 503 error code
2) Use the /backup URL to let a client know if a backup is happening.
So upon receveing a 503 error code, the client could check the /backup URL to see if a backup is happening (could be as simple as the server returning "true" or "false"
3) In backup mode, jRDC2 allows existing requests to finish. Note: a mechanism for tracking existing connection would need to be established
4) Once all clients are done (or timed out), let jRDC2 close the pool and then copy the database to another location. The files in this location can then be backed up by the backup software
5) Once the database is copied, restart the pool, come out of backup mode and start accepting client requests once more
This way no modifications are needed to the actual DBRequestManager on the client side. One would have to program the client to be able to detect these backup phases. This is done by checking the HTTP code after a request was not succesful on the client. If the HTTP code is 503, the client can then
a) Inform the user that the database connectivity is temporarily unavailabe
b) Check the /backup URL on the server and do so every (just for example) 100ms until done. Then resume any database activity
c) A client could also always first check the /backup URL before doing a request. On an internal network, this should pose no time issues
d) And so on...