mysql備份 where_MySQL備份與還原

1.mysqldump+mysqlbinlog介紹

mysqldump備份結合binlog日志恢復。MySQL備份一般采取全庫備份加日志備份的方式,例如每天執行一次全備份,每小時執行一次二進制日志備份,這樣在MySQL故障后可以使用全備份和日志備份將數據恢復到最后一個二進制日志備份前的任意位置或時間。

2.binlog

2.1介紹

MySQL的二進制日志記錄著該數據庫的所有增刪改的操作日志(前提是要在自己的服務器上開啟binlog),還包括了這些操作的執行時間。為了顯示二進制文件內容,可以使用mysqlbinlog命令查看。

2.2用途

1)主從復制

2)恢復數據

2.3開啟binary log功能

通過編輯my.cnf中的log-bin選項可以開啟二進制日志,形式如下:

log-bin [=DIR/[filename]]

其中,DIR參數指定二進制文件的存儲路徑;filename參數指定二進制文件的文件名,其形式為filename.number,number的形式為000001、000002等。每次重啟MySQL服務或運行mysql>flush logs;都會生成一個新的二進制日志文件,這些日志文件的number會不斷遞增。除了生成上述的文件外還會生成一個名為fiename.index的文件,這個文件中存儲所有二進制日志文件的清單,又稱為二進制文件的索引。

開啟binary log功能的命令操作:

vim /etc/my.cnf

log_bin=/data/mysql/mysql-bin

/etc/init.d/mysqld restart

查看是否開啟:

[root@CentOS 7 ~]# mysql

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin? ? ? ? ? ? ?| ON? ? |

+---------------+-------+

1 row in set (0.00 sec)

3.二進制日志操作的相關命令

3.1查看MySQL Server上的二進制日志

mysql> show binary logs;

+------------------+-----------+

| Log_name? ? ? ? ? ? ?| File_size? |

+------------------+-----------+

| mysql-bin.000001 |? ? ? ?120? ?|

| mysql-bin.000002 |? ? ? ?120? ?|

| mysql-bin.000003 |? ? ?65402 |

| mysql-bin.000004 |? 1190629|

| mysql-bin.000005 |? ? ? ?262? ?|

+------------------+-----------+

5 rows in set (0.00 sec)

3.2查看二進制日志信息

mysql> mysql> show binlog events in 'mysql-bin.000001';

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

| Log_name? ? ? ? ? ?| Pos? | Event_type? | Server_id? |End_log_pos | Info? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

|mysql-bin.000001|? ?4? ? |Format_desc|? ? ? 3306? ? |? ? ? ?120? ? ? ? | Server ver: 5.6.36-log, Binlog ver: 4 |

+------------------+-----+-------------+-----------+-------------+---------------------------------------+

1 row in set (0.00 sec)

3.3查看二進制日志的事件

mysql> show binlog events;

24b910a3f761c86d65f5a5aa1813bd64.png

3.4把某個二進制日志之前的其他二進制日志都刪除

pugre binary logs to 'mysql-bin.00010';

3.5把指定時間之前的二進制文件刪除

pugre binary logs before '2018-5-7 22:46:26';

4.使用binlog恢復之前刪除的數據(id=2)

注意:在實際生產環境中,如果遇到需要恢復數據庫的情況,不要讓用戶能訪問到數據庫,以避免新的數據插入進來,以及在主從的環境下,關閉主從。

4.1查看binlog文件,從中找出delete from test.tb1 where id=2

[root@CentOS7 ~]# cd /data/mysql/

[root@CentOS7 mysql]# mysqlbinlog -v mysql-bin.000002? ? (由于顯示太多,就不寫了。但從中可以看出delete事件發生position是27,事件結束position是416)

4.2恢復流程

直接用bin-log日志將數據庫恢復到刪除位置287前,然后跳過故障點,載進行恢復

4.3由于之前沒有做過全庫備份,所以使用所有binlog日志恢復,所以生產環境中需要很長時間恢復,導出相關binlog文件

[root@CentOS7 mysql]# mysqlbinlog /data/mysql/mysql-bin.000001 > /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysqlbinlog --stop-position=287 /data/mysql/mysql-bin.000002 > /tmp/287.sql

[root@CentOS7 mysql]# mysqlbinlog --start-position=416 /data.mysql/mysql-bin.000002 > /tmp/416.sql

4.4刪除test數據庫

mysql>drop database test;

4.5利用binlog恢復數據

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysq -uroot -p123456 < /tmp/287.sql

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/416.sql

4.6恢復后,檢查表的數據是否完整

mysql>select * from test.tb1;

4.7mysqlbinlog相關參數

