Ir al contenido principal

Agregar base de datos auxiliar

Al agregar un servidor de comunicación, agrega y conecta una base de datos auxiliar para reducir la carga en el servidor principal.

Información
  • Necesitas una licencia de servidor de comunicación múltiple para agregar una base de datos auxiliar. Para más información sobre la política de licencias, consulta lo siguiente.

  • Para obtener más información sobre la instalación de un servidor de comunicación, consulta lo siguiente.

Antes de comenzar

Si usas un dominio o nombre de host en lugar de una dirección IP para la comunicación entre bases de datos en un entorno MariaDB, asegúrate de revisar la siguiente guía.

  • Si no utilizas una dirección IP, puede que no sea posible ejecutar Create user o Grant.

  • Si la comunicación se realiza mediante un dominio o nombre de host, asegura que el usuario y los permisos estén registrados para localhost.

  • Si instalaste BioStar X mediante el método de instalación conveniente, la cuenta root está registrada solo para localhost, por lo que debes agregar la dirección IP del servidor o 127.0.0.1.

Método de registro

Verifica si hay una contraseña establecida para la cuenta con Host 127.0.0.1 y Usuario root; si no existe, establece una contraseña y otorga permisos.

  1. Verifica si hay una contraseña establecida para la cuenta con Host 127.0.0.1 y Usuario root.

    SELECT * FROM mysql.user;

    Si está en blanco, la contraseña no está establecida; ejecuta la consulta en los siguientes elementos para agregar una contraseña y otorgar permisos.

  2. Establece una contraseña y otorga permisos para la cuenta con Host 127.0.0.1 y Usuario root.

    ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';

    CREATE USER '<Main DB AC User>'@'127.0.0.1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB AC User>'@'127.0.0.1';
    CREATE USER '<Main DB AC User>'@'::1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB AC User>'@'::1';

    CREATE USER '<Main DB TA User>'@'127.0.0.1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB TA User>'@'127.0.0.1';
    CREATE USER '<Main DB TA User>'@'::1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB TA User>'@'::1';

    CREATE USER '<Main DB VE User>'@'127.0.0.1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB VE User>'@'127.0.0.1';
    CREATE USER '<Main DB VE User>'@'::1' IDENTIFIED BY '<Main DB AC Schema Password>';
    GRANT ALL PRIVILEGES ON *.* TO '<Main DB VE User>'@'::1';

    FLUSH PRIVILEGES;
    Example
    ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'admin1234!';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';
    FLUSH PRIVILEGES;

Configuración de comunicación mediante dirección IP

Las siguientes configuraciones pueden forzar la comunicación mediante dirección IP.

  1. Después de instalar BioStar X, dirígete a la siguiente ruta.

    C:\Program Files\BioStar X\ta\mariadb-11.4.4-winx64

  2. Abre el archivo my.cnf con permisos de propietario y agrega la opción skip-name-resolve a la sección [mysqld].

    [mysqld]
    port = 3312
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    socket = /tmp/mysql.sock
    skip-external-locking
    key_buffer_size = 32M
    max_allowed_packet = 64M
    ...
    skip-name-resolve
  3. Reinicia el servicio de MariaDB.

Agregar base de datos auxiliar

Esta sección brinda orientación sobre cómo agregar una base de datos auxiliar. Según el tipo de base de datos que se utilice, existen dos métodos: MariaDB y SQL Server.

MariaDB

Base de datos principal

Otorga la cuenta y los permisos para acceder a la base de datos principal desde la nueva base de datos auxiliar.

CREATE USER '<Main DB AC Schema User>'@'<Sub DB IP>' IDENTIFIED BY '<Main DB AC Schema Password>';

GRANT ALL PRIVILEGES ON <Main DB AC Schema>.* TO '<Main DB AC Schema User>'@'<Sub DB IP>';
FLUSH PRIVILEGES;
Example
CREATE USER 'biostarx_ac_user'@'192.168.12.42' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON biostar2_ac.* TO 'biostarx_ac_user'@'192.168.12.42';
FLUSH PRIVILEGES;

Base de datos auxiliar

Otorga la cuenta y los permisos para acceder a la nueva base de datos auxiliar desde la base de datos principal.

