mysql backup停止_mysqldump备份命令的常用操作与意外终止的解决方法

本节主要内容:

mysqldump备份命令的常用操作,msyqldump命令意外终止的原因分析与解决方法。

MySQL mysqldump命令学习。

㈠ 常用操作

① 备份全库

语法:

mysqldump -h主机名-P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql

例子:

复制代码 代码示例:

mysqldump -hlocalhost -P3306 -urocky -p123456 db_test > bakfile1.sql

② 带删除表的全库备份

备份MySQL数据库为带删除表的格式、能够让该备份覆盖已有数据库而不需要手动删除原有数据库

语法:

mysqldump -–add-drop-table -u{username} -p{password} {databasename} > {backfile.sql}

例子:

复制代码 代码示例:

mysqldump -–add-drop-table –urocky -p123456 db_test > bakfile2.sql

③ 压缩备份

语法:

mysqldump -h{hostname} -u{username} -p{password} {databasename} | gzip > {backfile.sql.gz}

例子:

复制代码 代码示例:

mysqldump –hlocalhost –urocky –p123456 db_test | gzip > bakfile3.sql.gz

④ 备份某些表

语法:

mysqldump -h主机名-P端口 -u用户名 -p密码 (–tables | –quick) 数据库名 表名1 (表名2 …) > 文件名.sql

例子:

复制代码 代码示例:

mysqldump -hlocalhost -urocky -p123456 db_test tbl_test > bakfile4-1.sql

mysqldump -hlocalhost -P3306 -urocky -p123456 db_test tbl_test > bakfile4-2.sql

mysqldump -hlocalhost -P3306 -urocky -p123456 --quick db_test tbl_test > bakfile4-3.sql

mysqldump -hlocalhost -P3306 -urocky -p123456 --tables db_test tbl_test1 tbl_test2 > bakfile4-4.sql

⑤ 同时备份多个库

语法:

mysqldump -h{hostname} (-P{port}) -u{username} -p{password} –databases {dbname1} {dbname2} {dbname3} > multibackfile.sql

例子:

复制代码 代码示例:

mysqldump -hlocalhost -urocky -p123456 –databases db_test1 db_test2 db_test3 > multibackfile.sql

⑥ 备份服务器上的所有数据库

语法:

mysqldump –all-databases > allbackupfile.sql

⑦ 仅仅备份数据库结构

语法:

mysqldump –no-data –databases {databasename1} {databasename2} > {structurebackfile.sql}

例子:

复制代码 代码示例:

mysqldump –no-data –databases db_test1 db_test2 > structurebackfile.sql

⑧ 导出某个表的部分数据

语法:

mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径

例子:

复制代码 代码示例:

mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql

㈡ 案例分享

① 案例描述:

mysqldump命令常规方式创建备份拉到某机器上恢复、恢复执行很成功、一条错误信息都没看着但等恢复完登录到数据库中一瞅、你猜怎么地、数据不全.

操作:查看备份文件、经过检查、果然、恢复操作确实没有问题、因为备份集中的内容就不全,那么,为什么备份集内容不全?

② 原因分析:

在导出某个视图对象时报错、mysqldump自动中止、因此所有该对象之后的就都没备份了。

③ 场景模拟回放:

复制代码 代码示例:

Session_A:

mysql> use test;

Database changed

mysql> create table rocky (id int,name varchar(100));

Query OK, 0 rows affected (0.04 sec)

mysql> create view rocky_view as select * from rocky;

Query OK, 0 rows affected (0.01 sec)

mysql> rename table rocky to robbin;

Query OK, 0 rows affected (0.03 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

Session_B:

[mysql@localhost bin]$ ./mysqldump --tables test robbin rocky_view > bak.sql

mysqldump: Got error: 1356: View 'test.rocky_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them when doing LOCK TABLES

创建备份时、view对象引用的表对象不存在、执行LOCK TABLES失败、于是mysqldump就中止了。

mysqldump执行过程中遇到任何问题、默认情况下都是直接退出

④ 解决方法:

执行mysqldump时附加--force参数、该参数功能是当遇到错误时忽略、继续执行后面的操作。

这个参数提供类似 Oracle 数据库中exp命令的ignore=y参数的功能、

事实上在 Oracle 数据库中执行exp时通常都会指定ignore、

对应到MySQL数据库、我想在执行mysqldump命令行过程中、--force参数也应做为必备参数调用

㈢ mysqldump意外终止的原因以及解决方法

① 错误现象:

Lost connection to MySQL server at ‘reading initial communication packet’:

原因分析:

因为DNS不稳定导致的

解决方法:

开启skip-name-resolve选项。

② 错误现象:

Lost connection to MySQL server at ‘reading authorization packet’:

原因分析:

从MySQL获取一个可用的连接是多次握手的结果。在多次握手的过程中,网络波动会导致握手失败

解决方法:

让mysqldump重新发起连接请求。

③ 错误现象:

Lost connection to MySQL server during query

原因分析:

mysqldump处理数据过慢(NFS、gzip引起)会导致MySQL主动断开连接

解决方法:

增大net_write_timeout的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值