mysql 备份与恢复

时间:2022-06-01 18:47:04

系统运行中 增量备份 与整体备份

例:每周日整体备份一次,周一到周六备份当天

如果周五出了问题 可以使用周日的整体加上 周一周二周三周四来恢复

备份工具

第三方的收费备份工作

目前我们所学的是系统自带的备份功能

1导出一个库下面的某些表

mysqldump -u用户名 -p密码 库名 表1 表2 表3 >地址/备份文件名称

导出的是 建表语句以及  insert语句

2 导出一个库下面的所有表

mysqldump -u用户名 -p密码 库名 > 地址/备份文件名称

3.如何 以库  为单位导出

mysqldump -u用户名  -p密码 -B  库1 库2 库3 > 地址/备份文件名称 (相比于2多了建库的操作)

4.如何导出所有库

mysqldump -u用户名 -p密码 -A >地址/备份文件名称

恢复:

1.登录到mysql命令行

对于库级别的备份文件

MYSQL>source 备份文件地址

对于表级别的备份文件

Mysql> use 库名

Mysql> source 备份文件地址

2.不登录到mysql命令行

库级别的恢复

mysql -u用户名 -p密码 < 备份文件地址

表级别的恢复

mysql -u用户名 -p密码 库名 <备份文件地址

 

---------------------------------------------------------------------------------------------------------

线上环境  

每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份.

详细说明

1.mysqldump 增量备份配置

执行增量备份的前提条件是MYSQL 打开binlog 日志功能,在my.cnf 中加入

log-bin=/opt/Data/Mysql-bin   (打开并且记录binlog日志的位置) 一般建议放在不同于MYSQL数据目录的磁盘上

mysqldump > 导出数据

mysql    <  导入或者恢复数据  (或者使用source 命令导入数据,导入前要先切换到对应库下)

注意一个细节:

若是mysqldump导出一个库的数据,导出文件为a.sql,然后mysql导入这个数据到新的空库下。 如果新库名和老库名不一致,那么需要将a.sql文件里的老库名改为新库名, 这样才能顺利使用mysql命令导入数据(如果使用source命令导入就不需要修改a.sql文件了)。

     

2.mysqldump 增量备份

假定星期日下午1点执行全量备份,适用于MyISAM 存储引擎

mysqldump --lock-all-tables --flush-logs --master-data=2 -uroot -p test > backup.sql

INNODB 存储引擎将 --lock-all-tables 替换为 --single-transaction

--flush-logs 为结束当前日志,生成新日志文件

--master-data=2 选项将会在输出sql中记录下完全备份后新日志文件的名称

用于日后恢复时参考,例如输出的备份SQL文件中含有

CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;

 

3.mysqldump 增量备份其他说明

如果mysqldump加上 --delete-master-logs