1,备份命令:mysqldump
MySQL数据库自带的备份命令。是逻辑备份,导出的是SQL语句。也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或将输出导入备份的文件的过程。
2,设置使用mysqldump的用户权限
1)mysqldump备份数据需要的权限
对于table来说mysqldump最少要有select权限
对于view来说mysqldump最少要有show view权限
对于trrigger来说mysqldump要有trriger权限
如果要产生一份一致的备份mysqldump要有lock tables权限
# 登陆数据库后执行授权命令
grant select,reload,replication client,show view,lock tables,trigger on *.* to 'DBbackup'@'192.168.1.%' identified by 'DBbackup'; # 查看授权后的信息并刷新
show grants for 'DBbackup'@'192.168.1.%'; flush privileges;
3,使用mysqldump备份和恢复
# 备份操作 mysqldump -uDBbackup -pDBbackup -B mytest > /mnt/mytest_bak_B.sql
说明:加-B参数后,导出的数据文件中已存在创建库和使用库的语句;在恢复过程中不需要手动创建库,可以直接还原恢复。
# 恢复操作
# 删除mytest库
mysql -uDBbackup -pDBbackup -e "drop database mytest;"
# 恢复数据
mysql -uDBbackup -pDBbackup < /mnt/mytest_bak_B.sql
4,指定压缩命令来压缩备份文件
# 备份操作
mysqldump -uDBbackup -pDBbackup -B mytest | gzip > /mnt/mytest_bak_B.sql.gz
说明:mysqldump导出的文件是文本文件,压缩效率很高。
5,备份多个数据库
# 备份操作 mysqldump -uDBbackup -pDBbackup -B mytest wiki | gzip > /mnt/mytest_and_wiki_bak_B.sql.gz
说明:通过-B参数指定相关数据库,每个数据库名之前用空格分隔。当使用-B参数后,将所有数据库全部列全,则等同于-A参数。
6,分库备份
执行一个备份语句就备份一个库,分库备份就是执行多条相同的备份语句,只是备份的库名和备份文件名不同。可以通过shell脚本自动生成并执行相应的操作,也可以把所有单个备份语句写在同一个shell脚本中,通过cron定时任务来备份。
分库备份的意义当所有库都备份成一个备份文件时,恢复其中一个数据比较麻烦。所以分库备份,利于恢复。
for dbname in `mysql -uroot -p123456 -e "show databases;"|grep -Evi "database|infor|perfor"` do mysqldump -uroot -p123456 --events -B $dbname | gzip > /mnt/${dbname}_bak_B.sql.gz done
7,其他
# 导出整个数据库(包含数据库中的数据) mysqldump -u username -p dbname > dbname.sql # 导出数据库结构(不包含数据) mysqldump -u username -p -d dbname > dbname.sql # 导出数据库中的某张数据表(包含数据) mysqldump -u username -p dbname tablename > tablename.sql # 导出数据库中的某张数据表的表结构(不含数据) mysqldump -u username -p -d dbname tablename > tablename.sql