备份或导出数据库命令mysqldump怎么使用通用规律只有使用 --all-databases (-A) 会 ERROR 1356,那就看看他到底备份了什么东西 。于是喊上同事一起 less 看了下,上下扫了两眼 。突然发现:1. 备份 SQL 文件里 DROP 掉了 mysql.proc;2. 后CREATE了一个新的 mysql.proc;3. LOCK TABLES 和 UNLOCK TABLES 中间居然没有备份 CREATE ROUTINE 任何数据?这不就是相当于每次导入全备都给我一个没有任何 sys schema routines 的全新 mysql.proc 表?那这不就异常的尴尬?
---- Table structure for table `proc`--
---- Dumping data for table `proc`-
真相大白在官方文档【sys-schema-usage】官方文档明确的告诉我们不会备份 sys 库 。但在使用 mysqldump 在执行 --all-databases 会清空 mysql.proc 导致 sys 无法正常使用;这是一个 BUG,并且只存在于 MySQL 5.7.x !
1、mysql_upgrade install or upgrade sys schema
这个方案适用于 sys 库已经因为 mysqldump 导入而损坏的情况下使用 。
注意:mysql_upgrade 在修理 sys 库的同时,还修理 mysql 库和用户库表(期间加锁且速度一般),有极小可能会误伤;使用 mysql_upgrade 的时候要加上 --upgrade-system-tables,不然会扫描用户库表 。
2、全备时同时备份 sys 库
这个方案适用于需要还原的数据库,sys 库也不太正常的情况下使用;在全备后额外再备份一份 sys 库用于修复 。
注意:不适用于做主从时使用它 。
3、使用 databases 全备
这个方案适用于所有场景的全备需求,100% 安全 。
4、使用 mysql-sys 开源代码
如果你的数据库 sys 全部中招了,又是生产库 。那你只能用这个方法;
mysql-sys:
中记录了 sys 库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可 。
mysqldump 如何备份 以及如何解决锁表的问题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=https://www.doubo5.com/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怎么用 mysqldump](http://csimg.miaodongshenghuo.com/221208/0540115204-0.jpg)
文章插图
mysqldump 和mysql 有什么关系mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具,上手简单,学习成本几乎为 0 。备份简单,恢复也简单 。
比如导出单个数据库 ytt: mysqldump ytt/tmp/ytt.sql;
恢复也非常简单:mysql/tmp/ytt.sql
缺点是备份速度慢 。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢 。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复 。
mysql怎样利用对所有数据库进行备份的备份Mysql数据库的常用备份方法是使用使用实用程序mysqldump, 其命令格式如下
# mysqldump [options] database [tables]
其参数的含义为:
options:代表mysqldump的选项,通过mysqldump –help可以查到 。
database: 代表将要备份的数据库
tables:代表将要备份的表,如果不指定任何表,则备份整个数据库 。
使用 mysqldump进行备份非常简单,如果要备份数据库” phpbb_db_backup ”,使用命令:
#mysqldump –u -p phpbb_db_backup/usr/backups/mysql/ phpbb_db_backup.2005.5.6
还可以使用gzip命令对备份文件进行压缩:
秒懂生活扩展阅读
- 怎么查看红米手机是什么版本的
- 苏宁礼品卡如何在苏宁易购上使用
- 大米级别怎么分级
- 奇闻事件簿怎么听不了了
- 耳机带久了会怎么样
- 怎么样制止狗在同一个地方拉屎
- oppo手机上hd怎么关闭
- 腻子粉怎么刮
- 拍卖师怎么考
- 斗鱼怎么样能升级