Mysql远程数据库同步

1. 服务配置说明:

服务器名称

服务器地址

数据库名称

用户名

密码

端口

数据库服务器A

121.xx.xx.xx

youjihui_zs

root

youjihui

3306

数据库服务器B

120.yy.yy.yy

youjihui_cx

root

root

3309

 

2. 目标:

服务器A数据库youjihui_zs中的数据表t_index和服务器B中数据库youjihui_cx中数据表t_index_cx数据同步。

 

3.约束

如果直接采用federated的方式,即t_index建立federated引擎,映射到t_index_cx表。由于映射后,这两个表的数据和操作是完全同步的,也就是说,在其中任何一个表上执行插入、更新和删除操作,引擎会在另外一个表中执行同样的操作。

由于t_index是正式数据库的表,t_index_cx是查询数据库的表。如果在查询数据库中操作数据,引发正式库的数据变化,是相当有风险的。

4.方案

  方案结构图如下:


过程说明:

4.1. 查询库授权正式库的操作权限

授权可以从ip121.xx.xx.xx的服务器A上,用root用户密码是root,访问当前服务器Bmysql服务:

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://root:root@120.yy.yy.yy:3309/youjihui_cx/t_index_zs_map'

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;

5.总结

 添加2张中间表和2个触发器,避开正式表的直接操作,进而避免破坏正式表的数据。





### 如何在 MySQL Workbench 中进行数据库同步 #### 配置 MySQL Workbench 数据库同步 MySQL Workbench 提供了一种强大的机制来实现数据库模型与实际数据库之间的同步。通过该功能,可以轻松比较本地设计的 EER 图(实体关系图)和远程数据库的状态,并应用必要的更改以保持一致性。 以下是关于如何配置并执行数据库同步的具体说明: #### 设置目标 MySQL 版本 为了确保兼容性,在开始同步之前,需确认 MySQL Workbench 的默认目标版本已正确设置。可以通过以下路径调整此选项: - 打开菜单 `Edit` -> `Preferences...` - 导航到 `Modeling` -> `MySQL` 部分下的 `Default Target MySQL Version` 字段[^4]。 - 将其设定为目标数据库的实际版本号(例如 5.7 或更高版本),这有助于避免因语法差异引发错误。 #### 同步流程概述 当准备就绪后,可按照如下方式启动同步过程: 1. **加载现有模型或新建模型** 如果尚未创建任何模型,则先利用 MySQL Workbench 构造所需的表结构和其他对象定义。 2. **连接至目标数据库实例** 确认已经建立了有效的数据库连接。如果未建立,请前往主界面左侧导航树中的 “Manage Connections”,新增或者编辑现有的连接条目[^1]。 3. **初始化同步向导** 右键单击项目内的某个模式(Schema),然后选择命令 `Synchronize with Any Source…` 来触发同步对话框。 4. **对比分析阶段** 此步骤自动完成当前工作区所表示的数据字典同远端物理存储之间存在的异同点检测。系统会清晰地标记出哪些部分需要更新、删除或是保留不变。 5. **审查变更脚本** 审核由工具生成的一系列 DDL/DML 命令集合,这些指令用于实施上述发现的变化项。务必仔细检查每一条语句是否符合预期逻辑以及业务需求。 6. **提交修改** 经过最终验证无误之后,按下按钮 Apply 即可正式推送所有待处理的任务给服务器端去执行[^2]。 #### 注意事项 尽管 MySQL Workbench 努力提供直观易懂的操作体验,但在某些复杂场景下仍可能出现异常情况。比如遇到 VISIBLE 关键词报错时,可能是因为客户端软件未能识别较新的特性所致;此时建议升级应用程序至最新稳定版解决此类冲突问题。 ```sql -- 示例:简单的 ALTER TABLE 语句展示如何添加新列 ALTER TABLE employees ADD COLUMN email VARCHAR(255); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值