文档章节

用mysql实现类似于oracle dblink的功能

郑加威
 郑加威
发布于 2017/08/23 16:39
字数 4449
阅读 380
收藏 1

用mysql实现类似于oracle dblink的功能 

首先看看有没有federated 引擎:

mysql> show engines; 
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
| Engine             | Support | Comment                                                    | Transactions | XA  | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO  | NO         |
| CSV                | YES     | CSV storage engine                                         | NO           | NO  | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO  | NO         |
| MyISAM             | YES     | MyISAM storage engine                                      | NO           | NO  | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO  | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
6 rows in set

看到没有安装federated存储引擎(目标端可以是任何的存储引擎比如说myisam或者innodb)

安装federated存储引擎:

mysql>  install plugin federated soname 'ha_federated.so';
Query OK, 0 rows affected

mysql> 

测试一下是否可以

[root@test01 bin]# ./mysqld_safe --federated &
[1] 5418
You have new mail in /var/spool/mail/root
[root@test01 bin]# 170823 16:24:17 mysqld_safe Logging to '/var/log/mysqld.log'.
170823 16:24:17 mysqld_safe Starting mysqld daemon with databases from /mysql/data
170823 16:25:57 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

默认mysql是没有开启federated存储引擎【linux系统下】

mysql> show engines ;
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| FEDERATED          | NO      | Federated MySQL storage engine                             | NULL         | NULL | NULL       |
| CSV                | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                      | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO   | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
7 rows in set

mysql> 

先找到my.cnf文件,我这里直接搜索的。【linux系统下】

[root@test01 mysql]# find / -name my.cnf
/mysql/mysql-5.5.47/packaging/rpm-sles/my.cnf
/mysql/mysql-5.5.47/packaging/rpm-docker/my.cnf
/mysql/mysql-5.5.47/packaging/rpm-oel/my.cnf
/mysql/mysql-5.5.47/mysql-test/suite/federated/my.cnf
/mysql/mysql-5.5.47/mysql-test/suite/rpl/my.cnf
/mysql/mysql-test/suite/federated/my.cnf
/mysql/mysql-test/suite/rpl/my.cnf
/etc/my.cnf
[root@test01 mysql]# 

开启federated存储引擎

只需要在my.cnf文件中增加 federated 就可以。【linux系统下】

[root@test01 mysql]# cat /etc/my.cnf 
[mysqld]
datadir=/mysql/data
socket=/mysql/data/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

lower_case_table_names=1
max_connections=1000
#max_user_connections=500
wait_timeout=2880

#增加开启federated引擎标识
federated

[mysqld_safe]
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
pid-file=/var/lib/mysqld/mysqld.pid


[root@test01 mysql]# 

配置my.cnf文件,在[mysqld]的最后增加 federated federated,然后重启mysql服务。

注意:在window版本中,如果是默认my.ini配置,在[mysqld]的最后增加 federated

[root@test01 ~]# service mysql restart
mysql: 未被识别的服务
You have new mail in /var/spool/mail/root
[root@test01 ~]# 

重启的时候提示:未被识别的服务,解决方法如下:

[root@test01 support-files]# pwd
/mysql/support-files
[root@test01 support-files]# cp ./mysql.server /etc/init.d/mysqld 
[root@test01 support-files]# chkconfig --add mysqld
[root@test01 support-files]# chkconfig --level 2345 mysqld on
[root@test01 support-files]# 

使用service mysqld restart --federated 命令重启mysql

[root@test01 ~]# service mysqld restart --federated
Shutting down MySQL...                                     [确定]
Starting MySQL..                                           [确定]
[root@test01 ~]# 

查看 federated 服务是否启动了。

mysql> show engines ;
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
| Engine             | Support | Comment                                                    | Transactions | XA  | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES | YES        |
| FEDERATED          | YES     | Federated MySQL storage engine                             | NO           | NO  | NO         |
| CSV                | YES     | CSV storage engine                                         | NO           | NO  | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO  | NO         |
| MyISAM             | YES     | MyISAM storage engine                                      | NO           | NO  | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO  | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO  | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+-----+------------+
7 rows in set

mysql> 

好了,FEDERATED值为YES了。

目标:本地库A的三张表,整合数据后,写入远程库B的一张表中。

下面我们来建表

远程库B的inf_monitor_data表:

DROP TABLE IF EXISTS `inf_monitor_data`;
CREATE TABLE `inf_monitor_data` (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '编号',
  `IT_Catalog` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主类别',
  `IT_Function` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '子类别',
  `Business_Name` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '业务名称',
  `Control_Address` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '管理地址,设备Ip|数据库服务名|URI地址',
  `Title` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '摘要',
  `Detail` varchar(2000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '描述',
  `Start_Time` datetime NOT NULL COMMENT '采集查询起始时间',
  `End_Time` datetime DEFAULT NULL COMMENT '采集查询结束时间',
  `BSM_Type` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '对应其是哪类监视器的事件',
  `Status` varchar(3) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '处理标记',
  `Remarks` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

本地库A的c_itcomp、def_comp、i_incident表:

DROP TABLE IF EXISTS `c_itcomp`;
CREATE TABLE `c_itcomp` (
  `P_Guid` varchar(40) NOT NULL COMMENT '主键,唯一标识',
  `AF_Pid` varchar(40) DEFAULT NULL COMMENT '部件的父设备',
  `D_AVA_STATE` int(11) DEFAULT NULL,
  `D_CAP_STATE` int(11) DEFAULT NULL,
  `Com_Duration` decimal(18,0) DEFAULT NULL COMMENT '本次持续时间,下一次变化维护,毫秒',
  `Com_StartTime` datetime DEFAULT NULL COMMENT '本次变化的开始时间',
  `Com_EndTime` datetime DEFAULT NULL COMMENT '下一次变化的开始时间,下一次变化时维护',
  `Com_Role` varchar(40) DEFAULT NULL,
  `Com_A_IsUserComfirmed` bit(1) DEFAULT NULL COMMENT '用户是否已确认',
  `A_CanManage` bit(1) DEFAULT NULL COMMENT '是否可网管',
  `A_CanMonitor` bit(1) NOT NULL COMMENT '是否可监视,有监视调度维护,无可连通凭证则不可监视',
  `A_IsStop` bit(1) DEFAULT NULL COMMENT '是否停止监视',
  `A_CIChanged` int(11) DEFAULT NULL COMMENT 'CI相对基线是否发生变化(1=未变更,2=已知变更,3=未知变更)',
  `A_IsEdge` bit(1) DEFAULT NULL COMMENT '是否是边缘交换机',
  `D_BusinessName` varchar(50) DEFAULT NULL COMMENT '业务名称',
  `D_Useage` varchar(500) DEFAULT NULL COMMENT '组件用途',
  `D_Descr` varchar(1000) DEFAULT NULL COMMENT '描述,snmp获取或用户自定义',
  `D_BusinessCode` varchar(200) DEFAULT NULL COMMENT '业务编码',
  `D_HostName` varchar(50) DEFAULT NULL COMMENT '设备名称,设备自身定义的名称',
  `D_ControlAdderss` varchar(200) DEFAULT NULL COMMENT '管理地址,设备Ip|数据库服务名|URI地址',
  `DE_UseState` int(11) DEFAULT NULL COMMENT '组件使用状态,枚举:ITCompState',
  `DF_DutyRole` varchar(1000) DEFAULT NULL COMMENT '责任角色,外键,角色唯一标识',
  `DF_DutyUser` varchar(2000) DEFAULT NULL COMMENT '责任人,外键,人员唯一标识',
  `DE_ITCatalog` int(11) DEFAULT NULL COMMENT '主类别,枚举:ITCompCatalog',
  `DE_ITFunction` int(11) DEFAULT NULL COMMENT '子类别,枚举:ITCompFunction',
  `DE_ITManufacturer` int(11) DEFAULT NULL COMMENT '厂商,枚举:ITCompManufacturer',
  `DE_ITProductSeries` int(11) DEFAULT NULL COMMENT '产品系列,枚举:ITCompProductSeries',
  `D_Version` varchar(100) DEFAULT NULL COMMENT '版本号',
  `DF_Path_Site` varchar(150) DEFAULT NULL COMMENT '外键,Site类别路径的唯一标识,格式:[id#id#id]',
  `DF_Path_Location` varchar(150) DEFAULT NULL COMMENT '外键,Location类别路径的唯一标识,格式:[id#id#id]',
  `DF_Path_Custom` varchar(150) DEFAULT NULL COMMENT '外键,Custom类别路径的唯一标识,格式:[id#id#id]',
  `DF_Right_R` varchar(800) NOT NULL COMMENT '权限读,角色唯一标识,格式:[''id'',''id'',''id'']|[all]|[none]',
  `DF_Right_W` varchar(800) NOT NULL COMMENT '权限写,角色唯一标识,格式:[''id'',''id'',''id'']|[all]|[none]',
  `D_CPU_Unilization` decimal(18,0) DEFAULT NULL COMMENT 'CPU使用率',
  `D_Mem_Unilization` decimal(18,0) DEFAULT NULL COMMENT '内存使用率',
  `D_CPU_State` int(11) DEFAULT NULL,
  `D_Mem_State` int(11) DEFAULT NULL,
  `D_CIP_Building` varchar(100) DEFAULT NULL COMMENT '建筑物',
  `D_CIP_Floor` varchar(50) DEFAULT NULL COMMENT '楼层',
  `D_CIP_OPSystem` varchar(50) DEFAULT NULL COMMENT '操作系统',
  `D_CIP_Bed` varchar(50) DEFAULT NULL COMMENT '机架',
  `D_CIP_SlotInBed` varchar(50) DEFAULT NULL COMMENT '机架上的槽位',
  `D_CIP_Room` varchar(50) DEFAULT NULL COMMENT '房间',
  `DF_CreateUserId` varchar(40) DEFAULT NULL COMMENT '创建人',
  `D_CreateTime` datetime DEFAULT NULL COMMENT '创建时间',
  `DF_UpdateUserId` varchar(40) DEFAULT NULL COMMENT '修改人',
  `D_UpdateTime` datetime DEFAULT NULL COMMENT '修改时间',
  `DF_CheckUserId` varchar(40) DEFAULT NULL COMMENT '检查人',
  `D_CheckTime` datetime DEFAULT NULL COMMENT '检查时间',
  `D_Price` decimal(18,2) DEFAULT NULL COMMENT '单价',
  `D_UsefulYear` decimal(18,2) DEFAULT NULL COMMENT '使用年限',
  `D_NetSalvageValue` decimal(18,2) DEFAULT NULL COMMENT '净残值',
  `D_ExternalSN` varchar(100) DEFAULT NULL COMMENT '资产_外部序列号',
  `D_ProductSN` varchar(100) DEFAULT NULL COMMENT '资产_产品序列号',
  `D_Brand` varchar(100) DEFAULT NULL COMMENT '资产_品牌',
  `D_BuyTime` datetime DEFAULT NULL COMMENT '购买日期',
  `D_BuyCost` decimal(18,2) DEFAULT NULL COMMENT '购买成本',
  `D_WarrantyTime` datetime DEFAULT NULL COMMENT '保修期',
  `DF_CostCustomer` varchar(200) DEFAULT NULL COMMENT '成本客户,从角色中选择,多个RoleID用逗号隔开',
  `DF_CostUser` varchar(200) DEFAULT NULL COMMENT '成本用户,从用户中选择,多个UserID用逗号隔开',
  `D_ImageUrl` varchar(100) DEFAULT NULL,
  `D_RunTime` decimal(18,0) DEFAULT NULL COMMENT '系统运行时间(秒)',
  `D_AssetCode` varchar(100) DEFAULT NULL COMMENT '资产编码,资产号',
  `D_ProviderOrg` varchar(40) DEFAULT NULL COMMENT '供应商',
  `D_BuyContract` varchar(40) DEFAULT NULL COMMENT '购买合同',
  `D_ServiceOrg` varchar(40) DEFAULT NULL COMMENT '服务商',
  `D_ServiceRole` varchar(40) DEFAULT NULL COMMENT '服务角色',
  `D_ServiceContract` varchar(40) DEFAULT NULL,
  `D_OldAssetValue` decimal(18,2) DEFAULT NULL COMMENT '原资产价值',
  `D_FixedAssetValue` decimal(18,2) DEFAULT NULL COMMENT '固定资产价值',
  `D_CIP_BusinessDepart` varchar(40) DEFAULT NULL COMMENT '归口业务部门',
  `D_CIP_Cabinets` varchar(50) DEFAULT NULL COMMENT '机柜',
  `D_CIP_Model` varchar(50) DEFAULT NULL COMMENT '设备型号',
  `D_CIP_CPU` varchar(50) DEFAULT NULL COMMENT 'CPU型号',
  `D_CIP_Memory` varchar(50) DEFAULT NULL COMMENT '内存',
  `D_CIP_HDD` varchar(50) DEFAULT NULL COMMENT '硬盘',
  `D_CIP_NIC` varchar(50) DEFAULT NULL COMMENT '网卡',
  `D_CIP_FiberCard` varchar(50) DEFAULT NULL COMMENT '光纤卡',
  `D_CIP_Power` varchar(50) DEFAULT NULL COMMENT '电源',
  `D_CIP_UsedPowerCount` varchar(50) DEFAULT NULL COMMENT '已通电电源数量',
  `D_CIP_DataBase` varchar(50) DEFAULT NULL COMMENT '数据库',
  `D_CIP_Middleware` varchar(50) DEFAULT NULL COMMENT '中间件',
  `D_CIP_Administrator` varchar(50) DEFAULT NULL COMMENT '管理员',
  `D_CIP_Developer` varchar(50) DEFAULT NULL COMMENT '开发人员',
  `D_CIP_StartUseTime` varchar(50) DEFAULT NULL COMMENT '开始使用时间',
  `D_CIP_ServiceStartTime` varchar(50) DEFAULT NULL COMMENT '维保开始时间',
  `D_CIP_ServiceEndTime` varchar(50) DEFAULT NULL COMMENT '维保终止时间',
  `D_CIP_ServiceProvider` varchar(150) DEFAULT NULL COMMENT '维保商',
  `D_CIP_Contact` varchar(150) DEFAULT NULL COMMENT '联系人',
  `D_CIP_ContactTel` varchar(150) DEFAULT NULL COMMENT '联系电话',
  `D_IPLong` decimal(18,0) DEFAULT NULL,
  `D_ControlUrl` varchar(200) DEFAULT NULL,
  `Com_AvaF` int(11) DEFAULT NULL COMMENT 'ava监视频率',
  `Com_CapF` int(11) DEFAULT NULL COMMENT 'Cap监视频率',
  `DF_LinkTopoID` varchar(50) DEFAULT NULL,
  `D_CIP_BatchNumber` varchar(50) DEFAULT NULL,
  `F_RUserID` varchar(1000) DEFAULT NULL,
  `F_RUserTEXT` varchar(1000) DEFAULT NULL,
  `F_RRoleID` varchar(40) DEFAULT NULL,
  `F_SUserID` varchar(500) DEFAULT NULL,
  `F_SUserTEXT` varchar(100) DEFAULT NULL,
  `F_SRoleID` varchar(40) DEFAULT NULL,
  `F_CUserID` varchar(500) DEFAULT NULL,
  `F_CUserTEXT` varchar(100) DEFAULT NULL,
  `F_CRoleID` varchar(40) DEFAULT NULL,
  `F_IUserID` varchar(500) DEFAULT NULL,
  `F_IUserTEXT` varchar(100) DEFAULT NULL,
  `F_IRoleID` varchar(40) DEFAULT NULL,
  `F_VUserID` varchar(500) DEFAULT NULL,
  `F_VUserTEXT` varchar(100) DEFAULT NULL,
  `F_VRoleID` varchar(40) DEFAULT NULL,
  `F_AUserID` varchar(500) DEFAULT NULL,
  `F_AUserTEXT` varchar(100) DEFAULT NULL,
  `F_ARoleID` varchar(40) DEFAULT NULL,
  `D_Affect` varchar(40) DEFAULT NULL,
  `D_Urgency` varchar(40) DEFAULT NULL,
  `DF_LifeCycle` varchar(40) DEFAULT NULL COMMENT '生命周期,对应d_itcomp_lifecycle',
  `D_SupportCompModel` varchar(40) DEFAULT NULL,
  `D_CIP_SlotCount` int(11) DEFAULT NULL COMMENT '网络设备的槽位数',
  `D_ExpiryDate` datetime DEFAULT NULL COMMENT '到期时间',
  `AF_SlaId` varchar(40) DEFAULT NULL,
  `D_SyslogEncoding` varchar(40) DEFAULT NULL,
  `D_IsReceiveLog` bit(1) DEFAULT NULL,
  `D_ReceiveLogParameter` varchar(100) DEFAULT NULL,
  `D_LastReceiveLogTime` varchar(40) DEFAULT NULL,
  `D_Barcode` varchar(50) DEFAULT NULL COMMENT '1D条形码',
  `A_IsBackup` bit(1) DEFAULT NULL COMMENT '是否是备件,true:备件;false:不是备件',
  `D_ClusterName` varchar(200) DEFAULT NULL COMMENT '集群名称(Vmware用)',
  `D_UID` varchar(100) DEFAULT NULL,
  `DE_VirtualType` int(11) DEFAULT NULL,
  PRIMARY KEY (`P_Guid`),
  UNIQUE KEY `c_itcomp_KEY` (`P_Guid`),
  KEY `x_A_CanManage` (`A_CanMonitor`),
  KEY `x_Com_A_IsUserComfirmed` (`Com_A_IsUserComfirmed`),
  KEY `x_Custom` (`DF_Path_Custom`),
  KEY `x_D_ControlAdderss` (`D_ControlAdderss`),
  KEY `x_DE_ITFunction` (`DE_ITFunction`),
  KEY `x_Loction` (`DF_Path_Location`),
  KEY `x_Site` (`DF_Path_Site`),
  KEY `IT_ITComp_D_Barcode` (`D_Barcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
DROP TABLE IF EXISTS `def_comp`;
CREATE TABLE `def_comp` (
  `P_Guid` varchar(40) NOT NULL COMMENT '主键,唯一标识',
  `AF_Pid` varchar(40) NOT NULL COMMENT '外键,父节点,如果是根节点则为 Root',
  `D_Key` varchar(20) DEFAULT NULL COMMENT '不是Id,是有意义的唯一标识',
  `D_Caption` varchar(20) DEFAULT NULL COMMENT '别名,默认为D_key',
  `DF_ITCatalog` int(11) DEFAULT NULL COMMENT '主类别,枚举:ITCompCatalog',
  `DF_ITFunction` int(11) DEFAULT NULL COMMENT '子类别,枚举:ITCompFunction',
  `DF_ITManufacturer` int(11) DEFAULT NULL COMMENT '厂商,枚举:ITCompManufacturer',
  `DF_ITProductSeries` int(11) DEFAULT NULL COMMENT '产品系列,枚举:ITCompProductSeries',
  `A_FacePlateId` varchar(50) DEFAULT NULL,
  `A_NeedParent` bit(1) DEFAULT NULL,
  `D_KeyWord` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`P_Guid`),
  UNIQUE KEY `def_comp_KEY` (`P_Guid`),
  KEY `x_Def_Comp_D_Key` (`D_Key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;
DROP TABLE IF EXISTS `i_incident`;
CREATE TABLE `i_incident` (
  `P_Guid` varchar(40) NOT NULL COMMENT '主键,唯一标识',
  `D_Owner` varchar(40) DEFAULT NULL COMMENT '所有者,单选一个用户(不是角色)',
  `D_Title` varchar(300) NOT NULL COMMENT '摘要',
  `D_Title_Confirm` varchar(300) DEFAULT NULL COMMENT '摘要,工程师确认',
  `AE_ChannelModule` int(11) NOT NULL COMMENT '来源模块,枚举ChannelModule:1=Monitor,2=NetWork,3=Syslog,4=SnmpTrap,5=Netflow,6=HelpDesk,9=Custom',
  `AE_BSMType` int(11) DEFAULT NULL COMMENT '对应其是哪类监视器的事件  枚举:MonitorBSMType   0=CI,1=可用性,2=容量,3=财务',
  `D_StartTime` datetime NOT NULL COMMENT '开始时间',
  `D_UpdateTime` datetime DEFAULT NULL COMMENT '最后一次修改时间',
  `D_EndTime` datetime DEFAULT NULL COMMENT '关闭时间,如果没有关闭,则为Null',
  `D_Affect` int(11) NOT NULL COMMENT '影响度',
  `D_Urgency` int(11) NOT NULL COMMENT '紧急度',
  `D_PRI` int(11) NOT NULL COMMENT '优先级=影响度×紧急度',
  `D_OPTimes` int(11) DEFAULT NULL COMMENT '被处理过几次',
  `DF_DutyRoleId` varchar(1000) NOT NULL COMMENT 'R-角色1 R-角色2,U-用户1,M-用户2,U-用户3 R-角色3,U-用户4,U-用户5(R-:角色ID,U-:用户ID,M-:主用户ID)',
  `DF_DutyRoleText` varchar(2000) DEFAULT NULL,
  `DF_DutyUserId` varchar(1000) NOT NULL COMMENT '责任人',
  `DF_ApplyUserId` varchar(40) NOT NULL COMMENT '申请事件的用户,如是自动事件,则为【系统】',
  `DF_CreateUserId` varchar(40) NOT NULL COMMENT '创建事件的用户,如是自动事件,则为【系统】',
  `DF_UpdateUserId` varchar(40) DEFAULT NULL COMMENT '最后一次修改用户Id',
  `D_FlowState` int(11) NOT NULL COMMENT '流程状态,枚举FlowState:待确认=1,处理中=2,重打开=3,挂起=4,已处理待验证=5,关闭=6',
  `D_AcceptTime` datetime DEFAULT NULL,
  `D_Detail` varchar(1000) DEFAULT NULL COMMENT '描述',
  `D_Detail_Confirm` varchar(1000) DEFAULT NULL COMMENT '描述,工程师确认',
  `A_AlarmCount` int(11) DEFAULT NULL,
  `DE_ITManufacturer` int(11) DEFAULT NULL COMMENT '厂商,枚举:ITCompManufacturer',
  `DE_ITCatalog` int(11) DEFAULT NULL COMMENT '主类别,枚举:ITCompCatalog',
  `DE_ITFunction` int(11) DEFAULT NULL COMMENT '子类别,枚举:ITCompFunction',
  `DE_ITProductSeries` int(11) DEFAULT NULL COMMENT '产品系列,枚举:ITCompProductSeries',
  `DE_CITypeKey` varchar(40) DEFAULT NULL COMMENT '设备CI的Key',
  `A_RelatvieServiceId` varchar(500) DEFAULT NULL COMMENT '相关的服务id,由逗号分隔',
  `DF_Path_Custom` varchar(150) DEFAULT NULL COMMENT '外键,关联I_Incident_Catalog.A_Path,自定义类别',
  `A_IsReportToHigerLevel` bit(1) DEFAULT NULL COMMENT '是否上报给了上级',
  `A_ReportToHigerLevelObjectId` bigint(20) DEFAULT NULL COMMENT '上报给上级的单据的id',
  `A_ReportDateTime` datetime DEFAULT NULL,
  `A_RelaMainService` varchar(40) DEFAULT NULL COMMENT '影响的主服务',
  `AF_LastHistoryId` varchar(40) DEFAULT NULL COMMENT '最后一次处理历史的id',
  `D_CustomerDegree` int(11) DEFAULT NULL COMMENT '用户满意度,枚举:CustomerDegree',
  `D_DegreeDetail` varchar(500) DEFAULT NULL COMMENT '客户满意度描述',
  `AF_SLAId` varchar(40) DEFAULT NULL COMMENT '相关sla级别的id',
  `D_Number` bigint(20) NOT NULL AUTO_INCREMENT,
  `D_HopeEndTime` datetime DEFAULT NULL COMMENT '期望的解决时间',
  `CDDY` int(11) NOT NULL,
  `AF_SourceITCompId` varchar(40) DEFAULT NULL,
  `AF_SourceObjectId` varchar(40) DEFAULT NULL,
  `D_MState` int(11) DEFAULT NULL,
  `IsChangeToOK` bit(1) DEFAULT NULL,
  PRIMARY KEY (`D_Number`),
  UNIQUE KEY `i_incident_KEY` (`D_Number`),
  KEY `IX_PF_Inc_Datetime` (`D_StartTime`),
  KEY `x_AE_ChannelModule` (`AE_ChannelModule`),
  KEY `x_AF_SourceITCompId` (`AF_SourceITCompId`),
  KEY `x_AF_SourceObjectId` (`AF_SourceObjectId`),
  KEY `x_D_FlowState` (`D_FlowState`),
  KEY `x_DF_CreateUserId` (`DF_CreateUserId`),
  KEY `IX_Inc_Id` (`P_Guid`),
  KEY `IX_IsChangeToOK` (`IsChangeToOK`),
  KEY `IX_AlarmCount` (`A_AlarmCount`)
) ENGINE=InnoDB AUTO_INCREMENT=56989 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

数据整合的脚本:

insert into inf_monitor_data
  (ID,
   IT_Catalog,
   IT_Function,
   Business_Name,
   Control_Address,
   Title,
   Detail,
   Start_Time,
   End_Time,
   BSM_Type,
   Status,
   Remarks)
  select i.P_Guid,
         case c.DE_ITCatalog
           when 1 then
            '应用'
           when 2 then
            '主机系统'
           when 3 then
            '主机硬件'
           when 4 then
            '网络设备'
           when 6 then
            '存储'
           else
            '其他'
         end,
         case c.DE_ITFunction
           when 101 then
            '网站'
           when 105 then
            '数据库'
           when 106 then
            '中间件'
           when 107 then
            'Web Server'
           when 201 then
            '服务器'
           when 402 then
            '交换机'
           when 403 then
            '防火墙'
           when 404 then
            '负载均衡'
           when 412 then
            '入侵防护'
           else
            '其他'
         end,
         c.D_BusinessName,
         c.D_ControlAdderss,
         i.D_Title,
         i.D_Detail,
         i.D_StartTime,
         i.D_EndTime,
         case i.AE_BSMType
           when 0 then
            'CI'
           when 1 then
            '可用性'
           when 2 then
            '容量'
           when 3 then
            '财务'
           else
            '其他'
         end,
         '0',
         ''
    from i_incident i
    Left outer join c_itcomp c
      on i.AF_SourceITCompId = c.P_Guid;

在远程库B中,创建用户s_monitor,并且将的monitor.inf_monitor_data表授权给s_monitor用户,然后提供给本地库A读写。

mysql> use monitor;
mysql> CREATE USER 's_monitor'@'%' IDENTIFIED BY 's_monitor';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON monitor.inf_monitor_data TO s_monitor IDENTIFIED BY 's_monitor';
Query OK, 0 rows affected (0.00 sec)

#####################################################################下面的IP为B库的ip
mysql> GRANT ALL PRIVILEGES ON monitor.inf_monitor_data TO s_monitor@192.168.12.*** IDENTIFIED BY 's_monitor';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR s_monitor;
+----------------------------------------------------------------------------------------------------------+
| Grants for s_monitor@%                                                                                   |
+----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 's_monitor'@'%' IDENTIFIED BY PASSWORD '*9BCC44AF82455FA4B8F72DC435F1FE3BEEA8E5C9' |
| GRANT ALL PRIVILEGES ON `monitor`.`inf_monitor_data` TO 's_monitor'@'%'                                  |
+----------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

在本地库A中,创建用户link表,访问远程库B中的inf_monitor_data

mysql> use smartdb;
Database changed
mysql> CREATE TABLE `link_inf_monitor_data` (
    ->   `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '编号',
    ->   `IT_Catalog` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主类别',
    ->   `IT_Function` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '子类别',
    ->   `Business_Name` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '业务名称',
    ->   `Control_Address` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '管理地址,设备Ip|数据库服务名|URI地址',
    ->   `Title` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '摘要',
    ->   `Detail` varchar(2000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '描述',
    ->   `Start_Time` datetime NOT NULL COMMENT '采集查询起始时间',
    ->   `End_Time` datetime DEFAULT NULL COMMENT '采集查询结束时间',
    ->   `BSM_Type` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '对应其是哪类监视器的事件',
    ->   `Status` varchar(3) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '处理标记',
    ->   `Remarks` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '备注',
    ->   PRIMARY KEY (`id`)
    -> ) 
    -> ENGINE=FEDERATED DEFAULT CHARSET=utf8
    -> CONNECTION='mysql://s_monitor:s_monitor@192.168.12.***:3306/monitor/inf_monitor_data';
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from link_inf_monitor_data;
+----------+
| count(*) |
+----------+
|    56740 |
+----------+
1 row in set (0.24 sec)

mysql> 

脚本及说明如下:

#连接到远程库B中s_monitor用户下的inf_monitor_data
CONNECTION='mysql://s_monitor:s_monitor@192.168.12.***:3306/monitor/inf_monitor_data';
DROP TABLE IF EXISTS `link_inf_monitor_data`;
CREATE TABLE `link_inf_monitor_data` (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '编号',
  `IT_Catalog` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '主类别',
  `IT_Function` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '子类别',
  `Business_Name` varchar(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '业务名称',
  `Control_Address` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '管理地址,设备Ip|数据库服务名|URI地址',
  `Title` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '摘要',
  `Detail` varchar(2000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '描述',
  `Start_Time` datetime NOT NULL COMMENT '采集查询起始时间',
  `End_Time` datetime DEFAULT NULL COMMENT '采集查询结束时间',
  `BSM_Type` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '对应其是哪类监视器的事件',
  `Status` varchar(3) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '处理标记',
  `Remarks` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) 
ENGINE=FEDERATED DEFAULT CHARSET=utf8
CONNECTION='mysql://s_monitor:s_monitor@192.168.12.***:3306/monitor/inf_monitor_data';

<!--
s_monitor:s_monitor=
username:password
192.168.12.***=source ip
3306=source mysql server listener port
monitor=source database name
inf_monitor_data=source table name
-->

创建触发器

mysql> use mysql;
Database changed
mysql> 

DROP TRIGGER IF EXISTS t_afterinsert_on_i_incident;

CREATE TRIGGER t_afterinsert_on_i_incident 

AFTER INSERT ON i_incident

FOR EACH ROW

BEGIN
	 
  insert into link_inf_monitor_data
  (ID,
   IT_Catalog,
   IT_Function,
   Business_Name,
   Control_Address,
   Title,
   Detail,
   Start_Time,
   End_Time,
   BSM_Type,
   Status,
   Remarks)
  select i.P_Guid,
         case c.DE_ITCatalog
           when 1 then
            '应用'
           when 2 then
            '主机系统'
           when 3 then
            '主机硬件'
           when 4 then
            '网络设备'
           when 6 then
            '存储'
           else
            '其他'
         end,
         case c.DE_ITFunction
           when 101 then
            '网站'
           when 105 then
            '数据库'
           when 106 then
            '中间件'
           when 107 then
            'Web Server'
           when 201 then
            '服务器'
           when 402 then
            '交换机'
           when 403 then
            '防火墙'
           when 404 then
            '负载均衡'
           when 412 then
            '入侵防护'
           else
            '其他'
         end,
         c.D_BusinessName,
         c.D_ControlAdderss,
         i.D_Title,
         i.D_Detail,
         i.D_StartTime,
         i.D_EndTime,
         case i.AE_BSMType
           when 0 then
            'CI'
           when 1 then
            '可用性'
           when 2 then
            '容量'
           when 3 then
            '财务'
           else
            '其他'
         end,
         '0',
         ''
    from i_incident i
    Left outer join c_itcomp c
      on i.AF_SourceITCompId = c.P_Guid
	where i.P_Guid=new.P_Guid; 

END;

验证触发器 

mysql> INSERT INTO `i_incident` VALUES ('9df5f3fa-df53-4f8e-8111-135ebf48be54', '', '192.168.10.186的[JVM]容量异常', '', '1', '2', '2017-03-03 09:55:29', '2017-03-03 09:55:29', null, '1', '1', '1', '0', '1635f6d8-f14f-41cb-987d-30f9f7f0d8d5', '', 'f5a03252-6944-49b1-a61c-15d09230f590,64015112-f056-4f32-93f3-c9d59997a967,5d6beb49-c573-4588-b46e-3299a9566de8', 'System', 'System', 'System', '1', null, '当前:使用率=[94.39%];剩余内存=[4.93MB];内存总量=[87.89MB]\r\n阀值:使用率(%) > 90', '', '0', '900', '1', '106', '2302', 'WSJVM', '', '', null, null, null, '', 'd767e13a-cd13-44ba-a2f7-3e5e4334a327', '0', '', '', '56988', null, '201703', '911be2ac-3db6-4abb-96ac-910a5e6779d1', '8ba66b5d-9ee2-464c-bda6-13f5e1673434', '2', '');
mysql> use smartdb;
Database changed
mysql> select * from link_inf_monitor_data where id = '9df5f3fa-df53-4f8e-8111-135ebf48be54';
+--------------------------------------+------------+-------------+---------------+-----------------+------------------------------------+----------------------------------------------------------------------------------------------------------+---------------------+----------+----------+--------+---------+
| id                                   | IT_Catalog | IT_Function | Business_Name | Control_Address | Title                              | Detail                                                                                                   | Start_Time          | End_Time | BSM_Type | Status | Remarks |
+--------------------------------------+------------+-------------+---------------+-----------------+------------------------------------+----------------------------------------------------------------------------------------------------------+---------------------+----------+----------+--------+---------+
| 9df5f3fa-df53-4f8e-8111-135ebf48be54 | 应用       | 中间件      |               | 192.168.10.186  | 192.168.10.186的[JVM]容量异常      | 当前:使用率=[94.39%];剩余内存=[4.93MB];内存总量=[87.89MB]阀值:使用率(%) > 90                         | 2017-03-03 09:55:29 | NULL     | 容量     | 0      |         |
+--------------------------------------+------------+-------------+---------------+-----------------+------------------------------------+----------------------------------------------------------------------------------------------------------+---------------------+----------+----------+--------+---------+
1 row in set (0.00 sec)

mysql> 

--end--

© 著作权归作者所有

共有 人打赏支持
郑加威
粉丝 91
博文 566
码字总数 868224
作品 0
杭州
架构师
MySQL的FEDERATED引擎实现类Oracle的DBlink

随着业务的复杂度不断的增加、数据库不断的切分,在分布式系统中往往一台或几台数据库并不能满足我们的需求,所以常常需要多台同时时用,而在平时需要通过其它服务器的数据库获取信息最为方便...

往事_Jim_遗
2017/12/04
0
0
Oracle远程连接MySql

求助数据库大神,Oracle远程连接MySql应该怎么设置? 需求:Oracle调用MySql中的表 问题:除了设置透明网关还有没有其他方法,类似于Dblink,有详细过程最佳

_Tomorrow
2016/12/12
181
0
一些非常有用的 PostgreSQL 扩展

我亲爱的朋友们,今天让我们来讨论下 PostgreSQL 以及该数据库最有用的一些扩展。 PostgreSQL 是一个关系型数据库管理系统,主要特点: 数据库支持几乎无限的大小; 强大而且可靠的事务复制机...

红薯
2012/04/23
6.1K
2
oracle通过dblink连接mysql配置详解(全Windows下)

oracle通过dblink连接mysql配置详解(全Windows下) 关于oracle通过dblink连接mysql,经过了两周的空闲时间研究学习,终于配置好了,真是不容易啊,仔细想想的话,其实也没花多长时间,就是刚...

幸运券发放
07/14
0
0
oracle使用dblink跨库查询的例子

本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下。 oracle dblink跨库查询 方法一: 首先,创建数据库链接: 复制代码代码示例: CREATE ...

Carl_
2014/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

文件的压缩与解压(linux)

Linux下*.tar.gz文件解压缩命令 1.压缩命令:   命令格式:tar -zcvf 压缩后文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 2.解压缩命令: ...

qimh
32分钟前
3
0
invalid character found in the request target 异常

这个异常时因为Tomcat 9不支持请求格式出现“{”等非法字符的问题 因为tomcat版本问题遇到的坑,记录一下。 问题 今天由于要测试一下订单详情页的异步查询,在本地起了一个服务,发送的请求是...

edwardGe
37分钟前
4
0
发现抓包软件fiddler的bug

1个请求他跳转之后,直接400,被拦在了Apache,使用fiddler 的,replay requests 是同样的结果,但是replay composer确是正常的。 也就是说这replay requests 是发原来的包,replay composer...

NLGBZJ
47分钟前
1
0
linux screen 命令详解

shell关闭后, 主机仍然运行 screen命令 启动jenkins以后, screen, 然后按ctrl+a 再按d 这样暂停了子界面, 这时候回到了父界面 用screen –ls查看目前子界面的状态 [root@free /]# screen -l...

SuShine
48分钟前
4
0
mac机器切换无线网络导致网页不能打开的问题

问题: 公司和家里使用不同的WI-FI,每次从家到公司时自动切换网络后,公司的许多地址不能访问, ping域名是可以ping同的,但是网页却打不开... 问题分析: 初步猜想是DNS缓存的问题? 对于MAC系统没...

Lennie002
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部