CREATE USER '<Sub DB AC Schema User>'@'<Main DB IP>' IDENTIFIED BY '<Sub DB AC Schema Password>';

GRANT ALL PRIVILEGES ON <Sub DB AC Schema>.* TO '<Sub DB AC Schema User>'@'<Main DB IP>';
FLUSH PRIVILEGES;
Example
CREATE USER 'biostarx_ac_user'@'192.168.12.161' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON biostar2_ac.* TO 'biostarx_ac_user'@'192.168.12.161';
FLUSH PRIVILEGES;

Verificar el uso de FederatedX

Ejecuta el siguiente comando tanto en la base de datos principal como en la auxiliar para verificar si el motor de almacenamiento FederatedX está habilitado.

SHOW ENGINES;

Si el resultado de la consulta muestra Engine : FEDERATED, Support : YES, ya está instalado. Si el motor de almacenamiento FederatedX no está instalado, ejecuta la siguiente consulta.

INSTALL PLUGIN federated SONAME 'ha_federatedx';
Información

Verifica si el archivo ha_federatedx.dll existe en la carpeta lib/plugin en la ruta donde está instalada MariaDB. Normalmente, el archivo dll se encuentra en la ruta C:\Program Files\MariaDB {version}\lib\plugin.

Registrar alias de servidor

Registra un alias de servidor para que la tabla federatedX creada en la base de datos auxiliar pueda acceder a la tabla origen en la base de datos principal.

CREATE SERVER 'default' FOREIGN DATA WRAPPER mysql OPTIONS (HOST '<Main DB IP>', PORT <Main DB PORT>, DATABASE '<Main DB AC Schema>', USER '<Main DB AC USER>', PASSWORD '<Main DB AC USER Password>');

-- Confirm registration
SELECT * FROM mysql.servers;

Si necesitas cambiar la información de Host, Puerto, BD, Usuario o Contraseña del nombre de servidor registrado, puedes modificarla usando la instrucción Alter. También puedes cambiar solo cierta información.

ALTER SERVER 'default' OPTIONS (HOST '<Main DB IP>', PORT <Main DB PORT>, DATABASE '<Main DB AC Schema>', USER '<Main DB AC USER>', PASSWORD '<Main DB AC USER Password>');
Example
CREATE SERVER 'default' FOREIGN DATA WRAPPER mysql OPTIONS (HOST '192.168.12.161', PORT 3312, DATABASE 'biostar2_ac', USER 'biostarx_ac_user', PASSWORD 'password');

ALTER SERVER 'default' OPTIONS (HOST '192.168.12.161', PORT 3312, DATABASE 'biostar2_ac', USER 'biostarx_ac_usermt__fttid__', PASSWORD 'password');

Configuración de enlace de tablas

