Mysql备份和还原

本文介绍了MySQL数据库的备份和还原操作。通过mysqldump命令详细讲解了如何备份数据库结构、表结构以及数据,同时提到了不同参数的使用,如备份时不包含DROP语句以避免数据丢失。在数据还原部分,讲述了如何使用mysql客户端直接导入SQL脚本或通过SOURCE语法进行数据恢复,强调了文件路径和权限的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

备份

命令行下具体用法如下:

mysqldump -u user_name -p  database_name table_name> file_name.sql;

一些常用的参数:

参数缩写含义
–all-databases-A导出全部数据库
–no-data-d不导出任何数据,只导出数据库表结构
–add-drop-database每个数据库创建之前添加drop数据库语句
–add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用–skip-add-drop-table取消选项)
–default-character-set设置默认字符集,默认值为utf8
–flush-privileges在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候
–force在导出过程中忽略出现的SQL错误
–host-h需要导出的主机信息,如-ht=localhost
–ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:–ignore-table=database.table1 –ignore-table=database.table2 ……
–no-create-db-n只导出数据,而不添加CREATE DATABASE 语句
–no-create-info-t只导出数据,而不添加CREATE TABLE 语句。
–triggers导出触发器。该选项默认启用,用–skip-triggers禁用它。
–single-transaction该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。
–quick-q不缓冲查询,直接导出到标准输出。默认为打开状态,使用–skip-quick取消该选项
–routines-R导出存储过程以及自定义函数
–add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用–skip-add-locks取消选项)
–opt等同于–add-drop-table, –add-locks, –create-options, –quick, –extended-insert, –lock-tables, –set-charset, –disable-keys 该选项默认开启, 可以用–skip-opt禁用
–lock-all-tables-x提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项

需要注意的是--add-drop-table参数,其默认是打开状态,所以会在sql的开头添加一个drop语句,执行该sql文件的时候会先drop对应的表,如果原本表里有数据的话可能会造成数据丢失。


以下为一些实例:

  1. 导出数据库为dbname的表结构(其中用户名为root,密码为dbpasswd,生成的脚本名为db.sql)

    mysqldump -uroot -pdbpasswd -d dbname >db.sql;

  2. 导出数据库为dbname某张表(test)结构

    mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

  3. 导出数据库为dbname所有表结构及表数据(不加-d)

    mysqldump -uroot -pdbpasswd dbname >db.sql;

  4. 导出数据库为dbname某张表(test)结构及表数据(不加-d)

    mysqldump -uroot -pdbpasswd dbname test>db.sql;

还原

用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

直接用 mysql 客户端
例如:

mysql -u xxxx -p xxxx db_name < db_name.sql

用 SOURCE 语法
其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,登入mysql之后:

use database_name;
SOURCE /tmp/db_name.sql;

这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值