mysql 執行觸發器,實現跨伺服器的表資料同步

2021-10-23 19:36:18 字數 1846 閱讀 7505

需求:同步不同伺服器上的資料庫表的資料。

說明:現有伺服器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時候舊資料...