Loading

Mysql备份与还原

一、mysqldump备份

1. mysqldump的三种语法格式

mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases

示例

mysqldump -uroot -p -h192.168.103.31 -d u_learning_report > u_learning_report.sql
  • -u: 用户名
  • -p: 密码(回车后输入,避免密码泄漏)
  • -h: 数据库地址(不带端口)
  • -d:只导出表结构
  • u_learning_report:数据库的名称

2. mysqldump常用的options的值

选项名称 描述 默认值
--add-drop-database 在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句 false
--add-drop-table 在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句 true
--add-locks 用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个表转储 true
--all-databases 转储所有数据库中的所有表 false
--allow-keywords 允许创建作为关键字的列名 false
--compatible 生成与其他数据库系统或较旧的 MySQL 服务器更兼容的输出 (No default value)
--complete-insert 使用包含列名的完整 INSERT 语句 false
--compress 压缩客户端和服务器之间发送的所有信息 false
--databases 指定数据库名称 false
--default-character-set 指定默认字符集 utf8
--help 显示帮助信息 (No default value)
--host MySQL 服务器所在的主机 localhost
--insert-ignore 编写 INSERT IGNORE 而不是 INSERT 语句 false
--lock-all-tables 锁定所有数据库中的所有表 false
--lock-tables 在转储之前锁定所有表 true
--no-create-db 不要写 CREATE DATABASE 语句
--no-data 不要转储表格内容 false
--password 数据库密码
--port 端口 0
--replace 编写 REPLACE 语句而不是 INSERT 语句 false
--skip-add-drop-table 不要在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--skip-add-locks 不要加锁
--tables 覆盖 --databases 或 -B 选项
--user 连接到服务器时使用的 MySQL 用户名
连接选项
  • --bind-address=ip_address

在具有多个网络接口的计算机上,使用此选项选择用于连接 MySQL 服务器的接口。

  • --host=host_name, -h host_name

从给定主机上的 MySQL 服务器转储数据。默认主机是localhost.

  • --port=port_num, -P port_num

对于 TCP/IP 连接,要使用的端口号。

  • --password[=password], -p[password]

用于连接到服务器的 MySQL 帐户的密码。密码值是可选的。如果没有给出, mysqldump会提示输入一个。如果给定,则或 和后面的密码之间 不能有空格。如果未指定密码选项,则默认为不发送密码。 --password=-p

在命令行上指定密码应该被认为是不安全的。为避免在命令行上提供密码,请使用选项文件。请参见 第 6.1.2.1 节,“密码安全的最终用户指南”。

要明确指定没有密码并且mysqldump不应提示输入密码 ,请使用该 --skip-password 选项。

DDL 选项
  • --add-drop-database

DROP DATABASE 在每个CREATE DATABASE语句之前 写一个语句。此选项通常与--all-databasesor --databases选项结合使用, 因为CREATE DATABASE除非指定了这些选项之一,否则不会编写任何语句。

  • --add-drop-table

DROP TABLE在每个CREATE TABLE 语句之前 写一个语句。

  • --user=user_name, -u user_name

用于连接到服务器的 MySQL 帐户的用户名。

例子

要备份整个数据库:

mysqldump db_name > backup-file.sql

要将转储文件加载回服务器:

mysql db_name < backup-file.sql

mysqldump对于通过将数据从一个 MySQL 服务器复制到另一个来填充数据库也非常有用:

mysqldump --opt db_name | mysql --host=remote_host -C db_name

您可以使用一个命令转储多个数据库:

mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

要转储所有数据库,请使用以下 --all-databases选项:

mysqldump --all-databases > all_databases.sql
posted @ 2021-09-23 14:07  IT搬瓦工  阅读(35)  评论(0编辑  收藏  举报