0

我有一个问题想知道我应该选择的最佳解决方案是什么。

我在同一个千兆网络上的不同机器上有两个 MariaDB 数据库,都在 centos 7 上运行 MariaDB 10.1.8

一个是 Web 数据库,另一个是 FreeRadius 数据库。

Web 数据库大约 8GB,使用工作台我可以看到每秒大约 18 次 InnoDB 写入。Web 数据库机器是 50GB 磁盘,8Gb Ram,4xCPU 在 PRTG 上,Web 数据库选择传感器延迟大约 140ms-203ms

Radius 数据库大约 20GB,使用工作台我可以看到每秒大约 28 次 InnoDB 写入。Radius 数据库机器是 100GB 磁盘,16GB 内存,6xCPU 在 PRTG 上,Web 数据库选择传感器延迟大约 140ms-300ms

我认为 Radius 数据库通常比 Web 数据库更常用。

现在的问题是我需要创建一个用户每天访问的表。

我需要这个表由 2 个数据库共享,并且能够从两台机器插入数据。

有时网络服务器会先插入,有时是半径服务器会插入它们。Radius Server 将在该表上执行大部分插入操作。这是我需要填充的表

CREATE TABLE `visitas` (
  `idUsuario` int(10) unsigned NOT NULL,
  `idInstalacion` int(10) unsigned NOT NULL,
  `fVisita` date DEFAULT NULL,
  `tAcceso` varchar(25) DEFAULT NULL,
  `nUpdates`  int(10) unsigned NOT NULL,
  UNIQUE KEY `Visitas` (`idUsuario`,`idInstalacion`,`fVisita`),
  KEY `idUsuario` (`idUsuario`),
  KEY `idInstalacion` (`idInstalacion`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

所以我创建的是半径服务器上的触发器,用于在访问时插入(重复密钥更新)。这很完美。

DELIMITER $$;
create TRIGGER UpdateVisitas AFTER INSERT ON radacct
FOR EACH ROW 
BEGIN
    INSERT into visitas (
       select u.department as idUsuario,u.company as idInstalacion,DATE(r.acctstarttime) as fVisita,'Radius' as tAcceso,0 as nUpdates    from radacct r,userinfo u where r.username=u.username  and r.radacctid=NEW.radacctid     
    ) ON DUPLICATE KEY UPDATE visitas.tAcceso='Radius',nUpdates=(1+nUpdates) ;
END$$

现在的问题是我需要 FEDERATEDX 这个表能够从半径服务器和 Web 服务器插入并与来自 Web 服务器的其他表连接。

插入将主要从 Radius 完成,使用连接进行统计选择将主要从 Web 完成。

因此,根据所有这些信息,最好在 Radius Server 上创建 Visit 表,并以其他方式在 Web Server 上联合它。

如果您需要更多信息,请与我们联系。

多谢 !。

4

0 回答 0