soho需不需要做网站弄企业邮箱,网络营销学什么内容,网站免费打包ios,建设网站涉及的技术1、MySQL日志管理
在数据库保存数据时#xff0c;有时候不可避免会出现数据丢失或者被破坏#xff0c;这样情况下#xff0c;我们必须保证数据的安全性和完整性#xff0c;就需要使用日志来查看或者恢复数据了
数据库中数据丢失或被破坏可能原因#xff1a;
误删除数据…1、MySQL日志管理
在数据库保存数据时有时候不可避免会出现数据丢失或者被破坏这样情况下我们必须保证数据的安全性和完整性就需要使用日志来查看或者恢复数据了
数据库中数据丢失或被破坏可能原因
误删除数据库数据库工作时、意外程序终止、程序崩溃病毒的入侵文件系统损坏后系统进行自检操作时误删除了核心数据升级数据库时、命令不严格设备故障硬件损坏自然灾害被盗
MySQL日志类型
日志类型记录文件中的信息类型错误日志记录启动、运行或停止时出现问题查询日志记录建立的客户端连接和执行的语句二进制日志记录所有更改数据的语句。主要用于复制或即时点恢复慢日志记录所有执行时间超过最大查询时间 long_query_time 的查询操作或不使用索引的查询事务日志记录InnoDB等支持事务管理的存储引擎执行事务时所产生的日志
默认情况下所有日志都创建于mysqld数据目录内通过刷新日志可以强制mysqld来关闭和重新打开或者切换日志文件
刷新日志命令
mysql FLUSH LOGS
mysqladmin flush-logs 1.2 错误日志
错误日志中主要记录的几种日志
服务器启动和关闭过程中的信息务器运行过程中的错误信息事件调度器运行一个时间时产生的信息在从服务上启动进程时所产生的信息
错误日志的定义
可以用--log-error[file_name]选项来指定mysqld保存错误日志文件的位置。
如果没有给定file_name值mysqld会使用错误日志名host_name.err 并在数据目录中写入日志文件。
如果执行刷新操作错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。
#错误日志
mysql SHOW GLOBAL VARIABLES LIKE %log_error%;
#警告日志
mysql SHOW GLOBAL VARIABLES LIKE %log_warning%;
1.3 通用查询日志
启动开关 general_log {ON||OFF}
日志文件变量 general_log_file [/PATH/TO/file]
全局日志开关 log {ON||OFF}
记录类型 log_output {TABLE||FILE||NONE}
如果需要启用通用查询日志 至少要配置 general_log NO log_output {TABLE||FILE}
如果general_log_file 没有额外指定 默认名为 host_name.log
mysql SHOW GLOBAL VARIABLES LIKE %general_log%;
mysql SHOW GLOBAL VARIABLES LIKE %log_output%;
1.4 慢查询日志
Mysql 如果启用了 slow_query_log ON 选项。就会记录执行时间超过long_query_time的查询。
日志记录文件为slow_query_log_file[file_name] 若没有给定file_name 默认为主机名后缀为-slow.log。
与慢查询相关的变量设置
# 系统默认关闭慢查询日志开关 查看状态
MYSQL SHOW GLOBAL VARIABLES LIKE %slow_query_log%;
#开启方式
SET GLOBAL slow_query_logON;
#查看默认的查询时效
MYSQL SHOW GLOBAL VARIABLES LIKE long_query_time;
1.5 二进制日志
开启日志
二进制日志启动开关log-bin [ file_name]。
5.6版本
前一定要手动指定
后默认file_name为$datadir/mysqld-binlog
查看二进制日志的工具为 mysqlbinlog
二进制日志包含了所有更新了数据或者已经潜在更新了数据。语言语句以事件形式保存描述了数据的更改。
二进制日志还包含关于每个更新数据库的语句的执行时间信息。
作用当数据库存在故障时恢复能尽最大可能进行即时点恢复因为二进制日志内包含了备份后进行的所有更新所以二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。
二进制日志是记录执行的语句还是 执行后的数据
情况1假如一个表有10万行数据而现在要执行一个如下语句将amount字段的值全部在原来的基础上增加1000
UPDATE sales.january SET amountamount1000 ;
如果影响的行数过于庞大日志内记录的是执行的语句
情况2如果像某一个指定的行内字段插入数据
UPDATE student SET Email XXX WHERE StudentNo ???;
此时就不能记录语句了因为不同时间执行的结果是不一样的。这是应该记录这一行的值这种就是基于行row的二进制日志
情况3如果出现触发器 存储函数 这种方式进行数据的更新的话可能会结合两种方式来进行记录,这种叫做 混合方式的二进制日志
日志滚动
在my.cnf中设定max_binlog_size 200M表示限制二进制日志最大尺寸为200M超过200M后进行滚动。
MySQL的滚动方式与其他日志不太一样滚动时会创建一个新的编号大1的日志用于记录最新的日志而 原日志名字不会被改变。每次重启MySQL服务日志都会自动滚动一次。
#日志查看
查看有哪些二进制日志文件
mysql SHOW BINARY LOGS;查看当前正在使用的是哪一个二进制日志文件
mysql SHOW MASTER STATUS;
2、MySQL备份
2.1备份类型
根据服务器的状态备份分为三种类型热备份、温备份、冷备份。
热备份读、写不受影响
温备份仅可以执行读操作
冷备份读写均终止离线备份 从对象的角度分析分为物理备份以及逻辑备份
物理备份复制数据文件
逻辑备份将数据导出至目标 XXX.sql文件中 从数据收集上来分分为完全备份、增量备份、差异备份
完全备份备份全部的数据
增量备份仅备份上次完全备份或增量备份后所变化的数据
差异备份仅备份上次完全备份后变化的数据 逻辑备份的优缺点
优点
在备份速度上两种备份要取决于当前的存储引擎
物理备份的还原速度非常快但是物理备份的最小单元只能做到表
逻辑备份保存的结构通常都是ASCII形式所以我们只能通过.sql方式进行保存
逻辑备份有非常强的兼容性而物理备份对版本要求非常高
逻辑备份对保持数据的安全性有保障
缺点
逻辑备份会对DBMS产生额外的压力,物理备份则无明显压力
逻辑备份的结果可能比信息本身还要大。可以通过压缩来缓解这一现象。
针对于高精度内容逻辑备份可能会倒置浮点精度丢失。
2.2 备份内容
数据文件
数据结构
日志(二进制日志事务日志)
存储过程存储函数触发器
个人配置信息
脚本信息
2.3 常见的备份工具
MySQL自带的工具
基于DBMS mysqldump
mysqldump 是mysql数据库管理系统自带的逻辑备份工具。支持所有的主流引擎MyISAM引擎是温备InnoDB引擎是热备。备份速度中等还原速度较慢。因此在实现还原时我们会采用其他的方式进行操作。
#备份所有数据库:
mysqldump -uroot -p --all-databases /usr/local/databases.sql
#备份指定的数据库(数据表)
mysqldump -uroot -p MySchool_db student grade /usr/local/MySchool_db.sql;
#还原方式1
use MyScl_db;
source/usr/local/MySchool_db.sql;
#还原方式2
mysql -uroot -p MyScl_db /usr/local/MySchool_db.sql
其他工具
ibbackup 商业工具 MyISAM是温备份InnoDB是热备份 备份和还原速度都很快这个软件它的每服务器授权版本是5000美元。
xtrabackup 开源工具 MyISAM是温备份InnoDB是热备份 是ibbackup商业工具的替代工具。
mysqlbackup ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称mysqlbackup。
MySQL企业备份工具执行在线“热备“无阻塞的MySQL数据库备份。全备份可以在所有InnoDB数据库上 执行而无需中断MySQL查询或更新。此外支持增量备份只备份自上次备份后有变化的数据。另外部分备 份支持特定的表或表空间按需要进行备份。
#备份
选择需要备份的数据库右键-》备份/导出-》以SQL转储文件备份数据库
选择需要恢复的数据库右键-》导入-》从sql转储文件导入数据库
PS 不要混用可能会出现冲突注意甄别核心命令