Sigue los pasos a continuación para enlazar las tablas necesarias en la base de datos auxiliar con las tablas en la base de datos principal.

  • A continuación se muestra la consulta para generar sentencias CREATE TABLE en la base de datos principal.

    select
    concat(
    'CREATE TABLE IF NOT EXISTS <SubDB_AC_Database_Schema>.', table_name,
    ' ENGINE=FEDERATED ',
    'CONNECTION=''default/', table_name, ''';'
    ) as create_table_sql
    from information_schema.TABLES
    where TABLE_SCHEMA = '<MainDB_AC_Database_Schema>'
    AND TABLE_TYPE = 'BASE TABLE'
    AND NOT TABLE_NAME REGEXP '^t_lg[0-9]{6}$'
    AND NOT TABLE_NAME REGEXP '^t_almevt[0-9]{6}$'
    AND NOT TABLE_NAME REGEXP '^t_lgalmtrstrc[0-9]{6}$'
    ORDER BY TABLE_NAME;
    Información

    Debido a la naturaleza de FederatedX, se recomienda establecer Table_type en 'BASE TABLE'. El VIEW type también es posible, pero no recomendado.

Configuración de Service Manager

  1. Ejecuta BioStar X Service Manager. (Inicio BioStar XBioStar X Service Manager)

  2. Haz clic en el menú DATABASE en la barra lateral izquierda.

  3. Haz clic en el botón + Add Database en la esquina superior derecha de la pantalla.

  4. Ingresa cada elemento en la pantalla de adición de base de datos.

    • Name: Ingresa el nombre de la base de datos.

    • Description: Ingresa la descripción de la base de datos.

    • DB Type: Selecciona el tipo de base de datos. (Maria, MS SQL)

    • Host: Ingresa el nombre de host o la dirección IP del servidor de bases de datos.

    • Port: Ingresa el número de puerto del servidor de bases de datos.

    • AC / TA: Ingresa el nombre, usuario y contraseña de las bases de datos AC y TA.

  5. Haz clic en el botón Test Connection en la esquina superior derecha para comprobar si la base de datos está correctamente conectada.

  6. Haz clic en Save en la parte superior derecha de la pantalla para guardar la configuración.

SQL Server

Otorgar permisos para la base de datos principal

Concede los siguientes permisos en la base de datos principal con una cuenta que tenga privilegios de sysadmin.

GRANT ALTER ANY LINKED SERVER TO [<MAIN DATABASE AC USER>];
GRANT ALTER ANY LOGIN TO [<MAIN DATABASE AC USER>];
Example
GRANT ALTER ANY LINKED SERVER TO [biostar_x_user];
GRANT ALTER ANY LOGIN TO [biostar_x_user];

Otorgar permisos para la base de datos auxiliar

  1. Conecta User Mapping para las tablas y usuarios en la base de datos auxiliar con una cuenta que tenga privilegios de sysadmin. En este momento, es necesario agregar el rol db_owner.

  2. Otorga los siguientes permisos a la base de datos que se va a agregar.

    GRANT ALTER ANY LINKED SERVER TO [<SUB DATABASE AC USER>];
    GRANT ALTER ANY LOGIN TO [<SUB DATABASE AC USER>];
    Example
    GRANT ALTER ANY LINKED SERVER TO [biostar_x_user_sub];
    GRANT ALTER ANY LOGIN TO [biostar_x_user_sub];

Configuración de Service Manager

Usa BioStar X Service Manager para agregar la base de datos auxiliar.

  1. Ejecuta BioStar X Service Manager. (Inicio BioStar XBioStar X Service Manager)

  2. Haz clic en el menú DATABASE en la barra lateral izquierda.

  3. Haz clic en el botón + Add Database en la esquina superior derecha de la pantalla.

  4. Ingresa cada elemento en la pantalla de adición de base de datos.

    • Name: Ingresa el nombre de la base de datos.

    • Description: Ingresa la descripción de la base de datos.

    • DB Type: Selecciona el tipo de base de datos. (Maria, MS SQL)

    • Host: Ingresa el nombre de host o la dirección IP del servidor de bases de datos.

    • Port: Ingresa el número de puerto del servidor de bases de datos.

    • AC / TA: Ingresa el nombre, usuario y contraseña de las bases de datos AC y TA.

  5. Haz clic en el botón Test Connection en la esquina superior derecha para comprobar si la base de datos está correctamente conectada.

  6. Haz clic en Save en la parte superior derecha de la pantalla para guardar la configuración.

Información
  • Después de completar la configuración, los ajustes de Linked Server para ambas bases de datos, principal y auxiliar, se aplicarán automáticamente.

  • Incluso al modificar la información de la base de datos, los ajustes de Linked Server se cambiarán automáticamente. Al modificar la base de datos principal, los cambios se reflejarán en los ajustes de Linked Server de todas las bases de datos auxiliares registradas. Cuando se modifique la base de datos auxiliar, solo se reflejarán los cambios correspondientes a la base de datos principal y a esa base de datos auxiliar.

Generar la consulta de Linked Temp Table

Ejecuta la siguiente consulta en la base de datos principal para generar la consulta de Linked Temp Table que se creará en la base de datos auxiliar.

USE [<AC Schema>];
GO
DECLARE @LinkedServer sysname = N'default';
DECLARE @SourceSchema sysname = N'dbo';
DECLARE @TargetSchema sysname = N'dbo';

SELECT
'IF OBJECT_ID(N''' + QUOTENAME(@TargetSchema,'') + '.' + QUOTENAME(t.name,'') + ''', ''SN'') IS NOT NULL '
+ 'DROP SYNONYM ' + QUOTENAME(@TargetSchema) + '.' + QUOTENAME(t.name) + ';'
+ 'CREATE SYNONYM ' + QUOTENAME(@TargetSchema) + '.' + QUOTENAME(t.name)
+ ' FOR ' + QUOTENAME(@LinkedServer) + '.' + QUOTENAME(DB_NAME()) + '.' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ';'
AS recreate_synonym_sql
FROM sys.tables AS t
JOIN sys.schemas AS s
ON s.schema_id = t.schema_id
WHERE s.name = @SourceSchema
AND t.is_ms_shipped = 0
AND t.name NOT LIKE 't_lg[0-9][0-9][0-9][0-9][0-9][0-9]'
AND t.name NOT LIKE 't_almevt[0-9][0-9][0-9][0-9][0-9][0-9]'
AND t.name NOT LIKE 't_lgalmtrstrc[0-9][0-9][0-9][0-9][0-9][0-9]'
ORDER BY t.name;
Example
-- Example
USE [main_ac_x_215];
GO
DECLARE @LinkedServer sysname = N'default'; -- Linked Server name set in the sub DB
DECLARE @SourceSchema sysname = N'dbo'; -- Schema to target in the main DB
DECLARE @TargetSchema sysname = N'dbo'; -- Schema to create synonyms in the sub DB (reflected in the output string)

SELECT
'IF OBJECT_ID(N''' + QUOTENAME(@TargetSchema,'') + '.' + QUOTENAME(t.name,'') + ''', ''SN'') IS NOT NULL '
+ 'DROP SYNONYM ' + QUOTENAME(@TargetSchema) + '.' + QUOTENAME(t.name) + ';'
+ 'CREATE SYNONYM ' + QUOTENAME(@TargetSchema) + '.' + QUOTENAME(t.name)
+ ' FOR ' + QUOTENAME(@LinkedServer) + '.' + QUOTENAME(DB_NAME()) + '.' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ';'
AS recreate_synonym_sql
FROM sys.tables AS t
JOIN sys.schemas AS s
ON s.schema_id = t.schema_id
WHERE s.name = @SourceSchema
AND t.is_ms_shipped = 0
AND t.name NOT LIKE 't_lg[0-9][0-9][0-9][0-9][0-9][0-9]'
AND t.name NOT LIKE 't_almevt[0-9][0-9][0-9][0-9][0-9][0-9]'
AND t.name NOT LIKE 't_lgalmtrstrc[0-9][0-9][0-9][0-9][0-9][0-9]'
ORDER BY t.name;

Ejecutar la consulta en la base de datos auxiliar.

Copia por completo la consulta CREATE SYNONYM generada previamente. Conéctate al servidor de base de datos auxiliar que se va a agregar, escribe la consulta como se muestra a continuación y ejecútala. Se almacenará en Synonyms del esquema AC de la base de datos auxiliar.

use [<Sub DB AC Database>];

IF OBJECT_ID(N'[dbo].[T_ACSGR]', 'SN') IS NOT NULL DROP SYNONYM [dbo].[T_ACSGR];CREATE SYNONYM [dbo].[T_ACSGR] FOR [default].[main_ac_x_215].[dbo].[T_ACSGR];
IF OBJECT_ID(N'[dbo].[T_ACSGRLVLS]', 'SN') IS NOT NULL DROP SYNONYM [dbo].[T_ACSGRLVLS];CREATE SYNONYM [dbo].[T_ACSGRLVLS] FOR [default].[main_ac_x_215].[dbo].[T_ACSGRLVLS];
IF OBJECT_ID(N'[dbo].[T_ACSGRSENT]', 'SN') IS NOT NULL DROP SYNONYM [dbo].[T_ACSGRSENT];CREATE SYNONYM [dbo].[T_ACSGRSENT] FOR [default].[main_ac_x_215].[dbo].[T_ACSGRSENT];
IF OBJECT_ID(N'[dbo].[T_ACSGRUSS]', 'SN') IS NOT NULL DROP SYNONYM [dbo].[T_ACSGRUSS];CREATE SYNONYM [dbo].[T_ACSGRUSS] FOR [default].[main_ac_x_215].[dbo].[T_ACSGRUSS];
...
¿Fue útil esta página?