[mysql]
log-error=/usr/local/mysql/data/mysql_error.log 指定日志的保存位置和文件名
错误日志,用来记录当MySQL启动、停止或者运行时发生的错误信息,默认已开启。
general_log=ON general_log_file=/usr/local/mysql/data/mysql_general.log
通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的。
log-bin=mysql-bin #也可以 log bin=mysgl-bin
二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新的语句,记录了数据的更改,可用于数据恢复,默认已开启。
slow_query_log=ON slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log long_query_time=5 设置超过5秒执行的语句被记录,缺省时为10秒。
慢查询日志,用来记录所有执行时间超过5秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的。
程序错误
认为操作错误
运算错误
磁盘故障
灾难(如火灾、地震)和盗窃
从物理与逻辑的角度,备份可分为
冷备份(脱机备份):是在关闭数据库的时候进行的
热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件
温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
InnoDB存储引擎的数据库在磁盘上存储成三个文件:db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。
备份与恢复操作简单方便
数据存在大量的重复
占用大量的备份空间
备份与恢复时间长
管理Mysql数据库
使用tar命令直接打包数据库文件夹
直接替换现有的MySQL目录即可
MySQL自带的备份工具,可方便实现对MySQL的备份
可以将指定的库、表导出为SQL脚本
使用命mysql导入备份的数据
grep -v "^--" /opt/kgc_info1.sql | grep -v "^/" | grep -v "^$"
先登录到数据库,再执行 source XXX.sql (如果sql文件是只备份了表数据的,需要先创建库并use切换库后再执行)
mysql -u用户名 -p密码 < XXX.sql cat XXX.sql | mysql -u用户名 -p密码
当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。
mysql -u用户名 -p密码 库名 < XXX.sql cat XXX.sql | mysql -u用户名 -p密码
没有重复数据,备份量不大,时间段
恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复
MySQL没有提供直接的增量备份方法
<span style="background-color:#f8f8f8"><span style="color:#333333">mysqldump -u root -p kgc info1 > /opt/kgc_info1_$(date +%F).sql
mysqldump -u root -p --databases kgc > /opt/kgc_$(date +%F).sql</span></span>
mysqladmin -u用户 -p密码 flush-logs
插入新的数据,模拟数据的增加和变更,刷新二进制日志文件并查看日志文件内容
mysqlbinlog --no--defaults --base64-output=decode-rows -v <二进制文件> (查看二进制日志内容)
--base64-output=decode-rows:使用64位编码机制去解码并按行读取
-v:显示详细内容
<span style="background-color:#f8f8f8"><span style="color:#333333">use kgc;
delete from info1 where id=3;
delete from info1 where id=4;
mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p</span></span>
mysqlbinlog --no-defaults <二进制文件> | mysql -u用户名 -p密码
<span style="background-color:#f8f8f8"><span style="color:#333333">mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000005</span></span>
mysqlbinlog --no-defaults --start-position='开始位置点' --stop-position=‘结束位置’ <二进制文件> | mysql -u用户名 -p密码
mysqlbinlog --no-defaults --start-datetime=‘开始时间点’ --stop-position=‘结束时间点’ <二进制文件> | mysql -u用户名 -p密码
二进制日志保存了所有更新或者可能更新数据的操作
二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接受到flush logs命令后重新创建新的日志文件
只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份
工作中一般以周为周期做一次完全备份,再每天做一次增量备份,以便可以更快更好的做备份恢复
备份时数据库处于关闭状态,直接打包数据库文件
备份速度快,恢复时也是最简单的
mysqldumo常用的逻辑备份工具(只能备份小的表和数据库)
mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表
进行增量备份,需要刷新二进制日志
免费的MySQL热备份软件Percona XtraBackup