您好,欢迎访问一九零五行业门户网

MySQL备份方案--(利用mysqldump以及binlog二进制日志)

随着数据不断增加,而且为了兼容以后的innodb存储引擎, 所以考虑采用mysqldump全备+日志增量备份的策略。使用mysqldump对于mysql
随着数据不断增加,而且为了兼容以后的innodb存储引擎, 所以考虑采用mysqldump全备+日志增量备份的策略。使用mysqldump对于mysql大部分mysql存储引擎比如myisam、innodb都有很好的支持。
方案一:mysqldump全备份+日志增量备份
1, mysqldump备份方案:
周一凌晨3点全备
周二到周日凌晨3点增量备份
2, 备份步骤
(1) 创建备份目录,备份脚本存放目录
shell > mkdir /usr/mysqlbackup;
shell > chmod 755 /usr/mysqlbackup;
shell > mkdir /usr/mysqlbackup/daily;
shell > chmod 755 /usr/mysqlbackup/daily;
shell > mkdir /usr/script;
shell > chmod 777 /usr/script/*.sh
(2) 启用二进制日志
如果日志没有启开,必须启用binlog,要重启mysqld,首先,关闭mysqld,,打开/etc/my.cnf,加入以下几行:
[mysqld]
log-bin
然后重新启动mysqld,会产生hostname-bin.000001以及hostname-bin.index,前面的日志文件是记录所有对数据的更新操作,后面的文件是存储所有二进制文件的索引,不能轻易被删除。
(3) 全备份,增量备份。
详细见mysqlfullbackup.sh、mysqldailybackup.sh脚本()。
下面是部分shell上单个手动执行的测试命令。
shell> /usr/local/mysql/bin/mysqldump -uroot-pnyuiman25040slave201012301124 --no-create-info=false --order-by-primary=false--force=false --no-data=false --tz-utc=true --flush-privileg
es=false --compress=false --replace=false--insert-ignore=false --extended-insert=true --quote-names=true --hex-blob=true--complete-insert=false --add-locks=true --port=3306 --d
isable-keys=true --delayed-insert=false--create-options=true --delete-master-logs=false --comments=true--default-character-set=utf8 --max_allowed_packet=1g --flush-logs=false -
-dump-date=true --lock-tables=true--allow-keywords=false --events=false --single-transaction=true --routines--all-databases > /backup/mysql/full/mysql_20110104_195546.sql
(4) 设置crontab任务,每天执行备份脚本
shell> crontab –e
#每个星期日凌晨3:00执行完全备份脚本
0 3 * * 0 /usr/scrpit/mysqlfullbackup.sh>/dev/null 2>&1
#周一到周六凌晨3:00做增量备份
0 3 * * 1-6/root/mysqlbackup/mysqldailybackup.sh >/dev/null 2>&1
(5) 清除旧的备份文件。
每天去看查看下备份磁盘空间,删除旧的备份压缩文件。
3, 数据库恢复
【注释】如果增量恢复操作中报“error 1051 (42s02) at line 32: unknown table 'fin_cell_attr_his'”类似的错误,则需要现create一张空表,然后再执行增量恢复。
mysql> createtable tb1 ……;
(1) 全恢复:
用 mysqldump 备份出来的文件是一个可以直接倒入的 sql 脚本,直接用 mysql命令恢复最后一次全备份:
先从备份文件服务器上copy出来,解压缩,再恢复,例如:
shell>/root/s3cmd/s3cmd get s3://csf-backup/mysqldb/ mysql_20101216_231900.sql.tar.gz /usr/mysqlrestore/
shell>/root/s3cmd/s3cmd get s3://csf-backup/mysqldb/ mysql_binlog_20101217_030100.tar.gz /usr/mysqlrestore/
shell>cd /usr/mysqlrestore/
shell>tar -xvf mysql_20101216_231900.sql.tar.gz
shell>tar -xvf mysql_binlog_20101217_030100.tar.gz
刷新日志:
mysql>flush logs;
恢复最后一次全备份命令:
shell>/usr/local/mysql/bin/mysql -uroot -p123456 /mysqlbackup/backup_20101215_adb.sql
恢复最后一次全备份之后的所有增量备份命令:
shell>/usr/local/mysql/bin/mysqlbinlog mysql-bin.00007 mysql-bin.00008mysql-bin.00009 mysql-bin.00010 mysql-bin.00011 | mysql
检查:查看数据库结构以及数据。
相关阅读:
linux下通过mysqldump备份mysql数据库成sql文件
linux中使用mysqldump对mysql数据库进行定时备份
本文的更多详情请继续阅读第2页的精彩内容:
其它类似信息

推荐信息