
用mysqldump备份数据库时,会不会Lock表
若以下回答无法解决问题,邀请你更新回答
展开全部
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文件中创建表结构的命令。
一、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文件中创建表结构的命令。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用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
好文要顶 关注我 收藏该文
例如:
用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
好文要顶 关注我 收藏该文
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询