简单介绍下mysql的mysqldump使用心得,总结易用性及性能方面的优缺点:
--采用mysqldump导出成SQL,文件时存储在操作的服务器,如在193上操作,远程连接206的mysql服务器,把表lc到出来,执行下面的语句
mysqldump -h10.204.104.206 -uroot -p123456 test lc -t> lc.sql--文件会落地到193服务器上
参数用法解析:
-t 是去掉DDL语句,使得导出的SQL不包含DDL语句(drop及create语句)
其他参数,参见mysqldump的参数用法
--限制条件导出
mysqldump -h your_host -utest -ptest -w "id<300" service_db t_apps > tt.sql
mysqldump -h10.204.104.206 -uroot -p123456 -w "t_id=1" test lc> lc.sql
--采用mysqldump导出成文本,采用“|”来分割数据
mysqldump -h10.204.104.206 -uroot -p123456 test lc -t -T /home/dxl --fields-terminated-by="|"
--不管命令是不是在客户端执行,文件都会落地到原数据库服务器,所有,必须要在原服务器有权限创建文件,才能执行,类似into outfile的用法
设置大参数进行导出
--max_allowed_packet=16777216 --net_buffer_length=16384
总论:易用性方面:mysqldump用于数据库备份还原是比较方便,采用SQL导出方式,如是作为数据迁移,SQL方面限制就比较大,如A表到另外一个库的B表,两个表名如是一样的,可以执行,不一样的话,导出文件还必须是文本格式才行,导出文本格式,有一个比较大的限制就是,表数据导出到文本后,文件时落地在源数据库服务器上的,要FTP到目标数据库服务器才能进行加载。这个限制比较致命,不适合用于ETL操作,一般客户不允许在原服务器存放文件。
速度方面:还是可以的,普通网络,导出可以达到10MB(含FTP时间),这个是公司网络。