SQLite与mysql之间有没有同步机制?

renic1987 2010-12-08 09:18:19
**************RT************************

本人现在在嵌入式系统中有一个SQLite数据库,在另外一台服务器中有mysql,如果SQLite中的数据有修改或者建立了新表新元素,有没有一种可用的方法让mysql中同样有相同的操作?还是需要自己来处理这种情况?如果是后者,应该采用何种方法比较合适呢?

本人对具体数据库的操作不是非常熟悉,希望大虾们多给点宝贵意见参考~~谢谢!
...全文
920 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
中小刀 2012-01-06
  • 打赏
  • 举报
回复
此问题比较有趣
iihero 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 renic1987 的回复:]
你对appweb了解不?这个嵌入式web server对SQLite提供完整的数据映射,调用内部类可以很方便的支持对SQLite的操作,对远程的mysql可以用标准的SQL接口吗?
[/Quote]

我不了解你这个web server里边用的是什么编程接口来访问Sqlite,只要是远程访问,总有办法能访问mysql,标准接口,由于是异机,估计够呛。
renic1987 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 iihero 的回复:]
引用 6 楼 renic1987 的回复:

引用 3 楼 iihero 的回复:
写一个同步模块吧。可以定时执行。实时同步,则比较麻烦。


对本地数据库的操作都是通过嵌入式的web server来做的,那同步模块应该放在哪里执行呢?

你这样的使用场景, 不用定时执行。
每一次本地操作,发一个远程的mysql请求,执行相同的逻辑。这样也许会简单一些。
你的本地操作在哪里执行……
[/Quote]

你对appweb了解不?这个嵌入式web server对SQLite提供完整的数据映射,调用内部类可以很方便的支持对SQLite的操作,对远程的mysql可以用标准的SQL接口吗?
rucypli 2010-12-09
  • 打赏
  • 举报
回复
你的启动顺序对吗 管理机,ndb,sql
iihero 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 renic1987 的回复:]

引用 3 楼 iihero 的回复:
写一个同步模块吧。可以定时执行。实时同步,则比较麻烦。


对本地数据库的操作都是通过嵌入式的web server来做的,那同步模块应该放在哪里执行呢?
[/Quote]
你这样的使用场景, 不用定时执行。
每一次本地操作,发一个远程的mysql请求,执行相同的逻辑。这样也许会简单一些。
你的本地操作在哪里执行,那附加动作就在哪里执行。
renic1987 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iihero 的回复:]
写一个同步模块吧。可以定时执行。实时同步,则比较麻烦。
[/Quote]

对本地数据库的操作都是通过嵌入式的web server来做的,那同步模块应该放在哪里执行呢?
renic1987 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwwwa 的回复:]
不能,只能分别写SQL语句(代码)
[/Quote]


意思是,如果有修改或者建表等,在web server中同时对两个数据库做同样的操作?
wangzi7810517 2010-12-09
  • 打赏
  • 举报
回复
我没有分值发帖了,站在巨人的肩膀上发个帖子,别介意。
问题:
bin> ndbd --initial
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.
2010-12-07 17:04:22 [ndbd] ERROR -- Could not connect to management server, e
rror: ''

我下载了mysql-cluster-gpl-noinstall-7.1.9a-win32免安装版做mysql cluster,在启动数据节点时出现了无法连接的情况:
bin> ndbd --initial
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed.
2010-12-07 17:04:22 [ndbd] ERROR -- Could not connect to management server, e
rror: ''

我的过程是这样的:
(1) 管理节点的配置

创建文件夹:c:\mysql
c:\mysql\bin (并将 ndb_mgmd.exe 和 ndb_mgm.exe 复制进去)
c:\mysql\bin\cluster-logs
在 c:\mysql\bin 下创建两个文件 conf.ini、my.ini

config.ini配置如下:

[ndbd default]
NoOfReplicas=2
DataMemory=200M
IndexMemory=100M

[TCP DEFAULT]

[NDB_MGMD]
nodeid=1
hostname=172.16.3.27
datadir=D:\Program Files\mysqlcluster\datanode\mysql\bin\cluster-data

[NDBD]
nodeid=2
hostname=172.16.3.28
datadir=C:\mysql\mysql-cluster

[NDBD]
nodeid=3
hostname=172.16.3.30
datadir=C:\mysql\mysql-cluster

[MySQLD]
[MySQLD]

my.ini配置如下:

[mysql_cluster]
config-file=C:\mysql\bin\config.ini

(2)数据节点和sql节点的配置(数据节点和sql节点为同一台机)
建文件夹: D:/Program Files/mysqlcluster/datanode/mysql/bin (并将ndbd.exe放进去)
D:/Program Files/mysqlcluster/datanode/mysql/cluster-data
D:/Program Files/mysqlcluster/datanode/mysql/bin/cluster-data
D:/Program Files/mysqlcluster/sqlnode (将解压后的整个文件夹mysql放进去)

在D:/Program Files/mysqlcluster/datanode/mysql/bin目录下生成文件my.ini,内容为:

[mysql_cluster]
ndb-connectstring=172.16.3.27

