==============
假想环境:
MySQL 安装位置:C:/MySQL
论坛数据库名称为:bbs
MySQL root 密码:123456
数据库备份目的地:D:/db_backup/

@echo off
C:/MySQL/bin/mysqladmin -u root --password=123456 shutdown
C:/MySQL/bin/mysqldump --opt -u root --password=123456 bbs > D:/db_backup/bbs.sql
C:/MySQL/bin/mysqld-nt
将以上代码保存为backup_db.bat
然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天凌晨5点执行back_db.bat)
二、对于Linux主机
===========
假想环境:
MySQL 安装位置:/usr/local/mysql
论坛数据库名称为:bbs
MySQL root 密码:123456
数据库备份目的地:/var/db_backup/

/usr/local/mysql/bin/mysqladmin -u root --password=123456 shutdown
/usr/local/mysql/bin/mysqldump --opt -u root --password=123456 bbs > /var/db_backup/bbs.sql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
将上述代码保存在/usr/local/sbin/backup_db.sh
对该脚本赋予执行权限:
# chmod 755 /usr/local/sbin/backup_db.sh
加入crontab中自动执行:
# crontab -e
加入:

用mysqldump 来备份数据库
|
写在前面: 注意:mysqldump比直接拷贝数据库文件夹速度要慢 #mysqldump db_name >/path/name.sql 上面的命令意思是把一个库导出到一个SQL文件. 当然,你直接在有ROOT密码的机子上执行以上命令一定会报错.所以,请用 #mysqldump db_name >/path/name.sql -uroot -p 这回会要求你输入密码,输入正确,找找/path下是不是有name.sql文件了? 数据库太大了,想压缩一下?好,用这个命令就行 #mysqldump db_name |gzip >/path/name.gz -uroot -p 想备份全部的库呢? #mysqldump --all-databases >/path/name.sql -uroot -p #mysqldump --all-databases |gzip >/path/name.gz -uroot -p (很明显,这条命令是加压缩的意思) 只想备份一个单独或者几个表? 有时候数据库很大很大,整个库备份就不好管理,那就单独备份 #mysqldump db_name tab_name >/path/sqlname.sql -uroot -p 备份做好了.遇到问题的时候.怎么用备份恢复数据? 再简单不过了, mysql db_name < backup-file.sql -uroot -p 注意:如果你想恢复的数据库是包含授权表的mysql数据库,你需要用--skip-grant-table选项运行服务器。否则,它会抱怨不能找到授权表。在你已经恢复表后,执行mysqladmin flush-privileges告诉服务器装载授权标并使用它们 恢复单个表 恢复单个表较为复杂,如果你用一个由mysqldump生成的备份文件,并且它不包含你感兴趣的表的数据,你需要从相关行中提取它们并将它们用作mysql的输入。这是容易的部分。难的部分是从只运用于该表的更新日志中拉出片断。你会发觉mysql_find_rows实用程序对此很有帮助,它从更新日志中提取多行查询。 |