精易论坛

标题: mysql数据同步工具源码 [打印本页]

作者: 血魔癫狂    时间: 2022-8-17 08:37
标题: mysql数据同步工具源码
1.功能说明:
本程序主要功能为实时将某个mysql的表数据同步到另一个mysql中。
2.目录说明:pcc.ini:配置文件
TableStructure.sql:导入导出表结构sql
log_20220726.txt:日志,按时间创建
LySqlSync.e:源文件
依赖:libmysql.dll、MySql5.7类.ec、精易模块.ec、七夜_皮肤梦工厂v1.9.ec(皮肤模块)
3.配置文件说明:
配置文件配置说明见附图。
注意1:发布端mysql与订阅端mysql的数据库名称要一致,且数据表名称也要一致
注意2:mysql_TimeLine后面配置的为订阅端数据表的时间字段,格式为XXXX-XX-XX XX:XX:XX
4.使用说明:
a)首先正确配置配置文件,保证发布的mysql和订阅的mysql都是可以正常连接的。
b)导出表结构,点击菜单栏中的:表结构管理->导出表结构,将发布端的表结构导出。
c)导入表结构,点击菜单栏中的:表结构管理->导入表结构,将发布端的表结构导入到订阅端。
注意3:如果订阅端存在表结构请忽略b-c步骤.
d)开始同步,点击菜单栏中的:同步管理->开始同步,开始实时数据同步。
e)结束同步,点击菜单栏中的:同步管理->结束同步,结束实时数据同步。
5.源码:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
mysql_SMySql类  
mysql_CMySql类  
表结构sql文本型  
是否结束逻辑型  
导入sql文本型  
mysql_字段记录文本型  
mysql_S_ip文本型  
mysql_S_uname文本型  
mysql_S_password文本型  
mysql_C_ip文本型  
mysql_C_uname文本型  
mysql_C_password文本型  
mysql_database文本型  
mysql_datatable文本型  
mysql_TimeLine文本型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
配置文件地址文本型 
配置文件内容文本型 
七夜_七彩条纹 ()
MYSQL_服务初始化 ()
是否结束 = 假
配置文件地址 = 取运行目录 ()“\pcc.ini”
配置文件内容 = UTF8到文本 (读入文件 (配置文件地址))
mysql_S_ip = 文本_取出中间文本 (配置文件内容, “mysql_S_ip=”, “;”)
mysql_S_uname = 文本_取出中间文本 (配置文件内容, “mysql_S_uname=”, “;”)
mysql_S_password = 文本_取出中间文本 (配置文件内容, “mysql_S_password=”, “;”)
mysql_C_ip = 文本_取出中间文本 (配置文件内容, “mysql_C_ip=”, “;”)
mysql_C_uname = 文本_取出中间文本 (配置文件内容, “mysql_C_uname=”, “;”)
mysql_C_password = 文本_取出中间文本 (配置文件内容, “mysql_C_password=”, “;”)
mysql_database = 文本_取出中间文本 (配置文件内容, “mysql_database=”, “;”)
mysql_datatable = 文本_取出中间文本 (配置文件内容, “mysql_datatable=”, “;”)
mysql_TimeLine = 文本_取出中间文本 (配置文件内容, “mysql_TimeLine=”, “;”)
超级编辑框2.内容 = mysql_S_ip + #换行符 + mysql_S_uname + #换行符 + mysql_S_password + #换行符 + mysql_C_ip + #换行符 + mysql_C_uname + #换行符 + mysql_C_password + #换行符 + mysql_database + #换行符 + mysql_datatable + #换行符 + mysql_TimeLine
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
mysql_S.断开 ()
mysql_C.断开 ()
MYSQL_服务卸载 ()
子程序名返回值类型公开备 注
_cha询sql  
参数名类 型参考可空数组备 注
参数_开始时间文本型
参数_结束时间文本型
变量名类 型静态数组备 注
记录集MySql记录集类 
i整数型 
j整数型 
字段信息MYSQL字段信息 
返回值文本型 
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
mysql_S.执行SQL语句 (“USE ” + mysql_database)
mysql_S.执行SQL语句 (“set names GBK”)
mysql_S.执行SQL语句 (“SELECT * FROM ” + mysql_datatable + “ WHERE ” + mysql_TimeLine + “>='” + 参数_开始时间 + “' AND ” + mysql_TimeLine + “<'” + 参数_结束时间 + “'”)
mysql_S.取记录集 (记录集)
计次循环首 (记录集.取字段总数 (), i)
记录集.取字段信息 (i - 1, 字段信息)
计次循环尾 ()
导入sql = 导入sql + #换行符“insert  into `” + mysql_datatable + mysql_字段记录
计次循环首 (记录集.取行数 (), i)
导入sql = 导入sql + #换行符“(”
计次循环首 (记录集.取字段总数 (), j)
返回值 = 记录集.读文本 (j - 1)
导入sql = 导入sql + “'” + 返回值 + “',”
计次循环尾 ()
导入sql = 取文本左边 (导入sql, 取文本长度 (导入sql) - 1)
导入sql = 导入sql + “),”
记录集.到下一行 ()
计次循环尾 ()
导入sql = 取文本左边 (导入sql, 取文本长度 (导入sql) - 1)
导入sql = 导入sql + “;”
超级编辑框1.内容 = 导入sql
mysql_S.断开 ()
子程序名返回值类型公开备 注
_获取当前时间文本型 
变量名类 型静态数组备 注
时间日期时间型 
文本型 
文本型 
文本型 
文本型 
文本型 
文本型 
返回时间文本型 
时间 = 取现行时间 ()
年 = 到文本 (取年份 (时间))
月 = 到文本 (取月份 (时间))
日 = 到文本 (取日 (时间))
时 = 到文本 (取小时 (时间))
分 = 到文本 (取分钟 (时间))
秒 = 到文本 (取秒 (时间))
如果真 (取文本长度 () < 4)
年 = “0” + 年
如果真 (取文本长度 () < 4)
年 = “0” + 年
如果真 (取文本长度 () < 4)
年 = “0” + 年



