1.MySQL的完全备份
- mysqldump命令备份数据库
◆ 备份单个库
语法:
mysqldump -u 用户名 -p [密码] [选项] [库名] > /备份路径/备份文件名
例如:
mysqldump -u root -p yiku > /backup/yiku.sql
◆ 备份多个库
语法:
mysqldump -u 用户名 -p [密码] [选项] --databases 库名1 [库名2] ... > /备份路径/备份文件名
例如:
mysqldump -u root -p --databases yiku erku > /backup/yiku-erku.sql
◆ 对所有库备份
语法:
mysqldump -u 用户名 -p [密码] [选项] --all-databases > /备份路径/备份文件名
例如:
mysqldump -u root -p --opt --all-databases > /backup/ku.sql
-
mysqldump命令备份数据表
语法 mysqldump -u 用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名 例如 mysqldump -u root -p yiku yibiao > /backup/yiku-yibiao.sql *mysqldump备份表的结构 mysqldump -u 用户名 -p [密码] [选项] -d 数据库名 表名 > /备份路径/备份文件名 例如 mysqldump -u root -p -d yiku yibiao > /backup/yiku-yibiao.sql
2.MySQL数据恢复
◆ source命令恢复数据库
mysql > source /backup/all-data.sql //使用绝对路径
◆ mysql命令恢复数据库
mysql -u 用户名 -p [密码] < 库备份脚本的路径
◆ 恢复数据表
mysql> source /opt/school_kgc.sql mysql -u 用户名 -p [密码] < 表备份脚本的路径 mysql -u root -p mysql < /backup/yiku-yibiao.sql
3.MySQL增量备份与恢复
◆ 开启二进制日志
vim /etc/my.cnf log-bin=mysql-bin //添加此行开启二进制日志,名称为mysql-bin开头
◆ MySQL二进制日志对备份命令
mysqladmin -u 用户名 -p [密码] flush-logs
◆ 查看到日志文件中的操作语句(重要)
mysqlbinlog --no-defaults --base64-output=decode-rows -v 日志文件名称 /opt/aaa.txt ‘//使用64位解码器按行输出日志文件放到/opt/aaa.txt中‘
例如:mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001 > /opt/bak.txt cat /opt/aaa.txt ‘//查看日志文件的详细信息‘
◆ 一般恢复
mysqlbinlog [--no-defaults] 增量备份文件 | mysql -u 用户名 -p
◆ 断点恢复
恢复数据到指定位置 mysqlbinlog --stop-position=‘操作id‘ 二进制日志 |mysql -u 用户名 -p 密码 从指定的位置开始恢复数据 mysqlbinlog --start-position=‘操作id‘ 二进制日志 |mysql -u 用户名 -p 密码
◆ 基于时间点恢复
从日志开头截止到某个时间点的恢复 mysqlbinlog [--no-defaults] --stop-datetime=‘年-月-日 小时:分钟:秒‘ 二进制日志 |mysql -u 用户名 -p 密码 从某个时间点到某个时间点的恢复 mysqlbinlog [--no-defaults] --start-datetime=‘年-月-日 小时:分钟:秒‘ --stop-datetime=‘年-月-日 小时:分钟:秒‘ 二进制日志 |mysql -u 用户名 -p 密码
◆ 增量恢复的步骤
开启二进制日志-->添加数据-->进行完全备份-->录入新的数据-->进行增量备份(刷新二进制日志)-->模拟故障––>恢复操作
[root@mysql data]# mysqlbinlog --no-defaults --stop-position=‘612‘ /usr/local/mysql/data/mysql-bin.000001 | mysql -u root -pabc123 [root@mysql data]# mysqlbinlog --no-defaults --start-position=‘806‘ /usr/local/mysql/data/mysql-bin.000001 | mysql -u root -pabc123 [root@mysql data]# mysqlbinlog --no-defaults --stop-datetime=‘2020-08-21 11:54:04‘ /usr/local/mysql/data/mysql-bin.000001 | mysql -u root -pabc123 [root@mysql data]# mysqlbinlog --no-defaults --start-datetime=‘2020-08-21 11:54:38‘ /usr/local/mysql/data/mysql-bin.000001 | mysql -u root -pabc123