mysql創建資料庫快照(mysql 快照)

  • 1、mysql如何創建多個實例,求步驟,謝謝,急求
  • 2、unix下mysql資料庫如何利用工具進行數據備份
  • 3、如何同步兩個mysql資料庫中所有的表
  • 4、一台mysql實例 可以創建多少mysql資料庫

大多情況下,需要可靠而有效地克隆 MySQL 實例數據。這包括 MySQL 高可用的解決方案,其中需要在將實例加入組複製集群之前配置實例,或者在經典複製模型中將其添加為 Slave。

為複製拓撲而創建 MySQL 副本一直很麻煩。涉及的步驟很多,首先要備份 MySQL 伺服器,通過網路將備份傳輸到我們想要添加到複製集的新 MySQL 節點,然後在該節點上恢復備份並手動啟動 MySQL 伺服器。為了高可用,最好還要將其正確設置備份的 GTID,並啟動並運行群集。涉及的手動步驟數量過多不利於高可用。CLONE 插件解決了這個問題並簡化了副本配置。使您可以使用 MySQL 客戶端(和 SQL 命令)來配置新節點並在發生時觀察克隆進度。無需手動處理多個步驟並維護自己的基礎架構來配置新的 MySQL 節點。

MySQL 8.0.17 引入了 CLONE SQL 語句,使當前的 MySQL 伺服器成為另一個運行在不同節點的 MySQL 伺服器的「克隆」。我們將執行 clone 語句的伺服器實例稱為「受體」。克隆的源伺服器實例稱為「供體」。供體克隆以一致的快照存儲在 InnoDB 存儲引擎中的所有數據和元數據,以替換受體中的數據。

成功執行 CLONE SQL 語句後,將自動重新啟動受體伺服器。重新啟動涉及恢復克隆的快照數據,就像用老方法複製數據一樣。恢復完成後,受體就是供體的克隆版,隨時可以使用!

這裡有一些關於克隆過程的重要注意事項。

不克隆 MySQL 配置參數,並且受體保留所有原始配置參數,如克隆之前。這樣做是因為許多配置可能特定於節點(例如 PORT),因此保留它們似乎是一個不錯的選擇。另一方面,一些存儲配置確實需要在供體和受體之間匹配(例如 innodbpagesize),如果這樣的配置參數不匹配,CLONE 將報告錯誤。

CLONE 插件不會克隆二進位日誌。

CLONE 插件目前僅支持 InnoDB 存儲引擎。在其他存儲引擎(如 MyISAM 和 CSV)中創建的表將被克隆為空表。克隆基礎架構的設計允許克隆 MySQL 支持的任何存儲引擎。但是,只有 InnoDB 序列化和反序列化方法已經實現並經過測試。

克隆會阻止供體中的所有並發 DDL。

需要注意的事實是受體放棄所有數據以及任何二進位日誌,以便成為供體實例的克隆。在執行 CLONE 之前,如果認為有必要,需要備份當前受體數據。

用以備份的工具

1.

mysqldump

2.

mysqlhotcopy

3.mysqlsnapshot

4.ibbackup

聯機備份

.VS.

離線備份

聯機備份通常使用在不能接受資料庫停機的情況下,一般來說,離線備份速度快,並且發生錯誤的幾率少,我們不用擔心資料庫正在執行事務,鎖表等容易發生一致性問題的發生。如果你幸運的可以停下資料庫或者有一個主從方式的資料庫,請使用離線方式備份。

Data

Dump

vs

Raw

backups

Data

dump

輸出一系列SQL

語句序列,可以在後來用來重新創建資料庫的結構並恢複數據。mysqldump

是這個領域的首選工具,他可以用在任意類型的表上面,無論是本地的還是網路的。當然,由於要產生很多額外的SQL語句,導出結果將是一個很大的文件並且佔用很多CPU資源,最重要的是,當數據恢復後需要一次完全的索引重建。

更有效率的方法是是對MySQL資料庫的物理文件做一次快照(snapshot)。因為我們跳過了很多轉化步驟,因此處理起來比較高效。