如果真 (取文本长度 () < 2)
月 = “0” + 月

如果真 (取文本长度 () < 2)
日 = “0” + 日

如果真 (取文本长度 () < 2)
时 = “0” + 时

如果真 (取文本长度 () < 2)
分 = “0” + 分

如果真 (取文本长度 () < 2)
秒 = “0” + 秒

返回时间 = 年 + “-” + 月 + “-” + 日 + “ ” + 时 + “:” + 分 + “:” + 秒
返回 (返回时间)
子程序名返回值类型公开备 注
_导出表结构_被选择  
变量名类 型静态数组备 注
表结构文本型 
超级编辑框1.内容 = “”
运行 (“cmd /c mysqldump -u” + mysql_S_uname + “ -p” + mysql_S_password + “ -d --add-drop-table ” + mysql_database + “ ” + mysql_datatable + “ > ”取运行目录 ()“\TableStructure.sql”, 假, 2)
程序_延时 (1000)
表结构 = 到文本 (读入文件 (取运行目录 ()“\TableStructure.sql”))
表结构sql = “CREATE TABLE IF NOT EXISTS”文本_取出中间文本 (表结构, “CREATE TABLE”, “utf8;”)“utf8;”
超级编辑框1.内容 = 表结构sql
如果 (取文本长度 (超级编辑框1.内容) < 50)
信息框 (“导出失败!”, 0, “提示”, )
信息框 (“导出成功!”, 0, “提示”, )

