Scratch es el nombre de una base de datos usada como espacio de intercambio de información entre nodos de réplica, así como un lugar para almacenar toda la información de configuración de uno o varios servidores de réplica.

Antiguamente, la configuración del servicio del replicador se realizaba empleando los siguientes ficheros de datos:

  • Fichero replicator.ini, con todos los parámetros de configuración.
  • La licencia del servidor de réplica, en un fichero con la extensión .LIC
  • Las licencias de los dispositivos que vamos firmando en los diferentes proyectos.
    La estructura de nombres consiste en un nombre de licencia (8 caracteres) y una extensión .000, .001, etc.

NOTA: todos los ficheros de configuración mencionados están ubicados en la carpeta C:\WINDOWS


El uso de estos ficheros implica que cada nodo o servidor de réplica tiene que tener su propio juego de ficheros, que a su vez se usan como espacio de trabajo y por tanto tienen que respaldarse de forma independiente de las bases de datos que se replican.

La herramienta de migración que se explica más abajo, “migra” las licencias actuales de los ficheros binarios de la carpeta Windows a base de datos (campo LDATA en master_replica_slave de los diferentes proyectos), además de rellenar las tablas de SCRATCH con los valores que haya actualmente en el fichero replicator.ini

Cada vez que se soliciten nuevas licencias para una base de datos, lo que se recibirá será un solo fichero de texto con una línea en Base64. El contenido de ese fichero es el que tiene que ponerse en el campo LDATA de la tabla SCRATCH_DATABASES para activar las nuevas licencias.



  • Ya no hay que hacer copia de seguridad de los ficheros de licencias contenidos dentro de la carpeta WINDOWS (fichero .LIC y los ficheros .000, 001, etc).
    Al hacer copia de seguridad de las Bases de Datos, se respalda también la configuración y las licencias de réplica que se firman en el master_replica_slave de cada proyecto.


  • Con esta configuración es más fácil conocer en todo momento el número de licencias en un proyecto o saber cuántas licencias quedan libres, simplemente consultando la tabla master_replica_slave, los registros que tengan relleno el campo LDATA se consideran licencias ocupadas, tengan el campo PENDIENTE=1 ó no.
    Borrando la fila del slave o vaciando el campo LDATA de esa fila, quedaría libre dicha licencia sin tener que enviar comandos al servidor de réplica.


  • Se pueden emplear herramientas externas para gestionar las licencias, configurar el servidor, etc.
    Es mucho más fácil escribir una herramienta que modifique una base de datos que una que trabaje contra un fichero .INI, dejando a un lado el hecho de que las licencias no se pueden administrar con herramientas externas, ya que estaban en ficheros binarios (.000,.001… de la carpeta Windows).
    A partir del momento en que se activa la configuración en base de datos, tanto los partners como los clientes pueden tener sus propias herramientas para administrar el replicador.


Para realizar la migración de las licencias actuales que ya existan dadas de alta en el sistema actual al nuevo sistema, se deben efectuar los siguientes pasos:


1.- Crear BD XOneReplicator
Hay que crear la estructura de tablas de la BD de configuración del servidor de réplica. A esta BD se le puede poner cualquier nombre. La estructura de las tablas está un poco más abajo en esta página. Solamente hay que crear la estructura de las tablas, los datos los rellenará automáticamente la herramienta de migración que se describe en el paso 3, la cual se encargará de leer los parámetros definidos en el replicator.ini y darlos de alta en las tablas correspondientes.


2.- Campo LDATA en MASTER_REPLICA_SLAVE
Crear el campo LDATA (varchar(512)) en la tabla master_replica_slave, en los distintos proyectos a los que da servicio el replicador. Este campo contiene una cadena con la licencia de cada dispositivo (Lo que antiguamente se encontraba en los ficheros binarios .000, .001…etc de la carpeta Windows).


3.- Migración de licencias actuales al nuevo formato
Para hacer una migración de los archivos de licencia al nuevo sistema, se proporciona una herramienta que se encarga de leer la configuración de los ficheros .000, .001, etc y dar de alta las licencias en el campo LDATA de la tabla master_replica_slave de los distintos proyectos. Para descargar esta herramienta acudir a la web XOneSupport.

