我有一个问题想知道我应该选择的最佳解决方案是什么。
我在同一个千兆网络上的不同机器上有两个 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 上联合它。
如果您需要更多信息,请与我们联系。
多谢 !。