MariaDB社区

标题: 如何用phpmyadmin实现l数据库表镜像或同步的问题(望高手指点) [打印本页]

作者: s7765991    时间: 2012-6-20 22:51
标题: 如何用phpmyadmin实现l数据库表镜像或同步的问题(望高手指点)
先说明本人完全小白不懂mysql命令,用的是phpmyadmin。。。

1. 想要实现的功能 比如一台服务器上面有A和B两个数据库   每个数据库下面有两种类型的表
比如:
a_jia_xxx
a_yi_xxx
比如A经常更新。。。B同步A  (即B的数据从A中来)
  但是B只需要同步A库下面的jia前缀的表(yi的不要)。。。
请教大家如何实现这个功能。。

2.能不能实现直接镜像。。。。  比如B站点的jia表其实自己是没有的。。直接用A站点的jia表。这个可以省下一倍的数据空间。。。。。。。。

3.如果A跟B不在一个服务器。。这两种功能又要如何实现??


希望能通过phpmyadmin实现这些功能。。。。菜鸟不懂命令。。只能图形管理工具。。。
作者: kider    时间: 2012-6-21 10:48
可以用phpmyadmin的备份恢复功能,或导出、导入功能,可以选择表。

或去研究下 MySQL同步,可以用忽略表的replication

对于你的第二个问题,那就直接从A站取数据就可以了,何必还要做个假的在B上?
作者: beingman    时间: 2012-6-21 11:44

2.能不能实现直接镜像。。。。  比如B站点的jia表其实自己是没有的。。直接用A站点的jia表。这个可以省下一倍的数据空间。。。。。。。。

关于这个,楼主如果确实需要的话,可以使用federated存储引擎,在B站点保存表结构定义和指向A站点的连接参数,每次
在B站点查询这个表时,就会自动去A站点取数据。连接参数包含对A站点IP地址,端口号,用户名,密码以及数据库名和表
名的指定。
作者: s7765991    时间: 2012-6-21 11:58
kider 发表于 2012-6-21 10:48
可以用phpmyadmin的备份恢复功能,或导出、导入功能,可以选择表。

或去研究下 MySQL同步,可以用忽略表 ...

需要实现的功能是同步。。就是A表会时时更新。。B表要立即同步过来。。关于直接在A表读取。。。我就是想直接读取。。可是A_yi_xxx表是A数据库自己独有的。。。B不想要这个表。。并且B有自己的B_YI_xxx            如果有办法在只读取A_jia_xxx的同时拥有自己的的B_yi_xxx是最好的
——本人非常小白。。。能不能详细指点下——感激不尽
作者: s7765991    时间: 2012-6-21 12:02
beingman 发表于 2012-6-21 11:44
2.能不能实现直接镜像。。。。  比如B站点的jia表其实自己是没有的。。直接用A站点的jia表。这个可以省下 ...

你说的那个federated存储引擎操作困难吗???图形窗口操作吗??具体怎么操作呢??本人非常小白。。希望能得到详细指点。。。非常感谢
作者: beingman    时间: 2012-6-21 12:30
s7765991 发表于 2012-6-21 12:02
你说的那个federated存储引擎操作困难吗???图形窗口操作吗??具体怎么操作呢??本人非常小白。。希望 ...




这个用起来不麻烦的,
1) 首先确定B数据库是不是已经激活了federated存储引擎,
      在mysql客户端用以下语句确定:
      show storage engines,engine是federated的记录support字段是Yes就表示激活了;
      不过默认情况下是没有激活的,需要在B启动时加--federated选项,或者在B的配置文件
      mysqld区域添加一行federated,重启生效
      
2) B上定义跟A结构定义一样的表,建表语句稍微加一些特别的内容.
    比如A上有表A_jia_xxx,定义语句如下:
    CREATE TABLE A_jia_xxx (
    id INT(20) NOT NULL AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL DEFAULT '',
    other INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY (id),
    INDEX name (name),
    INDEX other_key (other)
    )
    ENGINE=MyISAM
    DEFAULT CHARSET=latin1;
   
    在B上定义表B_jia_xxx:
    CREATE TABLE B_jia_xxx (
    id INT(20) NOT NULL AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL DEFAULT '',
    other INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY (id),
    INDEX name (name),
    INDEX other_key (other)
    )
    ENGINE=FEDERATED
    DEFAULT CHARSET=latin1
    CONNECTION='mysql://user:password@IP_A:port_A/db_name_a/A_jia_xxx';

3) 在B上查询B_jia_xxx时,B就会连接到A上把数据拉过来.



作者: s7765991    时间: 2012-6-21 15:34
beingman 发表于 2012-6-21 12:30
这个用起来不麻烦的,
1) 首先确定B数据库是不是已经激活了federated存储引擎,
      在mysql客 ...