Esta utilidad también arregla el fichero replicator.ini para apuntar a la base de datos de scratch.


Esta herramienta debe ejecutarse COMO ADMINISTRADOR en la máquina que contenga los ficheros de licencia .000, .001, etc en la carpeta WINDOWS.
En el campo Scratch (1) se indica la cadena de conexión con la base de datos que vaya a contener la configuración del replicador.
En el campo licencia (2), el nombre del fichero .LIC que hay en la carpeta Windows (Licencia del servidor de réplica).

La herramienta recopilará la información de cada una de las licencias que hay actualmente en el fichero replicator.ini, rellenará los campos LDATA de la tabla master_replica_slave así como las diferentes tablas de la base de datos de configuración de réplica(SCRATCH) y configurará el replicator.ini con la cadena de conexión indicada en la ventana de migración. Previamente se sacará una copia del actual fichero replicator.ini, por lo que esta migración es totalmente reversible.

Tras el proceso de migración, se habrá hecho una copia del fichero replicator.ini y se habrá generado también un fichero replicator.migrated, el fichero replicator.ini permanecerá inalterado.

Para finalizar la migración, habrá que renombrar el fichero replicator.migrated a replicator.ini y reiniciar el servicio del replicador para que comience a funcionar con la configuración especificada en Base de Datos.




En todos los proyectos que tengamos, hay que crear un campo LDATA varchar(512) en la tabla Master_Replica_Slave que va a rellenarse cada vez que se firme una licencia nueva de un dispositivo. A partir de que utilizamos la configuración de réplica en base de datos, se considera una licencia en uso, todo registro del master_replica_slave que tenga este campo relleno, da igual el valor del campo PENDIENTE. Para liberar una licencia, borraremos el registro del master_replica_slave o vaciaremos el valor del campo LDATA del dispositivo que queremos liberar su licencia.


Para activar la configuración en base de datos, en el replicator.ini se indica únicamente la cadena de conexión a la base de datos Scratch y toda la configuración restante va en dicha Base de Datos.

[server]
Scratch=Provider=System.Data.OracleClient;Data Source=BDQUESEA;User ID=USUARIOQUESEA;Password=PASSQUESEA;Max Pool Size=100
Node=1
ScratchDatemask=dmy



La estructura de las tablas de la base de datos de configuración de la réplica es la siguiente:

TABLA DESCRIPCIÓN
SCRATCH_CONFIGURATION Tabla de configuración con los valores que había antiguamente en la sección [server] del fichero replicator.ini
SCRATCH_DATABASES Tabla de configuración con las distintas licencias de Base de Datos a las que va a dar servicio el servidor de réplica.
Se les asocia un DBID para referirnos a ellas posteriormente desde la tabla SCRATCH_DBCONFIG.
Hay un campo LDATA que tendrá un valor u otro dependiendo del número de licencias máximo que permita el proyecto.
SCRATCH_DBCONFIG Tabla de configuración con los distintos valores asociados a un proyecto, cada valor irá asociado con un DBID.
Corresponde a los valores que antiguamente se asociaban en la sección [DBID-1] del replicator.ini
SCRATCH_KEYNAME Tabla meramente informativa con los diferentes atributos que existen para el replicador.
Los atributos de tipo 0 son atributos del servidor (tabla SCRATCH_DATABASES), los de tipo 1 son asociados a los atributos propios de configuración de una base de datos(SCRATCH_DBCONFIG), los de tipo 2 son los tipos de conexiones, y los de tipo 3 son los Provider.
SCRATCH_NODES Conexión con los diferentes nodos (si hubiera más de uno en cluster)
SCRATCH_ROWID_POOL Tabla de sistema, no se configura nada.
SCRATCH_SESSIONS Tabla de sistema, no se configura nada.


Creación de tablas en MYSQL

