/ 中存储网

MySQL数据库如何快速导入和导出

2014-07-13 15:55:05 来源:中存储网


使用如下mysqldump命令导出的文件,可极短时间恢复数据库
数据库1 DB1(源数据库) 名称 center
数据库2 DB2 (目标数据库)


1.首先查看DB2的缓存区大小
show variables like 'max_allowed_packet';
show variables like 'net_buffer_length';

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set

mysql> show variables like 'net_buffer_length';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| net_buffer_length | 16384 |
+-------------------+-------+
1 row in set

 

2.在DB1中使用mysqldump将源数据导出

mysqldump -uroot -pfroal.134 center --skip-opt --create-option --set-charset --default-character-set=utf8  -e -R --max_allowed_packet=1048576 --net_buffer_length=16384 >DB.sql


max_allowed_packet和net_buffer_length不能比目标数据库的设定数值大,否则可能出错。


-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行

也就是此参数指定了一个缓存区的大小,用来存放用户发送的SQL语句。若接收的SQL语句大于这个缓存区,则自动增加大小,直到max_allowed_packet

将导出的数据导入至JQ2中

3.在DB2中恢复

 需要注意,恢复时应在命令行中用mysql -uroot -p**** 数据库 < 导出文件的路径, 如用navicat或其它msyql图形化工具可能会出现恢复错误导致不成功

这样导入相当于每次执行多条sql语句,快了很多

 


######################################################


其它


导出整个库


msyqldump -uroot -pfroal.134 center >1.txt

仅导出库的存储过程
mysqldump -uroot -p**** -t -d -R dbname >xx.sql

--no-create-info,-t
只导出数据,而不添加 CREATE TABLE 语句。

--no-data,-d
不导出任何数据,只导出数据库表结构。

 

设好主从后存储过程更新,主从同步失败解决方法

一般的主从设置默认是不允许FUNCTION主从同步的。

根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的

一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。

处理过程:
登陆mysql数据库
> set global log_bin_trust_function_creators = 1;
> start slave;

跟踪mysql的启动日志,slave正常运行,问题解决。

每日mysql数据库备份

mysqldump -uroot -p*** node --skip-opt --create-option --set-charset --default-character-set=utf8  -e -R --max_allowed_packet=1048576 --net_buffer_length=16384 >"E:DB_backupnode1-%date:~0,10%.sql"

date:~X,Y 截取X位后至Y位的字符