MySQL备份工具——mysqldump

2024-03-12 08:55:58 浏览数 (1)

MySQL的安装包里面提供了“mysqldump”工具,它可以执行逻辑备份,如果执行备份的对象是InnoDB存储引擎,则可以执行热备份,默认情况下,它对所有的引擎执行温备份。在大多数的运维场景中,用户利用Linux的“crontab”,或Windows的任务调度程序自动运行“mysqldump”。

“mysqldump”可以将表的内容转储为文件,具有如下特点:

  • 备份全部的数据库、指定的数据库,或指定的表。
  • 允许在本地或远程进行备份。
  • 独立于存储引擎。
  • 生成文本格式的转储文件。
  • 可在不同的计算机上使用。
  • 灵活的复制/移动策略。
  • 适用于少量的数据导出,但不是一个完整的备份解决方案。

一个基本的使用例如下:

代码语言:javascript复制
mysqldump --username --password=password db_name > backup.file

保证数据一致性

"mysqldump"可以通过如下选项保证数据的一致性:

  • “--master-data”:单独使用该选项,在备份期间通过“FLUSH TABLES WITH READ LOCK”锁定全部的表,如果该值设置为“2”,则能够在输出文件中包括“CHANGE MASER TO”语句,便于搭建另外一台复制的从服务器。
  • “--master-data”和“--single-transaction”:同时使用两个选项时,InnoDB无需锁表并能够保证一致性,在备份操作开始之前,取得全局锁以获得一致的二进制日志位置。当事务的隔离级别为“repeatable read”时,开启“--single-transaction”选项读取InnoDB的数据,可以获得非锁定的数据一致性。
  • “--lock-all-tables”:在转储期间,通过锁定全部的表满足一致性。
  • “--flush-logs”:开启一个新的二进制日志。

“mysqldump”用于创建对象的选项:

  • “--no-create-db”:不写入“CREATE DATABASE”语句。
  • “--no-create-info”:不写入“CREATE DATABASE”语句。
  • “--no-data”:创建数据库和表的结构,但是不包含数据。
  • “--no-tablespaces”:不写入“CREATE LOGFILE GROUP”或“CREATE TABLESPACE”。
  • “--quick”:快速从表中查询一条记录,不使用表的缓冲集。

“mysqldump”用于删除对象的选项:

“--add-drop-database”:在创建数据语句之前增加“DROP DATABASE”语句。

“--add-drop-table”:在创建表语句之前增加“DROP TABLE”语句。

此外,“mysqldump”还有一些其他的通用选项,例如,“--routines”、“--event”,“--trigger”,分别用于转储存储例程、事件调度器的事件,及触发器。“--opt”选项是以下语句的简写:“--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick--set-charset”。它提供了一个快速的转储操作,并产生一个可以快速重新加载到MySQL服务器的转储文件。

恢复数据

利用“mysql”客户端加载转储文件进行数据恢复,例如:

代码语言:javascript复制
mysql --login-path=login-path database < backup_file.sql

也可以将一个数据库复制到另外一台服务器,例如:

代码语言:javascript复制
mysqldump -uuser -ppassword orig-db | mysql -uuser-ppassword copy-db

利用“mysqlimport”,并使用“--tab”选项可以处理用制表符分割的数据文件。“.sql”文件包含“CREATE TABLE”语句,“.txt”文件包含表的数据。加载该表,需要更改备份路径,使用“mysql”客户端处理“.sql”文件,使用“mysqlimport”处理“.txt”文件。例如:

代码语言:javascript复制
cd backup_dir
mysql -uuser -p password database < table.sql
mysqlimport -uuser -ppassword database table.txt

0 人点赞