CREATE TABLE SCRATCH_CONFIGURATION ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, NID INT NULL , KEYNAME VARCHAR(50) NULL , 
KEYVALUE VARCHAR(50) NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_DATABASES ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, NID INT NULL , DBID INT NULL , LICENSE VARCHAR(50) NULL , 
SL INT NULL ,     IQ INT NULL , LZ INT NULL , MNAME VARCHAR(50) NULL , LDATA VARCHAR(255) NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_DBCONFIG ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, DBID INT NULL , NID INT NULL , KEYNAME VARCHAR(50) NULL , 
KEYVALUE VARCHAR(150) NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_KEYNAME ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, TIPO INT NULL , KEYNAME VARCHAR(50) NULL , KEYVALUE VARCHAR(50) NULL ,
DESCRIPTION VARCHAR(250) NULL , BAJA INT NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_NODES ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, ACTIVE INT NULL , NID INT NULL , IP VARCHAR(50) NULL , LS INT NULL , 
MNAME VARCHAR(150) NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_ROWID_POOL ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, NID INT NULL , DBID INT NULL , RID VARCHAR(150) NULL , 
TAG VARCHAR(50) NULL , TS datetime NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;
 
CREATE TABLE SCRATCH_SESSIONS ( ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, TS datetime NULL , SID VARCHAR(150) NULL , DBID INT NULL , 
MID INT NULL , BC INT NULL , BS INT NULL , BV INT NULL , CK VARCHAR(150) NULL , CRHST INT NULL , PP INT NULL , SK VARCHAR(150) NULL , 
CRYPT INT NULL , ROWID VARCHAR(60) NULL  ) engine=MYISAM;


Creación de tablas en SQL SERVER

CREATE TABLE SCRATCH_CONFIGURATION ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, NID INT NULL , KEYNAME VARCHAR(50) NULL , 
KEYVALUE VARCHAR(50) NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_DATABASES ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, NID INT NULL , DBID INT NULL , LICENSE VARCHAR(50) NULL , 
SL INT NULL ,     IQ INT NULL , LZ INT NULL , MNAME VARCHAR(50) NULL , LDATA VARCHAR(255) NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_DBCONFIG ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, DBID INT NULL , NID INT NULL , KEYNAME VARCHAR(50) NULL , 
KEYVALUE VARCHAR(150) NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_KEYNAME ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, TIPO INT NULL , KEYNAME VARCHAR(50) NULL , KEYVALUE VARCHAR(50) NULL ,
DESCRIPTION VARCHAR(250) NULL , BAJA INT NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_NODES ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, ACTIVE INT NULL , NID INT NULL , IP VARCHAR(50) NULL , LS INT NULL , 
MNAME VARCHAR(150) NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_ROWID_POOL ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, NID INT NULL , DBID INT NULL , RID VARCHAR(150) NULL , 
TAG VARCHAR(50) NULL , TS datetime NULL , ROWID VARCHAR(60) NULL  );
 
CREATE TABLE SCRATCH_SESSIONS ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, TS datetime NULL , SID VARCHAR(150) NULL , DBID INT NULL , 
MID INT NULL , BC INT NULL , BS INT NULL , BV INT NULL , CK VARCHAR(150) NULL , CRHST INT NULL , PP INT NULL , SK VARCHAR(150) NULL , 
CRYPT INT NULL , ROWID VARCHAR(60) NULL  );


Vista de tablas

SCRATCH_CONFIGURATION

Configuración de los parámetros del servidor de réplica


SCRATCH_DATABASES

Diferentes proyectos (DBID), a los que da servicio el replicador


SCRATCH_DBCONFIG

Configuración de parámetros para los diferentes proyectos (DBID)


SCRATCH_KEYNAME

Tabla informativa con los parámetros disponibles


SCRATCH_NODES



El campo LDATA de scratch_databases es la licencia del servidor de réplica que antiguamente se almacenaba en el fichero .LIC, combinado con un resumen de todos los ficheros binarios .000, .001 etc de la carpeta Windows.

NO confundir los campos LDATA de master_replica_slave (licencia individual de cada dispositivo) con el campo LDATA de SCRATCH_DATABASES (Licencia de Base de datos / Número de licencias disponibles en un proyecto)

Cada vez que se soliciten nuevas licencias para una base de datos, lo que se recibirá será un solo fichero de texto con una línea en Base64. El contenido de ese fichero es el que tiene que ponerse en el campo LDATA de la tabla SCRATCH_DATABASES para activar las nuevas licencias.