--start-datetime? ? 從二進制日志文件中讀取指定時間戳或本地計算機時間之后的日志事件

--stop-datetime? ? 從二進制日志文件中讀取指定時間戳或本地計算機時間之前的日志事件

--start-position? ? ?從二進制日志文件中讀取指定position事件位置作為開始

--stop-position? ? ?從二進制日志文件中讀取指定position事件位置作為事件截至

5.mysqldump

5.1介紹

是MySQL用于備份和數據轉移的一個工具。主要生產一系列的SQL語句,可以封裝到文件,該文件包含所有重建數據庫所需的SQL命,如create database、create table、insert等。可以用來實現輕量級的快速遷移或恢復數據庫。

mysqldump是將數據表導成SQL腳本文件,在不同的MySQL版本之間升級時相對比較合適。

5.2使用建議

一般在數據量很小的時候(幾個G)可以由于備份。當數據量比較大的情況下,不建議使用mysqldump進行備份

5.3使用對象

可以針對單個表、多個表、單個數據庫、多個數據庫、所有數據庫進行導出的操作

6.mysqldump相關操作命令

6.1導出數據庫test

mysqldump -uroot -p --flush-logs test > /tmp/terst.sql

--flush-logs? 完整備份的時候重新開啟一個新的binlog

6.2數據庫的導入

mysql -uroot -p test > /tmp/test.sql

6.3導出指定數據庫或單個表

mysqldump [options] db_name [tbl_name]

6.4導出多個數據庫

mysqldump [options] --databases db_name

6.5導出所有

mysqldump [options] --all-databases

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372831.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372831.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372831.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JMeter:負載測試關系數據庫

Apache JMeter是完全使用Java編寫的性能測試工具。 可以在請求/響應模型上運行的任何應用程序都可以使用JMeter進行負載測試。 關系數據庫也不例外&#xff1a;接收sql查詢&#xff0c;執行它們并返回執行結果。 我將向您展示使用JMeter的圖形用戶界面設置測試方案有多么容易。…

new: Set up a window

Nehe的教程確實太老了&#xff0c;不過我認為它也能夠讓我了解OpenGL3.2以前的管線渲染模式&#xff0c;即使它在現在已經不常見了。因為想要了解&#xff0c;所以我還是會看完Nehe的教程。 現在這是一個新的教程 - JoeyDeVries的教程&#xff0c;可以說是網上最好的OpenGL教程…

Python全棧開發:socket

Socket socket通常也稱作"套接字"&#xff0c;用于描述IP地址和端口&#xff0c;是一個通信鏈的句柄&#xff0c;應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。 socket起源于Unix&#xff0c;而Unix/Linux基本哲學之一就是“一切皆文件”&…

oracle sga pga mysql_修改Oracle數據庫SGA和PGA大小

SGA的大小&#xff1a;一般物理內存20%用作操作系統保留&#xff0c;其他80%用于數據庫。SGA普通數據庫可以分配40%-60%之間&#xff0c;PGA可以分配20%-40%之間。1、以dba身份登錄并查看SGA信息&#xff1a;SQL>show parameter sga&#xff1b;查看PGA信息&#xff1a;SQL&…

NetBeans 7.1:創建自定義提示

我已經在帖子中介紹了一些我最喜歡的NetBeans提示 &#xff0c;這些信息是用于使Java代碼現代化的七個NetBeans提示和七個不可或缺的NetBeans Java提示 。 這兩個帖子中涉及的十四個提示僅占NetBeans支持的“即開即用”提示總數的一小部分。 但是&#xff0c;由于NetBeans 7.1使…

今年暑假不AC

Problem Description “今年暑假不AC&#xff1f;”“是的。”“那你干什么呢&#xff1f;”“看世界杯呀&#xff0c;笨蛋&#xff01;”“#$%^&*%...”確實如此&#xff0c;世界杯來了&#xff0c;球迷的節日也來了&#xff0c;估計很多ACMer也會拋開電腦&#xff0c;奔向…

qregexp括號匹配_轉:Qt的正則表達式和QRegExp

考慮一下我們經常遇到的問題&#xff0c;比如gemfield想從青島之光讀書(www.civilnet.cn/book)中找一個關鍵的電話號碼&#xff0c;通常第一步就是將書中所有的電話號碼查找出來放在手邊。那么怎么擬定查詢條件呢&#xff1f;電話的格式有如下幾種&#xff1a;01088888888010 8…

具有Tron效果的JavaFX 2 Form

