我有一个问题要知道我应该选择什么是最佳解决方案。
我在同一千兆网络上的不同机器上有两个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 Ram,6xCPU 在PRTG上,Web数据库选择传感器延迟大约140ms-300ms
我认为Radius数据库通常比网络数据库更常用。
现在问题是我需要创建一个用户每天访问的表格。
我需要这个表由2个数据库共享,并且能够从两台机器插入数据。
有时Web服务器将首先插入,有时将是将插入它们的radius服务器。 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;
所以我创建的是在访问时插入的半径服务器上的TRIGGER(具有重复密钥更新)。这很完美。
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这个表能够从radius服务器和Web服务器插入并与Web服务器中的其他表连接。
插入将主要来自Radius,并且选择带有连接的统计数据将主要来自Web。
因此,根据所有这些信息,最好在Radius服务器上创建Visit表,并在Web服务器上以其他方式联合它。
如果您需要更多信息,请与我们联系。
非常感谢!