子程序名返回值类型公开备 注
_导入表结构_被选择  
变量名类 型静态数组备 注
创建表sql文本型 
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
mysql_C.执行SQL语句 (“use ” + mysql_database)
创建表sql = “DROP TABLE IF EXISTS `” + mysql_datatable + “`;”
如果 (mysql_C.执行SQL (表结构sql))
信息框 (“导入成功!”, 0, “提示”, )
信息框 (“导入失败!”, 0, “提示”, )
mysql_C.断开 ()
子程序名返回值类型公开备 注
_连接服务端_被选择  
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
子程序名返回值类型公开备 注
_连接客户Duan_被选择  
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
子程序名返回值类型公开备 注
_读取字段  
变量名类 型静态数组备 注
记录集MySql记录集类 
i整数型 
j整数型 
字段信息MYSQL字段信息 
返回值文本型 
mysql_S.初始化 ()
mysql_S.连接 (mysql_S_ip, mysql_S_uname, mysql_S_password)
mysql_S.执行SQL语句 (“USE ” + mysql_database)
mysql_S.执行SQL语句 (“set names GBK”)
mysql_S.执行SQL语句 (“DESC ” + mysql_datatable)
mysql_S.取记录集 (记录集)
计次循环首 (记录集.取字段总数 (), i)
记录集.取字段信息 (i - 1, 字段信息)
计次循环尾 ()
mysql_字段记录 = “`(`”
计次循环首 (记录集.取行数 (), i)
计次循环首 (1, j)
返回值 = 记录集.读文本 (j - 1)
mysql_字段记录 = mysql_字段记录 + 返回值 + “`,`”
计次循环尾 ()
记录集.到下一行 ()
计次循环尾 ()
mysql_字段记录 = 取文本左边 (mysql_字段记录, 取文本长度 (mysql_字段记录) - 2)
mysql_字段记录 = mysql_字段记录 + “) values”
超级编辑框2.内容 = mysql_字段记录 + #换行符 + 超级编辑框2.内容
mysql_S.断开 ()
子程序名返回值类型公开备 注
_开始同步_被选择  
变量名类 型静态数组备 注
开始时间文本型 
结束时间文本型 
句柄  
文件号整数型 
开始时间 = _获取当前时间 ()
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符 + 开始时间 + “    ”“开始同步操作成功!”
程序_延时 (5000)
结束时间 = _获取当前时间 ()
_读取字段 ()
如果真 (文件是否存在 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”))
写到文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, 到字节集 (“”))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
写出文本 (文件号, 超级编辑框2.内容)
关闭文件 (文件号)
循环判断首 ()
如果真 (文件是否存在 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”))
写到文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, 到字节集 (“”))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
_cha询sql (开始时间, 结束时间)
mysql_C.初始化 ()
mysql_C.连接 (mysql_C_ip, mysql_C_uname, mysql_C_password)
mysql_C.执行SQL语句 (“use se5000”)
mysql_C.执行SQL语句 (“set names GBK”)
如果 (mysql_C.执行SQL语句 (导入sql))
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“导入成功:” + 开始时间 + “    -    ” + 结束时间
' 写出文本 (文件号, #换行符 + “导入成功:” + 开始时间 + “    -    ” + 结束时间)
如果 (超级编辑框1.取行数 () < 5)
写出文本 (文件号, #换行符“未cha询到数据:” + 开始时间 + “-” + 结束时间 + #换行符“日志:” + 超级编辑框1.内容)
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“未cha询到数据:” + 开始时间 + “-” + 结束时间 + #换行符“日志:” + 超级编辑框1.内容
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符“导入失败:” + 开始时间 + “-” + 结束时间 + #换行符“失败日志:” + 超级编辑框1.内容
写出文本 (文件号, #换行符“导入失败:” + 开始时间 + “-” + 结束时间 + #换行符“失败日志:” + 超级编辑框1.内容)


关闭文件 (文件号)
开始时间 = 结束时间
mysql_C.断开 ()
程序_延时 (5000)
导入sql = “”
超级编辑框1.内容 = “”
如果真 (超级编辑框2.取行数 () > 50)
超级编辑框2.内容 = “”

结束时间 = _获取当前时间 ()
循环判断尾 (取反 (是否结束))
文件号 = 打开文件 (取运行目录 ()“\log_”_获取当前日期 ()“.txt”, , )
移到文件尾 (文件号)
写出文本 (文件号, #换行符 + 结束时间 + “    ”“结束同步操作成功!”)
关闭文件 (文件号)
子程序名返回值类型公开备 注
_结束同步_被选择  
是否结束 = 真
超级编辑框2.内容 = 超级编辑框2.内容 + #换行符_获取当前时间 ()“    ”“结束同步操作成功!”
子程序名返回值类型公开备 注
_获取当前日期文本型 
变量名类 型静态数组备 注
时间日期时间型 
文本型 
文本型 
文本型 
返回日期文本型 
时间 = 取现行时间


i支持库列表   支持库注释   
iext2扩展界面支持库二

界面 (2).jpg (136.33 KB, 下载次数: 8)

界面 (2).jpg

界面.jpg (54.33 KB, 下载次数: 9)

界面

界面

配置文件说明.jpg (70.26 KB, 下载次数: 6)

配置文件

配置文件

日志.jpg (166.75 KB, 下载次数: 8)

日志

日志

Mysql同步工具源码.rar

2.48 MB, 下载次数: 85, 下载积分: 精币 -2 枚

mysql源码


作者: znkyb5    时间: 2022-8-17 09:18
悄悄告诉你,配置一下主从就可以自动同步了
作者: 血魔癫狂    时间: 2022-8-17 09:26
啊,西巴,我不会
作者: 有妖气    时间: 2022-8-17 09:27
你要这么说的话,那我这种类似的工具我有好多好多。。。
作者: 血魔癫狂    时间: 2022-8-17 09:29
有妖气 发表于 2022-8-17 09:27
你要这么说的话,那我这种类似的工具我有好多好多。。。

我不知道还能配置主从,不太懂mysql,是不是很鸡肋。。。
作者: 有妖气    时间: 2022-8-17 09:35
血魔癫狂 发表于 2022-8-17 09:29
我不知道还能配置主从,不太懂mysql,是不是很鸡肋。。。

没什么 分享是个好事情
作者: jysoft2022    时间: 2022-8-17 09:37
谢谢分享
作者: abpyu    时间: 2022-8-17 09:45
谢谢分享
作者: wjswzj0    时间: 2022-8-17 10:20
支持开源~!感谢分享
作者: 杨明煜    时间: 2022-8-17 11:18
支持一下,谢谢!......
作者: 59hdvj    时间: 2022-8-17 13:13
支持一下
作者: 亿万    时间: 2022-8-17 13:22
感谢分享
作者: ttggnn    时间: 2022-8-17 13:38
支持
作者: 零度狀態    时间: 2022-8-17 13:49
MSSERVER 可以这样搞?
作者: IEG123    时间: 2022-8-17 13:56
多余的工具,mysql有自带的主从同步,slave自行百d
作者: mh3400425    时间: 2022-8-17 15:48
谢谢分享
作者: zhaode2888    时间: 2022-8-18 09:11
感谢分享
作者: yu520    时间: 2022-8-18 09:37
这个稳啊
作者: 亿万    时间: 2022-8-18 13:17
感谢分享
作者: 59hdvj    时间: 2022-8-18 13:20
感谢分享
作者: 1347379245    时间: 2022-8-18 13:26
感谢分享
作者: xiangyabing    时间: 2022-8-18 13:44

作者: 只为学习    时间: 2022-8-18 16:23
未用先回复,感谢分享。
作者: 暴走萝莉    时间: 2022-8-18 19:58
感谢分享
作者: qingxia    时间: 2022-8-20 13:45
未用先回复,感谢分享。
作者: kingchain    时间: 2022-8-21 19:14
不错
很有用
作者: han15070727425    时间: 2022-8-21 21:35
支持支持
作者: lishuaidevil    时间: 2022-8-27 16:22
少时诵诗书所所所所所所所
作者: wpzyan123    时间: 2022-10-28 09:33
谢谢分享
作者: boomsa    时间: 2022-11-8 09:30
感谢楼主分享
作者: jia201314973    时间: 2023-5-25 22:34
感谢
作者: wuluzhao    时间: 2024-12-12 12:21
感谢楼主分享
作者: 旭阳2000    时间: 2025-1-23 10:27
未用先回复,感谢分享。
作者: 旭阳2000    时间: 2025-1-23 10:30
未用先回复,感谢分享。未用先回复,感谢分享。未用先回复,感谢分享。
作者: wg198300    时间: 2025-3-28 10:17
感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4