MySQL日志管理
在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这样情况下,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据;
MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:
错误日志:记录启动、运行或停止时出现的问题
查询日志:记录建立的客户端连接和执行的语句
二进制日志:记录所有更改数据的语句 主要用于复制和即时点恢复
慢日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志
1.查看错误日志
SHOW GLOBAL VARIABLES LIKE ‘%log_error%’;
SHOW GLOBAL VARIABLES LIKE ‘%log_warnings%’;
2.通用查询日志
启动开关:general_log={ON|OFF}
日志文件变量:general_log_file[=/PATH/TO/file]
全局日志开关:log={ON|OFF} 该开关打开后,所有日志都会被启用
记录类型:log_output={TABLE|FILE|NONE}:
要查询日志需要至少配置general_log=ON,log_output={TABLE|FILE}
general_log_file如果没有指定,默认名是host_name.log。
3.慢查询日志
SET GLOBAL slow_query_log=ON;
SHOW GLOBAL VARIABLES LIKE ‘%slow_query_log%’;
SHOW GLOBAL VARIABLES LIKE ‘long_query_time’;
4.二进制日志
先在my.cnf里添加log_bin和server_id=1
然后就可以看到日志已经打开
查看有哪些二进制日志文件:mysql> SHOW BINARY LOGS
查看当前正在使用的是哪一个二进制日志文件:mysql> SHOW MASTER STATUS;
查看二进制日志内容:mysql> SHOW BINLOG EVENTS IN ‘mybinlog.000001’
##该语句还可以加上Position(位置),指定显示从哪个Position(位置)开始:mysql> SHOW BINLOG EVENTS IN ‘mybinlog.000001’ FROM 203;
删除二进制日志文件
PURGE { BINARY | MASTER } LOGS { TO ‘log_name’ |BEFORE datetime_expr }
MySQL主从复制
1 配置my.cnf
创建用来传输数据的账号
create user ‘rep’@‘192.168.182.%’ identified by ‘123456’;
给这个账号赋予复制权限
grant replication slave on . to ‘rep’@‘192.168.182.%’;
flush privileges; 刷新权限
从服务器配置
server-id=2 #设置server-id,必须唯一
进入库中执行
#启动从库同步开关
start slave;
#检查状态
show slave status\G
启动从库,开始复制
start slave;
停止从库复制
stop slave;
重启从库复制
reset slave;
主服务器强制同步数据(从服务器因为某些原因停止了一段时间)
flush master;
查看主服务器状态
show master status\G
查看从服务器状态
show slave status\G
出现从服务器上的master_log_pos 或者 master_log_file和主服务器上的不一致
然后通过对比再去修改从服务器上面连接主服务器的信息
change master to master_log_pos=数值, master_log_file=文件
如:
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000003’, MASTER_LOG_POS=0;