您的位置:首页 > 数据库 > MySQL

mysql数据备份还原,计划任务

2013-05-04 23:59 1121 查看
一)mysqldump是线上的逻辑备份。备份的是建表、建库、插入等操作所执行SQL语句。

mysqldump导出的数据时刻迁移到其它数据库的表。它的备份速度要比直接copy慢。

1,备份一个数据库或者一张表

mysql>mysqldump [option] dbname [tablename]

#mysqldump 数据库 表名 表名 …… -u username -p

2,同时备份多个数据库语法

mysql>mysqldump [option] --database [dbname1,dbname2]

3,备份服务器上的所有数据

mysql>mysqldump --all-database

4,命令行下

$mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql

例子:
备份
[mysql@~]$mkdir /backup
[mysql@mysql]$ mysqldump -uroot -p123 -h 1.1.1.20 --all-database > /backup/alldb.sql
[mysql@mysql]$mysqldump -uroot -p123 -h 1.1.1.20 -B school service > /backup/school+service.sql
[mysql@mysql]$ mysqldump -uroot -p123 -h 1.1.1.20 -B school > /backup/school.sql

恢复:
[mysql@backup]$mysql -uroot -p123 -h 1.1.1.20 < /backup/school+service.sql

附)可以再加一个计划任务的小脚本方便自己。

#!/bin/bash

back_dir=/backup

back_date=`date +%F`

user=root

pass=123

if [ ! -d /backup ];then

mkdir -p /backup

fi

mysql -uroot -p123 -e 'flush logs'

for dbname in school service

do

mysqldump -u${user} -p${pass} -B ${dbname} > ${back_dir}/${back_date}_${dbname}.sql

done

二)如果没备份的情况下误删除可以利用mysql的binlog日志文件进行恢复。

恢复前先截断一下日志
mysql -uroot -p123 -e 'flush logs' //截断并产生新的binlog

恢复(一般倒数第二个为最近截断出来的日志):

按文件
mysqlbinlog 倒数第二个binlog |mysql -uroot -p123 整个文件全部执行

按时间:
mysqlbinlog 倒数第二个binlog --start-datetime="2000-12-05 10:02:56"
mysqlbinlog 倒数第二个binlog --stop-datetime="2000-12-05 11:02:54"
mysqlbinlog 倒数第二个binlog --start-datetime="2000-12-05 10:02:56" --stop-datetime="2000-12-05 11:02:54"
mysqlbinlog 倒数第二个binlog --start-datetime="2000-12-05 10:02:56" --stop-datetime="2000-12-05 10:02:56" 错误

按字节数:(如果时间点有重合)
mysqlbinlog 倒数第二个binlog --start-position=260
mysqlbinlog 倒数第二个binlog --stop-position=260
mysqlbinlog 倒数第二个binlog --start-position=260 --stop-position=930
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: