我正在尝试将数据库表移动到另一台服务器;复杂的是当前运行该表的机器几乎没有剩余空间;所以我正在寻找可以在网络上运行的解决方案。
我已经尝试过从 src 机器上使用 mysqldumping 数据库并将其通过管道传输到目标的 mysql 中;但是我的数据库有 4800 万行,即使关闭 auto_commit 并将 trx_commit cmd 设置为 2;我的狗慢了。
mysqldump -uuser -ppass --opt dbname dbtable | mysql -h remove.server -uuser -pass dbname
然后我尝试 mysqldump 一次百万行;将它们 scp 到目标机器并执行 mysql < file.sql="" 但这似乎变得越来越慢。我到达了第="" 7="" 个文件(7,000,000)行;而接下来的百万导入用了="" 240="">
我做了一些阅读,mysql 建议使用 CSV LOAD IN FILE 样式导入比插入快 20 倍。所以现在我卡住了。
我可以弄清楚如何使用标准 sql 语法导出为 CSV:
SELECT *
INTO OUTFILE '/tmp/tmpfile'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM table;
但这显然行不通,因为它会很快耗尽我已经很低的磁盘空间。所以我一直在寻找一个开关,让 mysqldump 将 csv 转储到标准输出。从我读过的内容来看,这似乎是不可能的。我能想到的唯一方法是创建一个 FIFO 并将 mysql 指向那里转储 - 然后编写一个同时读取 FIFO 并将其发送到目标服务器的脚本。虽然不太确定如何同步到其他服务器的语法;这让我想到了下一个问题。
假设我可以让 mysql 将 CSV 转储到标准输出而不是文件;然后如何将该输出通过管道传输到目标服务器?如果我能简单地在目标服务器上获得一个 csv 文件,我会很高兴,因为它有更多空间;因为这样我就可以简单地使用文件中的 mysqlimport。
这让我想到了下一点......我很想能够做到这一点:
mysqldump -uuser -ppass --opt dbname --tab /dev/stdout dbtable | mysqlimport -h remove.server -uuser -pass dbname
但看起来 mysqlimport 不支持到它的管道;你必须向它传递一个文件。
打字时突然想到;
是否可以使用上面列出的 FIFO 方法;然后让 mysqlimport 从 FIFO 读取并插入目标服务器?我想唯一的问题是 mysql 转储的速度比导入到目标服务器的速度快;随后填充 src 服务器。
我对如何将 mysql CSV 转储到 stdout 并将其通过网络传输到目标服务器(最好同时导入,但很乐意将其作为文件转储到目标服务器)有点迷茫。
如有任何帮助,我们将不胜感激!
干杯, 本
更新:我正在使用 innodb 表;并且我不能在任何超过 10 分钟的时间内关闭 src 框。
更新: 我现在使用 sshfs 将 dest 上的目录挂载到 src 上,并让 mysql 将 csv 转储到该文件夹中 - 似乎工作正常。然后只需使用 mysqlimport 将其加载到目标数据库即可。
更新:所以现在我已经设法将数据放到目标框中 - 导入仍然像使用 INSERTS 完成一样慢。在 12 小时内导入了 900 万行。这里有些不对劲。有什么想法吗?
更新: 对于那些感兴趣的人...这也不起作用:http://forums.mysql.com/read.php?22,154964
最佳答案
你需要mysqlhostcopy支持scp,当然服务器之间的物理距离会导致流量问题
关于mysql - 将 mysql 表转储到 CSV(stdout),然后将输出隧道传输到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016010/
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我有这样的哈希trial_hash={"key1"=>1000,"key2"=>34,"key3"=>500,"key4"=>500,"key5"=>500,"key6"=>500}我按值降序排列:my_hash=trial_hash.sort_by{|k,v|v}.reverse我现在是这样理解的:[["key1",1000],["key4",500],["key5",500],["key6",500],["key3",500],["key2",34]]但我希望当值相同时按键的升序排序。我该怎么做?例如:上面的散列将以这种方式排序:[["key1",1000],["key3",500
CSV.open(name,"r").eachdo|row|putsrowend我得到以下错误:CSV::MalformedCSVErrorUnquotedfieldsdonotallow\ror\n文件名是一个.txt制表符分隔文件。我是专门做的。我有一个.csv文件,我转到excel,并将文件保存为.txt制表符分隔的文件。所以它是制表符分隔的。CSV.open不应该能够读取制表符分隔的文件吗? 最佳答案 尝试像这样指定字段分隔符:CSV.open("name","r",{:col_sep=>"\t"}).eachdo|row|
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
其实做自媒体的成本并不高,入门只需要一部手机即可!在手机上找视频素材、使用手机剪辑视频、最后使用手机发布视频作品获得收益!方法并不难,今天这期内容就来给粉丝们分享一种小方法,每天稳定收益100-300,抓紧点赞收藏!1、找素材(1)使用手机拍摄自己喜欢的经典段落,使用程序把文案内容提取出来(2)也可以在豆瓣、知乎、微博等网站中找一些自己需要的文案素材(3)把文案进行润色修改,可以加入一些自己的观点(4)视频素材可以使用软件中自带的素材,也可以在素材网站中下载完整版的素材2、文案配音(1)把复制好的文案直接导入小程序中(2)调整音色、音调后一键合成音频即可(3)可以选择自己朗读配音,需要花一点时
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co