备份 MySQL 要用到 mysqldump。mysqldump 是 MySQL 自带的逻辑备份工具,它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的 insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。
mysqldump 的基本用法
mysqldump [OPTIONS] database [tables]
- 如果你不给定任何表,整个数据库将被导出。
- 通过执行
mysqldump --help ,你能得到你 mysqldump 的版本支持的选项表。
此外,mysqldump 还支持很多其他选项,例如:
--all-databases, -A :备份所有数据库。
--databases, -B :用于备份多个数据库。如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldump 把每个名字都当作为数据库名。
--force, -f :即使发现 sql 错误,也忽略错误继续备份。
--host=host_name, -h host_name :备份指定主机上的数据库。
--no-data, -d :只导出表结构,不导出数据。
--password[=password], -p[password] :连接数据库使用的密码。
--port=port_num, -P port_num :指定连接数据库的端口号。
在使用 mysqldump 时,你需要根据你的需求选择合适的选项。同时,你也需要确保你有足够的权限来访问和备份数据库。
请注意,mysqldump 生成的备份文件是 SQL 脚本,你可以使用任何文本编辑器打开和查看。当你需要恢复数据时,你可以使用 mysql 命令来执行这个 SQL 脚本,将数据恢复到数据库中。
在使用 mysqldump 进行备份和恢复时,请务必小心操作,避免数据丢失或损坏。建议在正式操作前,先在一个测试环境中进行验证,确保操作的正确性和安全性。
手动备份
$ mysqldump -u root -p 数据库名 > 数据库名.sql
Enter password:
直接生成压缩文件:
$ mysqldump -u root -p 数据库名 | gzip > 数据库名.sql.gz
Enter password:
如何才能做到不输入密码?毕竟要做到定时自动备份总不能到备份时间后人工敲密码吧。
使用 ~/.my.cnf 配置文件:
-
在 MySQL 用户的家目录下创建一个名为 .my.cnf 的配置文件。例如,如果 MySQL 用户是 root ,则文件路径为 /root/.my.cnf 。
-
在该文件中添加以下内容:
[mysqldump]
user=your_mysql_username
password=your_mysql_password
将 your_mysql_username 和 your_mysql_password 替换为您的 MySQL 用户名和密码。
-
设置文件的权限,确保只有文件所有者可以读取它:
chmod 600 ~/.my.cnf
-
现在,当您以该用户身份运行 mysqldump 命令时(不要带 -p 参数),它将自动从 .my.cnf 文件中读取用户名和密码,而无需手动输入。
定时自动播放
创建备份脚本:
#!/bin/sh
dbname='数据库名'
mysqldump -u root $dbname | gzip > /data/backup/db/$dbname-`date +"%Y%m%d"`.sql.gz
设置文件的执行权限:
chmod 755 db_backup.sh
配置定时任务:
$ crontab -e
0 1 * * * "/绝对路径/db_backup.sh"
这样就可以每天在凌晨 1 点钟执行备份任务了。
|