用mysqldump备份数据库时,会不会Lock表

 我来答
若以下回答无法解决问题,邀请你更新回答
风溥0Ic
2016-08-10 · TA获得超过202个赞
知道小有建树答主
回答量:302
采纳率:25%
帮助的人:271万
展开全部
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。如果给mysqldump进行备份,从库上停止复制的sql线程 然后mysqldump,这个是个很好的选择,因为停止复制就没有写,就不用担心锁表的问题 。下面提供两只备份方法:

一、MyISAM引擎备份
1. 由于MyISAM引擎为表级锁,因此,在备份时需要防止在备份期间数据写入而导致不一致,
2. 所以,在备份时使用--lock-all-tables加上读锁

mysqldump -A -F -B --lock-all-tables |gzip >/data/backup/$(date +%F).tar.gz
3. 特别提示:有关MyISAM和InnoDB引擎的差别和在工作中如何选择,在前面已经详细讲解过了,这里就不在讲了。

二、 InnoDB引擎备份
1. InnoDB引擎为行锁,因此,备份时可以不对数据库加锁的操作,可以加选项--single-transaction进行备份:
mysqldump -A -F -B --single-transaction |gzip >/data/backup/$(date +%F).tar.gz

2. 特别注意:
--single-transaction仅适用于InnoDB引擎。

--master-data=2
会将当前mysql用到的binlog文件的日志名称和位置记录下来 然后搜索change master就行了
mysqldump -uroot -p'passwd' -B ctp1 --lock-all-tables|gzip >/home/mysql/ctp1.$(date +%F).tar.gz
--no--data 仅仅dump数据库结构创建脚本 通过--no-create-info 去掉dump文件中创建表结构的命令。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
OsOy3911
2018-05-14 · TA获得超过250个赞
知道小有建树答主
回答量:2455
采纳率:77%
帮助的人:192万
展开全部
用mysqldump备份数据库时,如果出现when using LOCK TABLES,解决办法是加上 --skip-lock-tables
例如:
用mysqldump备份数据库时出现
29: File './sq_ziyou/uc_applications.MYD'not found (Errcode: 24) when using LOCKTABLES
在数据库名后加--skip-lock-tables即可。
即备份数据库命令为:
/命令目录/mysqldump -u 用户名 -p 数据库名称 --skip-lock-tables > ***.sql
或者
/命令目录/mysqldump -u 用户名 -p --skip-lock-tables 数据库名称> ***.sql
或者
导出 mysqldump
/命令目录/mysqldump -h 线上数据库IP -P 线上数据库端口 -u 用户名 -p --skip-lock-tables 数据库名称>db.sql
好文要顶 关注我 收藏该文
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式