做一個MyISM數據表的備份只要拷貝磁碟上數據文件和索引文件。對InnoDB,需要備份對應表空間和關聯的事務日誌。

mysqldump

/

mysqlhotcopy

/

mysqlsnapshot

/

ibbackup

mysqldump

(online,

dump)

最一般的工具,他會通過鎖表的方式從一個聯機資料庫中做數據導出並寫到指定的文件中(磁碟或網路上)。他只適合小的資料庫。

#

typical

mysql

dump

backup

and

restore

usage

mysqldump

-u

root

-pPassword

-x

–all-databases

db_dump.sql

mysql

-u

root

-pPassword

db_dump.sql

#

dump

into

『backup』

folder

(local

machine),

into

two

text

files

data,

table_structure

mysqldump

-T

backup

–fields-terminated-by=』,』

database-name

-u

root

-pPassword

#

compress

the

dumped

data

on

the

fly

mysqldump

-u

root

-pPassword

–all-databases

|

bzip2

-c

db_dump.bz2

mysqlhotcopy

(online,

raw)

將對由

ISAM或MyISAM

表構成的資料庫做一個完全的物理備份。他的操作方式:對所有表獲取一個只讀鎖=做文件拷貝=釋放鎖。

#

perform

an

online

backup

into

/backup/location

mysqlhotcopy

-u

root

-p

password

database_name

/backup/location

mysqlsnapshot

(online,

raw)

一個非常好的工具用來在聯機方式下獲得MySQL資料庫的一個快照。可以配置它來壓縮數據,並/或

為每一個資料庫提供一個分離的tar文件。

不過他只適合

MyISAM

類型資料庫。

#

save

a

full

database

snapshot

of

an

online

database

into

/backup/location

mysqlsnapshot

-u

root

-pPassword

-s

/backup/location

#

restore

a

snapshot

tar

-xvf

/backup/location/db.tar

ibbackup

(online,

raw)

可以對使用InnoDB和MyISAM表的任何資料庫做聯機備份。是一個很好的工具就是要收費.當然如果你是一個InnoDB的用戶,還是值得花錢購買的。

#

perform

online

backup

of

MyISAM

/

InnoDB

tables

ibbackup

/etc/my.cnf

/etc/ibbackup.cnf

#

restore

recent

backup

(as

configured

in

ibbackup.cnf)

ibbackup

–restore

/etc/ibbackup.cnf

cp,

scp,

nc

(offline,

raw)

如果你可以停下資料庫,則可以使用這幾個工具直接拷貝資料庫目錄下的文件。是獲取資料庫快照的最安全方法。

用資料庫快照就能實現啊.

Oracle快照原理及實現總結

Oracle資料庫的快照是一個表,它包含有對一個本地或遠程資料庫上一個或多個表或視圖的查詢的結果。對於中大型資料庫,業務資料庫里所有的數據同步到另外一個處理伺服器上最佳的選擇還是使用SnapShot方式,即快照的方式。

由於工作需要,今天需要將業務資料庫里所有的數據同步到另外一個處理伺服器上。在做方案的時候,想了很多方法,當然最快的辦法還是使用物理熱備的方式。

但是我個人認為如果對於中大型資料庫(我們的資料庫有300G左右)最佳的選擇還是使用SnapShot方式,即快照的方式。

Oracle資料庫的快照是一個表,它包含有對一個本地或遠程資料庫上一個或多個表或視圖的查詢的結果。也就是說快照根本的原理就是將本地或遠程資料庫上的一個查詢結果保存在一個表中。

以下是我建立的Snapshot,目的是從業務資料庫上將數據Copy到處理資料庫上,是不同的兩個伺服器之間對數據copy。

第一步:在處理伺服器上的Oracle終端,建立database link,業務資料庫伺服器SID為TEST

create database link TEST_DBLINK.US.ORACLE.COM

connect to AMICOS identified by AMICOS

using ‘test’;

第二步:在業務資料庫上對應的表建立快照日誌

