MySQL存储过程同步数据:将cubicscanner_to_wms表数据同步到其他数据库
{"title":"MySQL存储过程同步数据:将cubicscanner_to_wms表数据同步到其他数据库","description":"本文提供了一个MySQL存储过程,用于将cubicscanner_to_wms表的数据从一个数据库同步到另一个数据库。该存储过程使用参数定义源表、目标表、同步表和同步标识,并使用MySQL的PREPARE和EXECUTE语句来执行SQL操作,实现数据同步。","keywords":"MySQL, 存储过程, 数据同步, cubicscanner_to_wms, 远程同步","content":"CREATE DEFINER=wmsop@10.23.60.218 PROCEDURE sp_copy_arch_cubicscanner_to_wms(
IN old_table VARCHAR(50),
IN new_table VARCHAR(50),
IN sync_table VARCHAR(50),
IN record_type VARCHAR(50)
)
BEGIN
\t -- SHOW CREATE TABLE item
-- 定义变量
-- 同步开始时间
-- SET @old_table := \"wms\".arch_cubicscanner_to_wms;
-- SET @new_table := \"lvmhpc_temp_wms_prod\".arch_cubicscanner_to_wms;
-- SET @record_type := "arch_cubicscanner_to_wms";
\t SET @old_table := old_table; -- 数量来源表 \t SET @new_table := new_table; -- 数据目的表 \t SET @sync_table := sync_table; -- 同步表 \t SET @record_type := record_type; -- 同步标识 \t SET @last_sync_date_time := "1970-01-01 00:00:01" ;
\t -- 获取最新同步时间 \t SET @get_sync_time_sql := CONCAT("SELECT @last_sync_date_time:= IFNULL(MIN(lastSyncDateTime),@last_sync_date_time) \n\t FROM ",@sync_table," WHERE recordType = @record_type"); \t PREPARE get_sync_time_sql FROM @get_sync_time_sql; \t -- 批量插入新表数据 \t SET @insert_new_table_sql := CONCAT("replace into ",@new_table," \n\t SELECT * FROM ",@old_table," WHERE lastUpdateData >= @last_sync_date_time LIMIT 1000\n\t"); \t PREPARE insert_new_table_sql FROM @insert_new_table_sql; \t -- 更新同步后数据时间 \t SET @update_new_table_sql := CONCAT("SELECT @last_sync_date_time := IFNULL(MAX(lastUpdateData) ,@last_sync_date_time) \n\t FROM ",@new_table," WHERE lastUpdateData >= @last_sync_date_time"); \t PREPARE update_new_table_sql FROM @update_new_table_sql; \t -- 更新sync时间 \t SET @update_sync_time_sql := CONCAT("replace into ",@sync_table," (recordType, lastSyncDateTime) VALUES (@record_type, @last_sync_date_time)"); \t PREPARE update_sync_time_sql FROM @update_sync_time_sql;
\t EXECUTE get_sync_time_sql; \t EXECUTE insert_new_table_sql; \t EXECUTE update_new_table_sql; \t EXECUTE update_sync_time_sql; \t \t update lvmhpc_temp_wms_prod.cubicscanner_to_wms set WMS_READ=0 where WMS_READ=1; END
能不能将cubicscanner_to_wms 数据 远程同步到其他ip的mysql数据库中内容:可以将cubicscanner_to_wms数据远程同步到其他IP的MySQL数据库中。有几种方法可以实现这个目标:
-
使用MySQL的复制功能:MySQL提供了复制功能,可以将数据从一个MySQL服务器复制到另一个MySQL服务器。您可以配置原始服务器作为主服务器,将数据复制到其他服务器上的从服务器。具体步骤如下:
- 在原始服务器上启用二进制日志记录。在my.cnf文件中添加以下配置:
log_bin = /var/log/mysql/mysql-bin.log server_id = 1 - 在从服务器上配置主服务器的连接信息。在my.cnf文件中添加以下配置:
server_id = 2 replicate-do-db = cubicscanner_to_wms master-host = <原始服务器IP> master-user = <主服务器用户名> master-password = <主服务器密码> - 重启MySQL服务器使配置生效。
- 在从服务器上运行以下命令开始复制:
CHANGE MASTER TO MASTER_HOST='<原始服务器IP>', MASTER_USER='<主服务器用户名>', MASTER_PASSWORD='<主服务器密码>'; START SLAVE; - 确保从服务器可以连接到主服务器并且复制正常运行。
- 在原始服务器上启用二进制日志记录。在my.cnf文件中添加以下配置:
-
使用ETL工具:ETL(Extract, Transform, Load)工具可以用于将数据从一个数据库提取、转换和加载到另一个数据库。您可以使用ETL工具(如Pentaho Data Integration、Talend等)配置一个任务,从源数据库提取cubicscanner_to_wms表的数据,然后将其加载到目标数据库中。具体步骤如下:
- 安装和配置ETL工具。
- 创建一个新的ETL任务。
- 配置源数据库连接信息,包括原始服务器的IP、用户名和密码。
- 配置目标数据库连接信息,包括目标服务器的IP、用户名和密码。
- 添加一个数据提取步骤,选择cubicscanner_to_wms表作为源表。
- 添加一个数据加载步骤,选择目标数据库中的相应表作为目标表。
- 配置数据转换规则(如果需要)。
- 运行ETL任务以执行数据迁移。
-
使用自定义脚本:您可以编写一个自定义脚本,使用MySQL的连接库(如Python的pymysql库)连接到原始数据库和目标数据库,并执行数据迁移操作。具体步骤如下:
- 安装和配置MySQL连接库。
- 编写一个脚本,连接到原始数据库和目标数据库。
- 查询cubicscanner_to_wms表的数据。
- 将查询结果插入到目标数据库中的相应表中。
- 运行脚本以执行数据迁移。
以上三种方法都可以实现将cubicscanner_to_wms数据远程同步到其他IP的MySQL数据库中。您可以根据具体情况选择最适合您的方法。
原文地址: https://www.cveoy.top/t/topic/psOV 著作权归作者所有。请勿转载和采集!