我有一个主要的MySQL数据库,其中一个车表中有以下列:
+---------------+-----------------+------+ |carId |name |model | +---------------+-----------------+------+ |1 |ford |focus | |2 |Toyota |Yaris | +---------------+-----------------+------+
这是我想要实现的:
我想在其他一些msql服务器中创build新的数据库,并想创build如上所述的同一个表,并且希望在新车表中添加以下列
+---------------+-----------------+------------+-----------+------------+ |carId |name |model |make |workHistory | +---------------+-----------------+------------+-----------+------------+ |1 |ford |focus |2001 |yes | |2 |Toyota |Yaris |2002 |no | +---------------+-----------------+------------+-----------+------------+
carId , name和model列的数据。 并且只想将列( make , workHistory )的数据插入到新的数据库车表中。 所以这个新车表将结合来自主MySQL数据库和新数据库的数据。 这不是关于复制 – 只是使用一个额外的表:
CREATE TABLE car_more ( carId INT NOT NULL, make INT, workHistory PRIMARY KEY (carId) );
如果引用的数据库(是指数据库还是表?)位于mysql的单独实例中,则使用联合引擎提供对现有表的远程访问。 那么你可以使用….访问数据
SELECT a.carId, a.name, a.model, b.make, b.workHistory FROM car a LEFT JOIN car_more b ON (a.carId=b.carId);
如果它们在同一个mysq实例上,那么只需在数据库名称前添加表名:
SELECT a.carId, a.name, a.model, b.make, b.workHistory FROM maindb.car a LEFT JOIN alternatedb.car_more b ON (a.carId=b.carId);
(你可以使用mysql的amster-master复制来维护汽车表的本地副本 – 但是这更复杂)
首先是数据库devise。 为什么只需workHistory数据库中的make和workHistory列? 它看起来像他们是相关的,并在与其他列的数据一对一的关系。 从逻辑上说,这些数据属于一起…为什么要将它分开?
在数据库pipe理方面,更容易获得一个复制的所有数据的规范拷贝。
其次,你打算写入第二个数据库还是只读取它? 只读是更容易pipe理。
假设你想要一个只读的从站,按照正常的方式设置复制,并确保从站的权限只允许SELECT 。
如果您不想在主表中添加额外的列,请使用carId , model和workHistory创build第二个表,然后创build一个视图 ,将它们连接到carId 。
如果你想写奴隶,你将需要多主复制或类似的东西。 这更复杂。 如果这是你想要的,我会添加更多。