Create snapshot log on A_Table;

第三步:建立Snapshot 快照名稱為:Test_SnapShot

Create snapshot Test_SnapShot

REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24

as select * from A_Table@TEST_DBLINK

說明:REFRESH是刷新方法

刷新方式有:COMPLETE和FAST兩種,而START WITH是說明開始執行的時間。

Next是下次執行的時間

而AS以後是構成快照的查詢方法。

相關的方法:

更改快照

ALTER SNAPSHOT Test_SnapShot

REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;

手動刷新快照 在命令界面執行:

EXEC DBMS_SNAPSHOT.REFRESH(‘Test_SnapShot ‘,’C’);

第一個參數是要刷新的快照名

第二個參數是刷新的方式,F—-FAST, C—COMPLETE

查看快照最後刷新的日期

SELECT NAME,LAST_REFRESH

FROM ALL_SNAPSHOT_REFRESH_TIMES;

最後非常的方案:

1:為需要做Snapshot的表建立Snapshot日誌

create snapshot log on t1 with rowid; 這裡使用ROWID建立日記的參數

2:採用Fast的方式建立快照,使用rowid做為參考參數

create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;

最好能按照rowid來建立快照。要不然就必須要為表建立Primary Key。

本質上對創建資料庫沒有限制,可以使用實例副本進行創建。

大多情況下,需要可靠而有效地克隆 MySQL 實例數據。這包括 MySQL 高可用的解決方案,其中需要在將實例加入組複製集群之前配置實例,或者在經典複製模型中將其添加為 Slave。

為複製拓撲而創建 MySQL 副本一直很麻煩。涉及的步驟很多,首先要備份 MySQL 伺服器,通過網路將備份傳輸到我們想要添加到複製集的新 MySQL 節點,然後在該節點上恢復備份並手動啟動 MySQL 伺服器。為了高可用,最好還要將其正確設置備份的 GTID,並啟動並運行群集。涉及的手動步驟數量過多不利於高可用。CLONE 插件解決了這個問題並簡化了副本配置。使您可以使用 MySQL 客戶端(和 SQL 命令)來配置新節點並在發生時觀察克隆進度。無需手動處理多個步驟並維護自己的基礎架構來配置新的 MySQL 節點。

MySQL 8.0.17 引入了 CLONE SQL 語句,使當前的 MySQL 伺服器成為另一個運行在不同節點的 MySQL 伺服器的「克隆」。我們將執行 clone 語句的伺服器實例稱為「受體」。克隆的源伺服器實例稱為「供體」。供體克隆以一致的快照存儲在 InnoDB 存儲引擎中的所有數據和元數據,以替換受體中的數據。

成功執行 CLONE SQL 語句後,將自動重新啟動受體伺服器。重新啟動涉及恢復克隆的快照數據,就像用老方法複製數據一樣。恢復完成後,受體就是供體的克隆版,隨時可以使用!

這裡有一些關於克隆過程的重要注意事項。

不克隆 MySQL 配置參數,並且受體保留所有原始配置參數,如克隆之前。這樣做是因為許多配置可能特定於節點(例如 PORT),因此保留它們似乎是一個不錯的選擇。另一方面,一些存儲配置確實需要在供體和受體之間匹配(例如 innodbpagesize),如果這樣的配置參數不匹配,CLONE 將報告錯誤。

CLONE 插件不會克隆二進位日誌。

CLONE 插件目前僅支持 InnoDB 存儲引擎。在其他存儲引擎(如 MyISAM 和 CSV)中創建的表將被克隆為空表。克隆基礎架構的設計允許克隆 MySQL 支持的任何存儲引擎。但是,只有 InnoDB 序列化和反序列化方法已經實現並經過測試。

克隆會阻止供體中的所有並發 DDL。

需要注意的事實是受體放棄所有數據以及任何二進位日誌,以便成為供體實例的克隆。在執行 CLONE 之前,如果認為有必要,需要備份當前受體數據。

原創文章,作者:RX41R,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127074.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RX41R的頭像RX41R
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論