mysql 导入导出数据库以及函数、存储过程的介绍

mysql 导入导出数据库以及函数、存储过程的介绍,第1张

本篇文章是对mysql中的导入导出数据命令以及函数、存储过程进行了详细的分析介绍,需要的朋友参考下

mysql常用导出数据命令:

1.mysql导出整个数据库

mysqldump

-hhostname

-uusername

-ppassword

databasename

>

backupfile.sql

mysqldump

-hlocalhost

-uroot

hqgr>

hqgr.sql

(如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下)

2.mysql导出数据库一个表

mysqldump

-hhostname

-uusername

-ppassword

database

tablename>

导出的文件名

mysqldump

-hlocalhost

-uroot

hqgr

t_ug_user>

user.sql

3.mysql导出一个数据库结构

 mysqldump

-hhostname

-uusername

-ppassword

-d

--add-drop-table

databasename>d:hqgrstructure.sql

-d

没有数据

--add-drop-table

在每个create语句之前增加一个drop

table

4.如果需要导出mysql里面的函数或者存储过程

mysqldump

-hhostname

-uusername

-ppassword

-ntd

-R

databasename

>

backupflie.sql

mysqldump

-hlocalhost

-uroot

-ntd

-R

hqgr

>

hqgr.sql

其中的

-ntd

是表示导出存储过程;-R是表示导出函数

mysql常用导入数据的命令:

1.mysql命令

mysql

-hhostname

-uusername

-

ppassword

databasename

<

backupfile.sql

2.source命令

mysql>source

backupfile.sql

通用规律只有使用 --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:https://github.com/mysql/mysql-sys

中记录了 sys 库的创建语句将文件下载到本地,然后根据数据库版本,执行以下命令即可。

1、 mysqldump命令备份数据

在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p --databases 数据库1 数据库2 >xxx.sql

2、 mysqldump常用操作实例

2.1备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A >/data/mysqlDump/mydb.sql

2.2备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d >/data/mysqlDump/mydb.sql

2.3 备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t >/data/mysqlDump/mydb.sql

2.4 备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb >/data/mysqlDump/mydb.sql

2.5 备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d >/data/mysqlDump/mydb.sql

2.6 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t >/data/mysqlDump/mydb.sql2

2.7 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 >/data/mysqlDump/mydb.sql

2.8 一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 >/data/mysqlDump/mydb.sql


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/60877.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存