伺服器名稱
伺服器位址
資料庫名稱
使用者名稱
密碼
埠
資料庫伺服器a
121.xx.xx.xx
youjihui_zs
root
youjihui
3306
資料庫伺服器b
120.yy.yy.yy
youjihui_cx
root
root
3309
伺服器a中資料庫youjihui_zs中的資料表
t_index
和伺服器
b中資料庫
youjihui_cx
中資料表
t_index_cx
資料同步。
如果直接採用federated的方式,即t_index建立
federated
引擎,對映到
t_index_cx
表。由於對映後,這兩個表的資料和操作是完全同步的,也就是說,在其中任何乙個表上執行插入、更新和刪除操作,引擎會在另外乙個表中執行同樣的操作。
由於t_index是正式資料庫的表,
t_index_cx
是查詢資料庫的表。如果在查詢資料庫中運算元據,引發正式庫的資料變化,是相當有風險的。
方案結構圖如下:
過程說明:
4.1. 查詢庫授權正式庫的操作許可權
授權可以從ip為
121.xx.xx.xx
的伺服器
a上,用
root
使用者密碼是
root
,訪問當前伺服器b的
mysql
服務:grant all privileges on *.* to 'root'@'121.xx.xx.xx' identified by 'root' with grant option;
4.2. federated引擎
create table t_index_zs (
id varchar(50) not null,
mc varchar(200),
primary key(id)
)engine=federated connection='mysql:'
4.3. 觸發器
2-- insert 觸發器
drop trigger if exists tindex_insert_after_trigger;
create trigger tindex_insert_after_trigger
after insert on t_index_zs_map
for each row
begin
insert into t_index_cx(id,mc) values(new.id,new.mc);
end;
-- update 觸發器
drop trigger if exists tindex_update_after_trigger;
create trigger tindex_update_after_trigger
after update on t_index_zs_map
for each row
begin
update t_index_cx set mc=new.mc where id=new.id;
end;
-- delete 觸發器
drop trigger if exists tindex_delete_after_trigger;
create trigger tindex_delete_after_trigger
after delete on t_index_zs_map
for each row
begin
delete from t_index_cx where id=old.id;
end;
新增2張中間表和
2個觸發器,避開正式表的直接操作,進而避免破壞正式表的資料。
遠端連線MySQL資料庫
原來因為省事把mysql資料庫和tomcat伺服器裝在乙個機器上了。所以一直以來在768m的記憶體1.89ghz的cpu的古董機上跑myeclipse,另外除錯需要用到瀏覽器還有一些開啟的現查到文件。雖然機器任勞任怨,但自己有時實在難以忍受。前兩天想到在樓上的機器上安裝mysql伺服器,開始因為使用...
遠端連線MySQL資料庫
遠端無法訪問mysql主要是由於沒有許可權,只需新增一下 即可。mysql grant all privileges on to root identified by root with grant option mysql flush privileges 重新整理一下許可權第二個 root 表示...
遠端訪問mysql資料庫
mysql資料庫預設是不能被遠端訪問的,這裡以虛擬機器中的mysql資料庫為例 在虛擬機器中的ubuntu系統中,使用 mysql uroot p 然後輸入密碼,就可以連線mysql資料庫,但是在windows下使用 mysql h ip uroot p 然後輸入密碼,提示不能連線 這裡要做兩個設定...