您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

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

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

现在我有这么一个需求, 就是有两个项目, 一个叫项目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会发现数据同样少了那被删的两条.

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