MySQL 数据库导出

fmms 13年前
     <div>     <span style="font-size:14px;">本文内容主要来自MySQL官方文档:“MySQL5.1 Reference,2.10.3. 将MySQL数据库拷贝到另一台机器”</span>    </div>    <div>     <span style="font-size:14px;">注意:部分参数名与值间可以不用空格,如</span>     <b><span style="font-size:14px;">-uroot</span></b>     <span style="font-size:14px;">或</span>     <b><span style="font-size:14px;">-u root</span></b>     <span style="font-size:14px;">均可;某些参数会有不同含义,如</span>     <b><span style="font-size:14px;">-ppwd</span></b>     <span style="font-size:14px;">和</span>     <b><span style="font-size:14px;">-p pwd</span></b>     <span style="font-size:14px;">有时分别表示密码或数据库。</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">1.</span></b>     <span style="font-size:14px;">数据库导出:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump -uroot -p 数据库名 -h主机地址(IP) > now.sql</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">2.</span></b>     <span style="font-size:14px;">表结构导出:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump -uroot -p123456 -d 数据库名 -h</span>     <span style="color:#337fe5;font-size:14px;">主机地址(IP)</span>     <span style="color:#337fe5;font-size:14px;"> > now.sql</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">3.</span></b>     <span style="font-size:14px;">在其他服务器创建数据库:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqladmin -h </span>     <span style="color:#337fe5;font-size:14px;">主机地址(IP)</span>     <span style="color:#337fe5;font-size:14px;"> create 要创建的数据库名 -p密码</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">4.</span></b>     <span style="font-size:14px;">导出到文件:(仅在shell环境,需要gzip支持)</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump --quick 数据库名 -p | gzip now.gz</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">5.</span></b>     <span style="font-size:14px;">导出到其他服务器:</span>    </div>    <p><span style="color:#337fe5;font-size:14px;">mysqldump --opt 数据库名 -p密码 | mysql -h 远程数据库地址(IP) 远程数据库名 -p远程数据库密码</span></p>    <p><span style="color:#337fe5;"><span style="color:#000000;font-size:14px;">示例:</span></span><span style="color:#337fe5;font-size:14px;">mysqldump --opt db -pdbpwd | mysql -h 127.0.0.1 rdb -prdbpwd</span></p>    <div>     <span style="font-size:14px;">(默认是:-uroot,没有导出存储过程)</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">6.</span></b>     <span style="font-size:14px;">同时导出存储过程:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump --opt 数据库名 -p密码 -R -B | mysql -h 远程数据库地址(IP) 远程数据库名 -p远程数据库密码</span>    </div>    <div>     <br />    </div>    <div>     <b><span style="font-size:14px;">7.</span></b>     <span style="font-size:14px;">单独导出存储过程:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump --opt 数据库名 -p密码 -n -d -t -R | mysql -h </span>     <span style="color:#337fe5;font-size:14px;">远程数据库地址(IP) 远程数据库名 -p远程数据库密码</span>    </div>    <div>     <span style="font-size:14px;">或:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump </span>     <span style="color:#337fe5;font-size:14px;">数据库名 -p密码</span>     <span style="color:#337fe5;font-size:14px;"> -n -d -t -R | mysql -h </span>     <span style="color:#337fe5;font-size:14px;">远程数据库地址(IP) 远程数据库名 -p远程数据库密码</span>    </div>    <div>     <span style="font-size:14px;">导出到其他服务器会报错:</span>    </div>    <p><span style="color:#e53333;font-size:14px;">ERROR 1235 (42000) at line 26: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'</span></p>    <p><span style="color:#000000;font-size:14px;">大意是说MySQL(5.0版)暂不支持在同一操作中导出一张表的多个触发器。</span></p>    <blockquote>     解决办法: 默认不带任何参数的时候 tiggers 值为真,那么我们修改他的值为假,给mysqldump 加上开关: --triggers=false 即可。    </blockquote>    <p><span style="color:#000000;font-size:14px;">参考:</span><a href="http://blog.chinaunix.net/space.php?uid=259788&do=blog&id=2139359" rel="nofollow"><span style="font-size:14px;">http://blog.chinaunix.net/space.php?uid=259788&do=blog&id=2139359</span></a></p>    <p><a href="/misc/goto?guid=4959498449098841573" rel="nofollow"><span style="font-size:14px;">http://blog.csdn.net/stevenyanzhi/article/details/6010229</span></a></p>    <div>     <b><span style="font-size:14px;">8.</span></b>     <span style="font-size:14px;">导出存储过程到文件:</span>    </div>    <div>     <span style="color:#337fe5;font-size:14px;">mysqldump 数据库 -p密码 -ndtR > procedure.sql</span>    </div>    <div>     <span style="font-size:14px;">同样会出现上面的错误,解决方法:</span>    </div>    <p><span style="color:#337fe5;font-size:14px;">mysqldump 数据库 -p密码 -ndtR --triggers=false | mysql -h </span><span style="color:#337fe5;font-size:14px;">远程数据库地址(IP) 远程数据库名 -p远程数据库密码</span></p>    <p><span style="color:#337fe5;"><span style="line-height:21px;color:#000000;font-size:14px;">导出存储过程部分参考了这里:</span></span><span style="font-size:14px;"><a href="/misc/goto?guid=4959498449183330506" rel="nofollow">http://samyu.blog.51cto.com/344284/146428</a></span></p>    <p>引用:</p>    <pre class="brush:shell; toolbar: true; auto-links: false;">参数说明: -n:   --no-create-db -d:   --no-data -t:   --no-create-info -R:   --routines      Dump stored routines (functions and procedures) Mysqldump是客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建活装载表的SQL语句: 主要参数介绍: 1.连接选项   -u,--user=name   -p,--password=name   -h,--host=name   -P,--port=# 2.输出内容选项  --add-drop-database  --add-drop-table  -n;--no-create-db  -d;--no-data  -t;--no-create-info 3.输出格式选项 --compact -c --complete-insert -T(指定数据表中的数据备份为单纯的数据文件和建表SQL两个文件) 注意:xx.sql建表文件是以linux的root用户创建,而xx.txt文件则是一linux的mysql用户创建,因此这两个文件的存放路径一定要保证mysql用户有读写创建文件的权限。 --fields-terminated-by=name(域分隔符) --fields-enclosed-by=name(域引用符) --fields-optionally-enclosed-by=name(域引用可选字符) --fields-escaped-by=name(转义字符) 4.字符集选项 --default--character-set=xx 5.其他选项 -F --flush-logs(备份前刷新日志) -l --lock-tables(给所有的表加读锁)</pre>    <p></p>