需求:同步不同伺服器上的資料庫表的資料。
說明:現有伺服器a,伺服器b。需要在插入(修改|刪除)a上的使用者資料表sourcetable的同時,操作b上使用者表remotetable與a中一致;如:在專案a中註冊使用者後,需要在b中也可以登入。
接下來就使用mysql的federated引擎以及觸發器實現該需求。
federated引擎:federated就像他的名字所說「聯盟」,其作用就是把兩個不同區域的資料庫聯絡起來,以至可以訪問在遠端資料庫的表中的資料,而不是本地的表。
步驟:
一:檢查本地mysql是否支援federated資料引擎
執行 show engines; 語句
support值為no,說明未支援該引擎。需修改mysql的配置檔案進行設定。
找到mysql的配置檔案,在[mysqld]後新增federated即可;新增完成,重啟mysql服務再次查詢該引擎狀態為yes即為支援。
二:在本地資料庫中建立乙個可以對映遠端表資料的橋接表 [結構與remotetable一致]
注意:該錶與遠端伺服器中需要同步資料的表結構一致(建立表結構即可,表資料會對映過來)
drop table if exists `表名`;
create table `表名` (
字段資訊
) engine=innodb character set = utf8 collate = utf8_general_ci comment = '表描述' row_format = compact
engine=federated connection = 'mysql://user:password@ip:port/databasename/tablename';
建立完成後,如果遠端伺服器的資料表中存在資料,會被對映到本地。
三:在本地建立觸發表(sourcetable)
四:建立觸發器
-- 插入
drop trigger if exists insert_user;
create trigger insert_user
after insert on 觸發表
for each row
begin
insert into 橋接表(欄位名)
values(new.觸發表的欄位名);
end;
-- 刪除
-- 刪除
drop trigger if exists delete_user;
create trigger 觸發表
after delete on fd_enterprise
for each row
begin
delete from 橋接表 where id=old.id;
end;
至此,所有步驟完成;
可進行驗證;向sourcetable表中插入或刪除資料,遠端庫上的表資料同步增刪。
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
觸發器實現跨庫同步
如果只是簡單的資料同步,可以用觸發器來實現.下面是例子 測試環境 sql2000,遠端主機名 xz,使用者名稱 sa,密碼 無,資料庫名 test 建立測試表,不能用標識列做主鍵,因為不能進行正常更新 在本機上建立測試表,遠端主機上也要做同樣的建表操作,只是不寫觸發器 if exists selec...
my sql 觸發器 mysql建立觸發器
首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...