linux下mysql日志管理及mysql备份还原

1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项

2.错误日志:log_error和log_warnings

3.一般查询日志:general_log general_log_file log log_output

4.慢查询日志:long_query_time log_slow_queries={YES|NO} slow_query_log low_query_log_file

5.二进制日志:任何引起或可能引起数据库变化的操作;复制和即时点恢复;

二进制日志的格式:binlog_format

基于语句: statement

基于行: row

混合方式: mixed

二进制日志事件:产生的时间 和 相对位置

二进制日志文件:索引文件 和 二进制日志文件

mysql> SHOW MASTER STATUS;#查看当前正在使用的二进制日志文件

mysql> SHOW BINARY LOGS; #查看所有日志文件:

mysql> SHOW BINLOG EVENTS IN '二进制日志文件' [FROM 位置];#查看事件:

例如:SHOW BINLOG EVENTS IN 'mysql-bin.000004' FROM 107;

删除二进制日志文件: 删除指定二进制日志文件之前的所有日志文件

mysql> PURGE BINARY LOGS TO '二进制日志文件'

查看日志信息:mysqlbinlog命令选项如下:

--start-datetime  --stop-datetime

--start-position  --stop-position

举例:mysqlbinlog --start-position 177 --stop-position 331 mysql-bin.000004;

mysqlbinlog --start-datetime='16-07-07 13:32:07' mysql-bin.000004;

滚动二进制日志:FLUSH LOGS;

6.中继日志:从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件;

7.事务日志:事务性存储引擎用于保证原子性、一致性、隔离性和持久性;

innodb_flush_log_at_trx_commit:

0: 每秒同步,并执行磁盘flush操作;

1:每事务同步,并执行磁盘flush操作;

2: 每事务同步,但不执行磁盘flush操作;

8.mysqldump备份和还原数据库工具

8.1.备份单个数据库,或库中特定表

格式:mysqldump 数据库名 [表1] [表2]

--master-data={0|1|2}

0: 不记录二进制日志文件及路位置;

1:以CHNAGE MASTER TO的方式记录位置,可用于恢复后直接启动从服务器;

2:以CHANGE MASTER TO的方式记录位置,但默认为被注释;

--lock-all-tables:锁定所有表

--flush-logs: 执行日志flush;

--single-transaction启动热备;如果指定库中的表类型均为InnoDB

8.2.备份多个库:

--all-databases: 备份所有库

--databases DB_NAME,DB_NAME,...: 备份指定库

--events 事件调度器

--routines 存储过程和存储函数

--triggers 触发器

单个数据库备份 方法一:

mysql>FLUSH TABLES WITH READ LOCK;

mysql>FLUSH LOGS;

mysql>SHOW BINARY LOGS;

#mysqldump -u root -p --master-data=2 jiaowu>/root/jiaowu.sql #备份并没有创建数据库的语句

mysql>UNLOCK TABLES;

mysql>CREATE DATABASE jiaowu;  #必须手动创建数据库

#mysql jiaowu < /root/jiaowu.sql  #指定还原至指定数据库

单个数据库备份方法二:

#mysqldump -u root -p --lock-all-tables --flush-logs --masterdata=2 jiaowu>/root/jiaowu.sql

所有数据库完全备份:

#mysqldump -u root -p --lock-all-tables --flush-logs --all-databases  --master-data=2 > /root/alldatabases.sql

9.实例:利用mysqldump命令实现对所有数据库每周做完全备份和每天做增量备份,并且实现还原

建议:mysql数据目录放置独立硬盘或LVM中,二进制日志文件也要放置在其他目录

以下利用实验环境模拟实现:注意本实验二进制日志文件名以自己实验环境为准

9.1.周末做完整备份所有数据库

#mysqldump -u root -p --lock-all-tables --flush-logs --all-databases  --masterdata=2  > /root/alldatabases.sql

9.2.清除滚动日志之前的所有二进制文件,但清除之前建议最好保存一下

mysql>PURGE BINARY LOGS TO 'mysql-bin.000010';

mysql>SHOW BINARY LOGS;

9.3.完整备份数据库后,过了一天,模拟数据库有删除一个数据

mysql>USE jiaowu;

mysql>DELETE FROM tutors WHERE Age>80;

9.4.每天做增量备份

mysql>FLUSH LOGS;  #滚动日志

#cd /mydata/data