在D:/Program Files/mysqlcluster/sqlnode/mysql下生成my.ini文件,内容为:
[mysqld]
ndbcluster
ndb-connectstring=172.16.3.27

(3)启动管理节点
c:\mysql\bin>ndb_mgmd -f conf.ini
MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9

c:\mysql\bin>ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 172.16.3.28)
id=3 (not connected, accepting connect from 172.16.3.30)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.16.3.27 (mysql-5.1.51 ndb-7.1.9)

[mysqld(API)] 3 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)

(4) 启动数据节点
D:\Program Files\mysqlcluster\datanode\mysql\bin>ndbd --initial
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 12 11 10

数据节点连接不上,在管理节点上运行ndb_mgm
c:\mysql\bin>ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 172.16.3.28)
id=3 (not connected, accepting connect from 172.16.3.30)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.16.3.27 (mysql-5.1.51 ndb-7.1.9)

[mysqld(API)] 3 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)

ndb_mgm> connect 172.16.3.28
Unable to connect with connect string: nodeid=0,172.16.3.28:1186
Retrying every 5 seconds. Attempts left: 2

管理节点和数据节点互相 connect 不上 (防火墙关了,终端互相ping通)

望高手指点!
iihero 2010-12-09
  • 打赏
  • 举报
回复
写一个同步模块吧。可以定时执行。实时同步,则比较麻烦。
WWWWA 2010-12-09
  • 打赏
  • 举报
回复
不能,只能分别写SQL语句(代码)
wangzi7810517 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 rucypli 的回复:]
你的启动顺序对吗 管理机,ndb,sql
[/Quote]

我先起得管理机:
c:\mysql\bin>ndb_mgmd -f conf.ini
MySQL Cluster Management Server mysql-5.1.51 ndb-7.1.9

c:\mysql\bin>ndb_mgm -e show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 172.16.3.28)
id=3 (not connected, accepting connect from 172.16.3.30)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.16.3.27 (mysql-5.1.51 ndb-7.1.9)

[mysqld(API)] 3 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)

然后起ndb:
D:\Program Files\mysqlcluster\datanode\mysql\bin>ndbd --initial
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 12 11 10

连不上,sql我就没起了
ACMAIN_CHM 2010-12-08
  • 打赏
  • 举报
回复
没有。

异构数据库同步,你需要自己写代码来实现。
.net 稳定 高效 易用 可同步 TCP 通信框架 使用平台: WinXP,WIN7,WIN8,WINCE,WINPHONE。 使用.net 2.0 框架。 主要功能介绍: 1、可以代替 Oracle,Mysql客户端 在不安装Oracle,MySql客户端的情况下访问, 对数据库进行间接访问(需开始框架的服务器端)。 2、可以使本来没有网经功能的Sqlite具有网络访问的能力。(也是需要开启服务器端) 以上两点可以兼容现有代码生成器时,客户端代码仅需要特别小的改动就可以。 3、基本功能。可以实现聊天,传文件,图片。 4、使用长连接,有断线自动连接功能,心跳包。 5、使用自定义数据包协议,自建Session机制加强数据连接安全。 6、框架稳定,支持高并发。 7、简单的事件处理机制。使用更加简单。 8、支持同步处理,使程序的开发更架简单,不需要另行回调处理。 下载地址: 使用方式: 首选需要 引用 DataUtils.v1.1.dll。DataUtils 内包含客户端与服务器端 处理类。 1、服务器端 代码示例。 设置服务器端默认端口 ,不设置端口会使用默认端口 TcpSettings.DefultPort = 8511; 既可以使用静态默认对象,也可以创建服务器端对象。 SocketListener server= new SocketListener(); 对象创建后 注册一些事件,以接收客户端发送的信息。 SocketListener.Server.RegeditSession += new Feng.Net.Tcp.SocketListener.RegeditSessionEventHandler(server_RegeditSession); RegeditSession 事件用于是否允许客户端连接此服务器。可以使用用户名,密码的核对方式。 SocketListener.Server.DataReceive += new SocketListener.DataReceiveEventHandler(server_DataReceive); DataReceive 在这个事件里处理接收到的数据。 事件注册完成就可以打开监听 SocketListener.Server.StartListening(); 2、客户端 代码示例 设置服务器的IP地址 TcpSettings.DeafultIPAddress = "192.168.1.3"; TcpSettings.DefultPort = 8511;//不设置端口会使用默认端口。 这样就可以使用默认的静态客户端了。 也可以自己创建对象。 客户端创建后需要在Connected事件注册用户,以限制某些用户是否可以使此链接。用户来源可以是数据库等。 void client_Connected(object sender, SocketClient sh) { Client.RegeditSession("aaa", "bbb"); } 发送文字消息给其他用户 SocketClient.Client.SendToOtherUser(string user, string text); //USER代表发达的目白用户,text表示为发送的内容。 发送图片,音频,视屏可以使用 SocketClient..SendToOtherUser(string user, byte[] data)////USER代表发达的目白用户,data表示为发送的内容。 data数据中数据有多种类型时可以使用 using (Feng.IO.BufferWriter bw = new Feng.IO.BufferWriter()) { bw.WriteBitmap(new Bitmap(100, 100)); bw.Write(text);

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