2025年3月17日 星期一 甲辰(龙)年 月十六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

mysql本地数据库表同步到远程数据库

时间:06-27来源:作者:点击数:37

现在我有这么一个需求, 就是有两个项目, 一个叫项目A,一个项目B, 由于A的用户表和B的用户表是要实现一样的.

例如: 我在A项目中注册了,要实现在B项目中也能登录, 当用到B的时候, 由于B数据库中有视图, 所有不能直接桥连到A

由于用到的数据是mysql, 那么可以使用Federated引擎实现这个需求.

环境

0

首先查询一下mysql中有没有Federated这个引擎.我有的是mysql5.7.22

  • 1 show engines;

结果

  • mysql> show engines;
  • +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  • | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
  • +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  • | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
  • | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
  • | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
  • | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
  • | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
  • | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
  • | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
  • | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
  • | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
  • +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  • 9 rows in set (0.00 sec)

这是有的, 在最后一项, 但是它没有开启, 那么接下来就方便多了.

第一步

在my.cnf中添加federated这一个属性就可开启.

0

再查询一下

0

下面就是在建表语句中加入Federated了.

第二步

  • 声明引擎 连接属性 账号 密码 ip port 数据库 表
  • ENGINE =FEDERATED CONNECTION='mysql://root:lizhenghua@192.168.137.148:3306/zskdb/cas_user';

slave中创建表结构的时候加入上面引擎.

  • CREATE TABLE `cas_user` (
  • `id` varchar(255) NOT NULL COMMENT 'id',
  • `encryid` varchar(255) DEFAULT NULL COMMENT '加密后的用户id',
  • `name` varchar(255) DEFAULT NULL COMMENT '用户名',
  • `password` varchar(255) DEFAULT NULL COMMENT '密码',
  • `mobile` varchar(40) DEFAULT NULL COMMENT '手机号码',
  • `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
  • `sex` int(1) DEFAULT NULL COMMENT '性别(0:男,1:女)',
  • `credit` double(11,2) DEFAULT '0.00',  
  • PRIMARY KEY (`oid`),  
  • UNIQUE KEY `upk_user_id` (`id`)
  • ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='用户表'
  • ENGINE =FEDERATED CONNECTION='mysql://root:zhenghua@192.168.137.148:3306/zskdb/cas_user';

从上面可以看出来, 我本身表就已经有啦innodb引擎, 我在后面再添加了一个.

注意: 只要表结构就行, 数据会自动从master中映射过来的.

演示:只要master中的cas_user表有操作,在slave中会显示同样的操作, 我在master中删除两条数据, 打开slave的cas_user会发现数据同样少了那被删的两条.

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门