MySQL数据的备份与导入

最近更新时间:2019-02-22 10:45:48

MySQL数据的备份与导入

mysqldump是MySQL官方提供的逻辑备份工具,它可以将原数据库中的数据对象和数据转换为SQL语句,并将这些SQL语句重放到目的数据库中,从而达到迁移数据的目的。同时,mysqldump支持将结果输出为CSV,带分隔符的文本,XML等格式。

详细的使用手册可以参见官方文档:https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html

数据的备份

备份整个数据库

进入到MySQL的bin目录下执行

mysqldump -h 192.168.1.1 -uroot -ppwd dbname > \temp\db.sql

-h 选项指定机器的ip

-u 选项指定使用的用户名

-p 选项指定密码,密码和选项间不要有空格

dbname 需要备份的数据库名

如果需要指定数据库端口,也可以使用

mysqldump -h ip -P3306 -uroot -ppwd dbname > \temp\db.sql

备份数据库表结构

只备份表结构,不备份数据

mysqldump -uroot -ppwd -d dbname > \temp\db.sql·

备份单张数据表:

mysqldump -uroot -ppwd dbname tablename > \temp\db.sql

备份多张数据表

mysqldump -uroot -ppwd dbname table1 table2 > \temp\db.sql

远程备份

mysqldump -h ip -uroot -ppwd dbname > \temp\db.sql

数据恢复

将上一步导出的数据导入到数据库中。可以通过这两种方式进行:

利用管道重定向

mysql -h ip -uroot -ppwd -f < \temp\db.sql

用MySQL客户端

先登录MySQL客户端,然后执行:

source \temp\db.sql;

mysqldump常用参数

·--compress 客户端服务端均支持压缩协议时开启。(暂时不需要)

·--host=host_name 远程MySQL服务器的host。

·--password=password 远程MySQL服务器用户的密码。

·--port=port_num 远程MySQL服务器端口号。

·--user=user_name 远程MySQL服务器用户名。

·--max_allowed_packet 最大包长度,保证服务器客户端相适应。 (暂时不需要)

·--net_buffer_length 服务端的该参数至少要大于等于客户端参数 。(暂时不需要)

·--no-defaults 禁止读取配置文件,以免实例中有未知配置文件影响执行结果。

·--force 在dump过程中中遇到错误也继续执行。

·--log-error=file_name 错误日志输出文件名设置。

·--character-sets-dir=dir_name 指定已安装字符集目录。

·--default-character-set=charset_name 指定默认字符集。

·--no-set-names 禁用输出文件中包含set names语句。

·--set-charset 在输出文件中添加set names语句。

·--apply-slave-statements 在slave执行备份时,会在change master to 语句前执行stop slave,在备份结束后执行start slave。

·--dump-slave=2 在slave执行备份,并附带change master to 信息,该信息是注释,并不会生效。(这个参数没有用处,因为我们接下来增量的备份还是从这个节点,master的信息并没有什么用)

·--master-data=2 备份,以注释的形式导出master信息。该参数默认关闭--lock-tables,打开--lock-all-tables。开启--delete-master-logs。需要reload权限。删除binlog,这个参数慎重使用。

·--all-databases 备份全部表。

·--databases 备份指定数据库。

·--events 从mysql.event 表备份事件,这时帐号需要对mysql库有访问权限。

·--no-data 只备份表结构。

·--routines 从mysql.proc表备份函数和存储过程。需要对mysql库有访问权限。

·--tables 备份指定表。

·--triggers 备份触发器,默认开启,必须对备份的表有TRIGGER权限。

·--skip-triggers 关闭触发器备份。

·--extended-insert 使用multiple-row insert 语法。

·--add-locks 在结果文件中每个表前后分别添加LOCK TABLES,UNLOCAK TABLES。这个会加速insert

·--lock-all-tables 备份开启前使用全局锁。默认关闭--single-transaction,--locak-tables。

·--lock-tables 备份每个数据库前,在会对该库下所有表加读锁。数据库级别一致性。

金山云,开启您的云计算之旅

注册有礼