备份或导出数据库命令mysqldump怎么使用
发布时间:2025-05-12 21:49:54 发布人:远客网络
一、备份或导出数据库命令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,不然会扫描用户库表。
这个方案适用于需要还原的数据库,sys库也不太正常的情况下使用;在全备后额外再备份一份 sys库用于修复。
注意:不适用于做主从时使用它。
这个方案适用于所有场景的全备需求,100%安全。
如果你的数据库 sys全部中招了,又是生产库。那你只能用这个方法;
mysql-sys:
中记录了 sys库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可。
二、如何用mysqldump单独导出一张表
在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看:
mysqldump-uroot-pmysql databasefoo table1 table2> foo.sql
这样就可以将数据库databasefoo的表table1,table2以sql形式导入foo.sql中,其中-uroot参数表示访问数据库的用户名是root,如果有密码还需要加上-p参数
C:\Users\jack> mysqldump-uroot-pmysql sva_rec date_drv> e:\date_drv.sql
mysql的数据导入也是相当便捷的,如:
mysql-uroot databasefoo< foo.sql
这样就可以将foo.sql的数据全部导入数据库databasefoo
mysqldump-u用户名-p密码数据库名>导出的文件名
C:\Users\jack> mysqldump-uroot-pmysql sva_rec> e:\sva_rec.sql
2.导出一个表,包括表结构和数据
mysqldump-u用户名-p密码数据库名表名>导出的文件名
C:\Users\jack> mysqldump-uroot-pmysql sva_rec date_rec_drv> e:\date_rec_drv.sql
C:\Users\jack> mysqldump-uroot-pmysql-d sva_rec> e:\sva_rec.sql
mysqldump-u用户名-p密码-d数据库名表名>导出的文件名
C:\Users\jack> mysqldump-uroot-pmysql-d sva_rec date_rec_drv> e:\date_rec_drv.sql
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
三、怎样在MySQL数据库中导出整个数据库
1、打开命令行,在命令行里输入mysql,然后按回车就可以打开mysql的命令了。要注意的是区分大小写,不能输入Mysql。
2、进入命令后,可以使用use命令来转到我们要查看的数据库。
3、切换了数据库后,我们就可以查看这个数据库的表数据了。通过select语句就可以查询表数据了,但要注意的是每条语句要以分号结束,否则就当语句还没结束。会等待输入。
4、以分号结束语句后,按回车键就能得到从MySQL数据库中导出整个数据库了。