#cp mysql-bin.000010 /root  #直接复制增量二进制日志文件

#mysqlbinlog mysql-bin.0000010 > /root/increment_"date +%F-%H-%M-%S".sql #或保存至sql语句

9.5.模拟又过了一天,数据库有插入一条数据

mysql>USE jiaowu;

mysql>INSERT INTO tutors (Tname) VALUES ("Tom");

9.6.模拟当天数据库崩溃,手动删除数据目录所有文件导致数据库无法使用

#cd /mydata/data

#cp mysql-bin.000011 /root/  #备份当前正使用的二进制日志文件

#rm -rf *

9.7.利用之前的备份,模拟实现还原数据库

#killall mysqld

#cd /usr/local/mysql

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ #初始化数据库

#service mysqld start

#cd

#mysql -u root -p < alldatabases.sql #还原完整备份时的数据库

#mysql -u root -p < increment_2016-07-08-13-30-00.sql #还原增量备份的数据

#mysqlbinlog mysql-bin.000011 | mysql -u root -p #还原当天数据库崩溃时的数据

10.单表备份

备份格式:SELECT * INTO OUTFILE '表的备份路径.txt' FROM 表名 [WHERE 条件];

还原格式:LOAD DATA INFILE '表的备份路径.txt' INTO TABLE 表名;

mysql> CREATE TABLE students_new LIKE students; #复制一个与源表结构一样的表

mysql> SELECT * INTO OUTFILE '/tmp/students_new.txt' FROM students;

mysql> DRIO TABLE students;

mysql> LOAD DATA INFILE '/tmp/students_new.txt' INTO TABLE students_new;

11.LVM快照备份

11.1.找开会话,模拟启动事务

mysql>START TRANSACTION;

11.2.打开另外一个会话,加读锁,锁定所有表;

mysql> FLUSH TABLES WITH READ LOCK;

mysql> FLUSH LOGS;

mysql> SHOW MASTER STATUS;

11.3.通过另一个终端,保存二进制日志文件及相关位置信息;

# mysql -uroot -p -e 'SHOW MASTER STATUS\G' > /backup/master-`data +%F`.info

11.4.创建快照卷

# lvcreate -L 100M -s -p r -n mydata-snap /dev/myvg/mydata

11.5.释放锁

mysql> UNLOCK TABLES;

11.6.挂载快照卷并备份

mount -o ro  /dev/myvg/mydata /mnt

cd /mnt/data

