使用mysqldump备份数据库
一、数据库备份
1. 基础备份
#备份单个数据库
mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
#备份多个数据库
mysqldump -u 用户名 -p --databases 数据库1 数据库2 > 备份文件.sql
#备份所有数据库
mysqldump -u 用户名 -p --all-databases > 备份文件.sql
#备份数据库结构(不包括数据)
mysqldump -u 用户名 -p -d 数据库名 > 备份文件.sql
#备份特定表
mysqldump -u 用户名 -p 数据库名 表1 表2 > 备份文件.sql
2. 额外选项(一般组合使用)
mysqldump -u 用户名 -p --single-transaction 数据库名 > 备份文件.sql
–single-transaction 是创建一致性快照的有效工具,特别适用于使用 InnoDB 存储引擎的数据库。在高并发环境下进行备份时,它可以减少对数据库操作的干扰并确保数据一致性。
mysqldump -u 用户名 -p --compress 数据库名 > 备份文件.sql
–compress 选项进行备份时,mysqldump 会在数据传输过程中进行压缩,以减少备份文件的大小。这对于网络传输或存储空间有限的情况特别有用。
需要注意的是,–compress 主要用于客户端与服务器之间的压缩,而不是直接在备份文件上进行压缩。
#备份并包含主服务器状态信息
mysqldump -u 用户名 -p --master-data 数据库名 > 备份文件.sql
#备份并指定主服务器状态信息的位置
#将 CHANGE MASTER TO 语句以注释形式插入到备份文件的前面
mysqldump -u 用户名 -p --master-data=1 数据库名 > 备份文件.sql
#将 CHANGE MASTER TO 语句作为普通 SQL 语句插入到备份文件中,不以注释形式
mysqldump -u 用户名 -p --master-data=2 数据库名 > 备份文件.sql
设置从服务器:当恢复备份时,从服务器可以根据备份文件中的位置信息与主服务器同步。这确保了从服务器能从正确的位置开始复制数据。
确保数据一致性:如果你的系统使用了主从复制,确保备份时记录了正确的主服务器状态信息对于数据一致性和复制过程的正常运行是必要的。
总的来说,–master-data 选项对涉及主从复制的环境非常重要,它可以帮助你更准确地恢复数据库和设置复制关系。
mysqldump -u 用户名 -p --flush-logs 数据库名 > 备份文件.sql
–flush-logs 用于在备份过程中刷新 MySQL 的日志文件。具体来说,它会强制 MySQL 服务器关闭当前的二进制日志文件,并创建一个新的日志文件。这对于备份和恢复过程中确保数据的一致性和日志管理非常有用。
#注意事项
对日志的影响:使用 --flush-logs 会影响 MySQL 的日志管理,因此在使用这个选项时需要考虑日志文件的大小和存储策略。
主从复制:如果你的环境中有主从复制,使用 --flush-logs 可以帮助确保从服务器恢复时的数据一致性,但需要配合 --master-data 等选项使用,以便正确记录主服务器的状态。
总的来说,–flush-logs 是一个有用的选项,尤其是在需要确保备份的一致性和管理日志文件时
二、数据库恢复
#恢复单个数据库
mysql -u 用户名 -p 数据库名 < 备份文件.sql
#恢复所有数据库
mysql -u 用户名 -p < 备份文件.sql
or
不会增加日志体积
mysql> set sql_log_bin =0
mysql> source 备份文件