适用于数据量大偶尔需要查询的历史归档业务数据
MySQL提供几百个选项(参数)对数据库各个功能进行配置,并给定默认值,使数据库运行
查看所有选项
或
shell show variables; #数据库命令行查看 mysqld --verbose --help #系统命令查看
查看指定的选项
或
更改选项的值
或通过修改配置文件进行永久修改
查看用户设置的选项
测试
select benchmark(1000000000,10*10);
#benchmark(1000000000,10*10) 将10*10执行1000000000次
开启binlog并指定存放路径
log_bin=/var/lib/mysql/mysql-bin #开启binlog并指定存放路径
server-id=1 #为binlog设置服务id号
#可以使用expire_logs_days参数指定定期清理的时间间隔(单位:天)
binlog以紧凑的二进制方式存储
日志中包含数据和表结构更改事件及其时间戳
无法使用普通的文本查看软件查看其内容,mysql提供了mysqlbinlog工具将二进制数据转换为sql文件
查看
将binlog转换为sql文件
注:在binlog中保存每条记录的头注释
常用相关命令
root@localhost[(none)]>show binary logs; #查看所有日志文件
root@localhost[(none)]>show master status; #查看当前记录日志文件详情
root@localhost[(none)]>root@localhost[(none)]>show binlog events; #查看第一个binlog日志文件中的事件
root@localhost[(none)]>show binlog events in 'mysql-bin.000002'; #查看指定binlog中的事件
show binlog events in 'mysql-bin.000002' from 123; #查看指定binlog中指定起始头注释的事件
[root@tomcat mysql]# mysqlbinlog --start-position=4 --stop-position=123 /var/lib/mysql/mysql-bin.000002
#查看指定的起始头注释
常见术语:
物理备份
逻辑备份
可以使用该文本文件在运行不同体系结构的其他主机上重新装入数据库
- 要求 MySQL 服务器在备份期间运行 (不能冷备)
基于数据库复制的备份
完全备份
不完全备份
- 仅仅备份部分数据库的文件
冷备
物理备份
冷备
关闭数据库服务
使用cp命令备份整个数据库到指定目录下
温备
为数据库加表只读锁
复制数据库内容至备份目录(同上)
复制完成解锁
还原
清理已损坏的数据库文件
还原
使用mysqldump进行逻辑备份
属于mysql提供的逻辑备份工具
将数据库的内容转储到文本文件
可以指定所有数据库、特定数据库或特定表
可以备份本地或远程数据库
和存储引擎无关
适合数据量较小的数据库数据导出
不能关闭数据库,因此备份策略和时机可以灵活
语法:mysqldump -uUSERNAME -p --opt DB > FILENAME.sql
常用备份选项
mysqldump -uroot -p --all-databases --single-transaction --master-data=2 --routines --triggers --events --flush-logs > /backup/all-db.sql
#备份所有数据库
mysqldump -uroot -p --databases demo test1 >/backup/dbs.sql
#备份一个或多个数据库
mysqldump -uroot -p demo stu class bmi >/backup/db_demo_tables.sql
#备份一个数据库中的一个或多个表
还原
[root@tomcat ~]# mysql -uroot -p demo < /backup/db_demo_tables.sql
#恢复demo数据库
root@localhost[demo]>source /backup/db_demo_tables.sql;
#数据库中使用source命令恢复数据
数据库恢复分类
冷备数据库所有数据
重启虚拟机mysql服务然后连接
查看备份启动后binlog的编号
生成测试数据并切换binlog日志
插入新的数据,并删除数据库模拟误操作
查看binlog找到误删操作的头注释号
使用binlog日志生成恢复数据的sql语句
通过另一台mysql服务器恢复数据
将完全备份数据和生成的sql语句上传至另一台mysql服务器(这里使用的windows进行恢复操作)
关闭mysql服务并导入冷备到data目录
注:删除data目录原有旧文件
启动mysql服务并执行sql文件恢复数据(登录时使用备份的数据库账号密码)
cmd中使用命令导出被误删除的数据库至sql文件中(不要使用powershell)
将生成的test1.sql文件上传至被删库的mysql数据库
执行sql文件恢复数据
原文:https://www.cnblogs.com/lastyear/p/11992396.html