linux mysql (2台机器数据同步,2机器上各自安装一个mysql服务器 ,机器分别是a b , 复制环境,a 主 b从)
有时候复制会中断,我必须做选择性数据同步(a机器上某个表的部分数据(一般几行)取出来插入到 b机器的对应同名表)
mytable 的记录过大2百万全表导出导入花好几份。我的方案如下a机器上的操作我 用 mysqldump -uroot -p111 mydb mytable -w"id>60 and id< 65" > a.sql (1秒不到)
但是有一个缺点 mysqldump -w方式出来的sql 结构如下DROP TABLE IF EXISTS `mytable `;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mytable ` (
。 KEY `idx_del` (`outcomeId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `mytable `
--
-- WHERE: id>0 limit 1LOCK TABLES `mytable ` WRITE;
/*!40000 ALTER TABLE `mytable ` DISABLE KEYS */;
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
/*!40000 ALTER TABLE `mytable ` ENABLE KEYS */;
UNLOCK TABLES;
b 机器上
a机器把a.sql传到b机器上后, b机器不能直接恢复 需要在另外一个库恢复之后再insert 进入mydb
想问
mysqldump -uroot -p111 mydb mytable -w或者有其他方式
只导出insert的sql 语句
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
这个mysqldump 可以实现吗?
即mysqldump能够选择性导出部分记录 (只要insert的sql语句 不要其他create语句信息以及注释信息) ??()
有时候复制会中断,我必须做选择性数据同步(a机器上某个表的部分数据(一般几行)取出来插入到 b机器的对应同名表)
mytable 的记录过大2百万全表导出导入花好几份。我的方案如下a机器上的操作我 用 mysqldump -uroot -p111 mydb mytable -w"id>60 and id< 65" > a.sql (1秒不到)
但是有一个缺点 mysqldump -w方式出来的sql 结构如下DROP TABLE IF EXISTS `mytable `;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `mytable ` (
。 KEY `idx_del` (`outcomeId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `mytable `
--
-- WHERE: id>0 limit 1LOCK TABLES `mytable ` WRITE;
/*!40000 ALTER TABLE `mytable ` DISABLE KEYS */;
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
/*!40000 ALTER TABLE `mytable ` ENABLE KEYS */;
UNLOCK TABLES;
b 机器上
a机器把a.sql传到b机器上后, b机器不能直接恢复 需要在另外一个库恢复之后再insert 进入mydb
想问
mysqldump -uroot -p111 mydb mytable -w或者有其他方式
只导出insert的sql 语句
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
这个mysqldump 可以实现吗?
即mysqldump能够选择性导出部分记录 (只要insert的sql语句 不要其他create语句信息以及注释信息) ??()
找到第一个出现insert into 的所在行 以及最后一个出现insert into 的所在行
把他们的内容提出来 放到一个新文件
INSERT INTO `mytable ` VALUES (7460112070,2.2,1283073240528,'N',7460112070,'N','Y');
这个mysqldump 可以实现吗?
不能,只能用软件自行编辑
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
----
-- Dumping data for table `mytable`
--
-- WHERE: id>0 limit 100LOCK TABLES `mytable` WRITE;
unlock table`mytable` WRITE;这些 都不要 , 该如何做 ???
-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
--
insert into.....................
现在把
--
-- Not dumping tablespaces as no INFORMATION_SCHEMA.FILES table on this server
--这个去掉 就完全 ok 了
经过2机器验证 是可行的 节省了大量的临时表