不难。。。。可是我完全不懂代码语言啊。。。我只会phpmyadmin图形化操作。。。。。比如增加一个表 点“增加” 删除一个表但“删除”      
     谢谢高手的指点。。我研究一下。。。。。
可是还有没有更简单的办法  图形化 图形化。。phpmyadmin操作这样子。。我是连打开mysql都不会的水平
作者: s7765991    时间: 2012-6-21 15:41
beingman 发表于 2012-6-21 12:30
这个用起来不麻烦的,
1) 首先确定B数据库是不是已经激活了federated存储引擎,
      在mysql客 ...

1) 首先确定B数据库是不是已经激活了federated存储引擎,
      在mysql客户端用以下语句确定:
      show storage engines,engine是federated的记录support字段是Yes就表示激活了;
      不过默认情况下是没有激活的,需要在B启动时加--federated选项,或者在B的配置文件
      mysqld区域添加一行federated,重启生效


我先详细说明下我的水平。。。
1.比如在mysql客服端用一下语句确定
    我的水平是:怎么打开mysql客服端?(当然这个可以百度)
2.需要在B启动时加--federated选项
    我的水平是:具体怎么操作?
3.B的配置文件mysqld区域添加一行federated
    我的水平是:B的配置文件在哪里?mysqld区域又在哪里?


郁闷死。。。我都不好意思问了。。。有点耽误大哥时间的嫌疑。。。
作者: beingman    时间: 2012-6-21 16:28
s7765991 发表于 2012-6-21 15:41
1) 首先确定B数据库是不是已经激活了federated存储引擎,
      在mysql客户端用以下语句确定:
      ...


看来你好像不是做这一块的,我简单解释一下吧,如果经常需要处理这类问题,必要的基础还是补一下比较好.

1.比如在mysql客服端用一下语句确定

    在操作系统命令行界面键入以下命令就可以进入mysql的客户端环境(注意mysql安装文件的bin目录
    必须包含在系统或当前用户的PATH环境变量中)
     mysql -u用户名 -p密码
     
2.需要在B启动时加--federated选项
    这个和3效果是一样的,在配置文件里做设置比较方便一些。
   
3.B的配置文件mysqld区域添加一行federated
    B的配置文件在哪里?mysqld区域又在哪里?
    如果是在windows环境中,配置文件一般在安装路径下面,比如我的就是
    C:\Program Files\MySQL\MySQL Server 5.5\my.ini,如果在linux环境,
    一般是/etc/my.cnf.
    mysqld区域就是中括号括起来的mysqld和下一个中括号括起来的字符串
    之间的部分.
     [mysqld]
     
     port=3306
     ......
     federated
     
     [mysqldump]




作者: s7765991    时间: 2012-6-23 15:30
beingman 发表于 2012-6-21 16:28
看来你好像不是做这一块的,我简单解释一下吧,如果经常需要处理这类问题,必要的基础还是补一下比较好 ...

谢谢大哥耐心指点。。好两天一直再测试。。。
太笨了 。。还是不明白。。。
   只能又去找工具。。。phpmyadmin的同步研究了下。。是可以同步数据。。可是非常卡。数据库有点大。。而且出现都是问号 没耐心研究了

测试了下Navicat for MySQL     发现里面也有同步这个功能。。。。不过还是几点不清楚。。
数据传输。。。我用数据传输功能把A库的jia表数据传输大B库的jia表。。发现数据真的成功了。。。可是应该是一次性的。。我想要想要实现的是实时同步。。
数据同步。。。我测试了下数据同步功能。。。选好两个数据库两个表后。。点开始。。一段长长的代码刷下来。。。。。。数据没有变化。。(我刚刚已经把A库的jia数据通过数据传输传给B的jia了)
两个问题:
1.这个数据同步是时时同步的吗??A库更新后  B库也会更新??
2.要一直开着Navicat for MySQL  才能实时同步吗 吗??


作者: beingman    时间: 2012-6-24 20:51
s7765991 发表于 2012-6-23 15:30
谢谢大哥耐心指点。。好两天一直再测试。。。
太笨了 。。还是不明白。。。
   只能又去找工具。。。p ...


两个问题:
1.这个数据同步是时时同步的吗??A库更新后  B库也会更新??

不太了解Navicat for MySQL的同步机制,建议你做一个简单的测试进行验证,
同步一次,然后改数据源表,看目标表的内容是否发生同样的变化。

2.要一直开着Navicat for MySQL  才能实时同步吗 吗??

取决于1的结果,如果不是同步的,那就不能实现实时同步。



作者: s7765991    时间: 2012-6-24 23:15
beingman 发表于 2012-6-24 20:51
两个问题:
1.这个数据同步是时时同步的吗??A库更新后  B库也会更新??

在理  谢谢大哥耐心指点




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2