服务器要迁移,领导一句把数据库备一下,不少人卡在命令上。MySQL 自带的 mysqldump 就是干这个的,一行命令导出整库,恢复也是一行。
备份单个库
mysqldump -uroot -p mydb > mydb_backup.sql
回车后输入密码,当前目录就生成 mydb_backup.sql,里面是建表语句加 INSERT 数据,用文本编辑器能直接打开看。只备份某张表,库名后面跟表名就行,多张表用空格隔开。
备份全部数据库
mysqldump -uroot -p --all-databases > all.sql
线上 InnoDB 表加个 --single-transaction 参数,备份期间不锁表,业务照常跑,这是生产环境的基本操作。要连存储过程、触发器、事件一起备,加上 --routines --triggers --events 三个参数,省得恢复完发现少了东西。
恢复怎么操作
mysql -uroot -p mydb < mydb_backup.sql
或者登录进 mysql 后用 source 命令指定文件路径,效果一样。恢复前确认目标库存在,没有就先执行 create database 建库,再往里导。
做成每天自动跑
Linux 上把命令写进 crontab,比如每天凌晨 2 点执行一次,文件名里带上日期变量,备份按天归档,旧文件定期清理别把磁盘撑爆。Windows 服务器就用任务计划程序定时跑同样的命令。还有一句要紧的:备份文件必须拷到另一台机器或对象存储才算真备份,放在本机硬盘上,盘一挂就全没了。
实际判断:小库每天全量一次足够;库上了几十 G 再考虑按周全量加每天增量,别一上来就抄大厂方案。