cp -a /mnt/data/* /backup/bak-full-`data +%F`

11.7.删除快照卷;

cd

umount /mnt

lvremove --froce /dev/myvg/mydata-snap

cp /backup/bak-full-2016-07-11

rm -rf mysql-bin.*

11.8.模拟添加数据并滚动日志

mysql> USE jiaowu;

mysql> INSERT INTO tutors (Tname) VALUES ('stu200');

mysql> FLUSH LOGS;

mysql> INSERT INTO tutors (Tname) VALUES ('stu201');

mysql> INSERT INTO tutors (Tname) VALUES ('stu202');

mysql> FLUSH LOGS;

11.9.备份上次快照后增加的二进制日志;

cp /mydata/data

cat /backup/master-2016-07-11.info #查看备份时的二制日志文件,且备份它之后所有二制日志文件

mysqlbinlog --start-datetime='16-07-11 15:30:08' mysql-bin.000005 mysql-bin.000006 > /backup/increment-`data +F-%H-%M-%S`.sql

11.10.模拟删除mysql数据库数据目录,导致mysql数据崩溃

service mysqld stop

rm -rf /mydata/data/*

11.11.还原数据库

cp -a /backup/bak-full-2016-07-11/* /mydata/data/

ls -l /mydata/data

service mysqld start

mysql> SET sql_log_bin=0; #连上mysql并暂时关闭二进制日志功能

mysql> source /backup/increment-2016-07-11-15-58-36.sql #导入增量二进制日志文件

mysql> SET sql_log_bin=0; #连上mysql并开启二进制日志功能

转载于:https://blog.51cto.com/willow/1812598

linux下mysql日志管理及mysql备份还原相关推荐

  1. Linux命令:MySQL系列之十一--MySQL日志管理

    MySQL日志管理 SHOW GLOBAL VARIABLES LIKE '%log%':查看关于log的全局变量 一.日志分类 1.错误日志   2.一般查询日志   3.慢查询日志 4.二进制日志 ...

  2. MySQL日志管理、备份

    MySQL日志管理.备份 在生产中,数据的重要性尤其的高,在我们听过的各种生产上的事故中,关于数据丢失误删的占了大多数,并导致了很严重的后果,所以数据备份对于我们来说非常重要. MySQL日志管理 M ...

  3. linux下安装jdk+tomcat+eclipse+mysql

    linux下安装jdk+tomcat+eclipse+mysql 这个星期一部门老大忽然冒出一句:"小祝,你对linux怎么样啊,用过没?",于是俺就老实的回答:"在学校 ...

  4. MySQL日志管理、备份与恢复

    MySQL日志管理.备份与恢复 前言 一.MySQL日志管理 (1)日志分类 ①错误日志 ②通用查询日志 ③二进制日志 ④慢查询日志 ⑤中继日志 (2)日志配置 (3)日志查询 ①查询通用日志是否开启 ...

  5. mysql日志管理及主从复制

    mysql主从复制 一.mysql日志管理 二.日志备份恢复与迁移 三.搭建主从复制 三.主从复制工作原理 以192.168.25.131为例 一.mysql日志管理 MYSQL日志管理: binlo ...

  6. 【MySQL 日志管理、备份与恢复】

    目录 一.数据库备份的分类 1.从物理与逻辑的角度 1.1.物理备份: 对数据库操作系统的物理文件(如数据文件,日志文件等)的备份 1.2.逻辑备份 2.从数据库的备份策略角度 3.常见的备份方法 3 ...

  7. Mysql —— linux下使用c语言访问mySql数据库

    示例1: #include<stdio.h> #include<mysql.h> int main() { MYSQL mysql; mysql_init(&mysql ...

  8. linux jdk1.7 tomcat mysql_RedHat Linux 下安装JDK 1.7+MySQL 5.0+Tomcat 7.0.27过程

    RedHat Linux 下安装JDK 1.7+MySQL 5.0+Tomcat 7.0.27过程记录: tar -zxvf jdk-7u3-linux-i586.tar.gz /解压gz文件 rpm ...

  9. apache php 整合 linux,Linux下Apache、php3、MySQL的整合

    Linux下Apache.php3.MySQL的整合 发布时间:2005-05-19 00:03:08来源:红联作者:ming 一.所需的安装包 apache_1.3.19.tar.gz php-4. ...

最新文章

  1. 如何覆盖trait函数并从重写函数调用它?
  2. 如何检测如果滚动条是否可见控件上
  3. 从零开始实现 ASP.NET Core MVC 的插件式开发(九) - 如何启用预编译视图
  4. YBTOJ:放置棋子(费用流)
  5. eclipse如何以javadoc方式查看源码的注释
  6. 中小学教师计算机应用,关于中小学教师计算机应用教育的思考
  7. raw转bmp程序c语言,求指导,如何用c语言实现读取*.raw格式图像
  8. Android中日期与时间设置控件的使用
  9. 查询好友IP地址的几种方法
  10. webstorm 破解的方法
  11. 蓝牙耳机测试软件apk_Bose Connect(蓝牙耳机控制器)
  12. verilog实现pwm
  13. GAMMA初学笔记二
  14. web安全(3)-- ClickJacking(点击劫持)
  15. excel一列求和_excel中使用函数实现自动求和
  16. 为大家介绍两款私藏宝藏可视化大屏制作软件
  17. 转:如何做好团队复盘?3大阶段、9个步骤
  18. 心情随笔:工作篇(半夜无眠,写与自己共勉)
  19. CodeWars刷题练习
  20. Java基础 (适合新手入门保姆级)

热门文章

  1. (25)软件工程开发规范
  2. zbb20170607 svn SVN服务器搭建和使用
  3. Asp.net发布网站
  4. ajax的原理和运行机制
  5. faster rcnn论文_【论文解读】精读Faster RCNN
  6. python求三个整数最大值_python 练习题:定义一个getMax()函数,返回三个数(从键盘输入的整数)中的最大值。...
  7. 苹果手机查看python代码的免费软件-Python实现抢购IPhone手机
  8. weex android 交互,weex项目接入到Android studio中
  9. 怎样查找共享文件_计算机操作系统学习笔记(五):文件管理
  10. 计算机应用技术基础 形考4,最新电大《计算机应用技术基础》形考作业任务01-03网考试题及答案...