這是一個具有TRON效果的簡單JavaFX登錄表單。 在此示例中&#xff0c;我使用CSS設置TextField和Button的樣式。 這是CSS和Effect代碼的片段&#xff1a; .text-field{-fx-background-color: transparent;-fx-border-color: #00CCFF;-fx-text-fill: white; }.password-field{-fx…

Spring注解Annotion詳解

概述 注釋配置相對于 XML 配置具有很多的優勢&#xff1a; 它可以充分利用 Java 的反射機制獲取類結構信息&#xff0c;這些信息可以有效減少配置的工作。如使用 JPA 注釋配置 ORM 映射時&#xff0c;我們就不需要指定 PO 的屬性名、類型等信息&#xff0c;如果關系表字段和 PO…

CopyOnWrite容器

1.簡介 1.CopyOnWrite是程序優化的策略,當共享的內容需要修改時,復制出去一份進行修改,然后將原來的引用指向修改完的 2.java并發包(java.util.concurrent)中CopyOnWriteArrayList和CopyOnWriteArraySet實現了這個并發容器 3.好處:因為寫時是在復制的一份上操作,所以可以并發的…

Akka的字數統計MapReduce

在我與Akka的日常工作中&#xff0c;我最近寫了一個字數映射表簡化示例。 本示例實現了Map Reduce模型&#xff0c;該模型非常適合橫向擴展設計方法。 流 客戶端系統&#xff08;FileReadActor&#xff09;讀取文本文件&#xff0c;并將每一行文本作為消息發送給ClientActor。…

mysql如何設置多節點_詳細介紹Mysql5.7從節點設置多線程主從復制的辦法

軟件安裝&#xff1a;裝機軟件必備包SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為數據庫而建立的操作命令集&#xff0c;是一種功能齊全的數據庫語言。在使用它時&#xff0c;只需要發出“做什么”的命令&#xff0c;“怎么做”是不用使用者考慮的。SQL功…

python學習筆記 可變參數關鍵字參數**kw相關學習

在Python中可以定義可變參數&#xff0c;顧名思義&#xff0c;可變參數就是傳入參數是可變的。可以是任意個&#xff0c;以一個簡單的數學編程為例&#xff0c;計算 sum a * a b * b .....z * z 函數定義可以如下&#xff1a; def getsum(num) :sum 0for n in num :sum su…

Struts2之環境配置

在學習struts2之前&#xff0c;首先我們要明白使用struts2的目的是什么&#xff1f;它能給我們帶來什么樣的好處&#xff1f; 設計目標 Struts設計的第一目標就是使MVC模式應用于web程序設計。在這兒MVC模式的好處就不在提了。 技術優勢 Struts2有兩方面的技術優勢&#xff0c;…

mysql數據庫備份shell_mysql數據庫備份shell腳本分享

#!/bin/bash#2020年04月27日15:56:21#auto backup mysql db#by author www.cnbugs.com########################SQL_DB"$*"SQL_USR"backup"SQL_PWD"123456"SQL_CMD"/usr/bin/mysqldump"SQL_DIR"/data/backup/date %F"if [ $…

懶惰的JSF Primefaces數據表分頁–第1部分

今天&#xff0c;我們將使用帶有視圖范圍的托管bean的惰性列表進行JSF數據表分頁。 這些單詞/表達式是什么意思&#xff1f; 如今&#xff0c;有幾個JSF框架為數據表提供現成的分頁&#xff0c;列排序器和其他功能。 今天&#xff0c;我們將使用Primefaces數據表。 通常&#…

java 動態增加定時任務

直接上代碼 import org.apache.tools.ant.util.DateUtils; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory;import java.util.Calendar; import…

基于JavaFX的SimpleDateFormat演示程序

對于使用Java Date進行格式化的新手甚至對于使用Java Date進行格式化的有經驗的Java開發人員而言&#xff0c;可能有些棘手的事情是使用SimpleDateFormat規范日期/時間格式。 SimpleDateFormat的基于類級別的Javadoc的文檔非常詳盡&#xff0c;涵蓋了表示日期/時間的各個組成部…

mysql中預定義常量_PHP預定義常量

這些常量在 PHP 的內核中定義。它包含 PHP、Zend 引擎和 SAPI 模塊。PHP_VERSION (string)PHP_OS (string)PHP_EOL (string)自 PHP 4.3.10 和 PHP 5.0.2 起可用PHP_INT_MAX (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用PHP_INT_SIZE (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用D…

iOS與H5交互

前提&#xff1a;在iOS控制器中加載UIWebView&#xff0c;設置代理&#xff0c;遵守UIWebViewDelegate協議。 一、iOS調用JS方法 通過iOS調用JS代碼實現起來比較方便直接調用UIWebView的方法- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script…