日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
簡(jiǎn)單易學(xué)的C語言實(shí)現(xiàn)MySQL數(shù)據(jù)庫備份與還原(cmysql備份還原數(shù)據(jù)庫)

隨著數(shù)字化時(shí)代的到來,數(shù)據(jù)已經(jīng)成為了企業(yè)發(fā)展的重要財(cái)富,而數(shù)據(jù)庫作為存儲(chǔ)和管理企業(yè)數(shù)據(jù)的最基本的工具之一,扮演了至關(guān)重要的角色。對(duì)于企業(yè)的數(shù)據(jù)庫管理員而言,備份和還原數(shù)據(jù)庫是日常工作中必不可少的環(huán)節(jié)之一。雖然備份和還原數(shù)據(jù)庫的過程看似簡(jiǎn)單,但實(shí)際上卻需要多方面的技術(shù)支持。為此,本文將介紹如何使用簡(jiǎn)單易學(xué)的C語言實(shí)現(xiàn)MySQL數(shù)據(jù)庫的備份和還原。

創(chuàng)新互聯(lián)建站主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為被動(dòng)防護(hù)網(wǎng)行業(yè)客戶提供了網(wǎng)站制作服務(wù)。

一、MySQL數(shù)據(jù)庫備份

1.1 MySQL備份的概念

MySQL備份指將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出成特定格式的數(shù)據(jù)文件,以便在需要的時(shí)候進(jìn)行還原操作。

1.2 MySQL備份的方法

MySQL備份有兩種方法:分別是使用mysqldump命令和使用C語言程序?qū)崿F(xiàn)。

1.2.1 使用mysqldump命令備份MySQL

mysqldump命令是一個(gè)命令行工具,可用于將MySQL數(shù)據(jù)庫備份為一個(gè)SQL腳本文件。在備份過程中,mysqldump命令將逐行按照DDL和DML語句將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出到一個(gè)SQL文件中,從而實(shí)現(xiàn)備份的目的。

1.2.2 使用C語言程序?qū)崿F(xiàn)MySQL備份

使用C語言程序?qū)崿F(xiàn)MySQL備份的方法如下:

之一步:連接到MySQL數(shù)據(jù)庫。要使用C語言程序連接到MySQL數(shù)據(jù)庫,需要在程序中建立一個(gè)連接句柄。句柄是一個(gè)標(biāo)準(zhǔn)的文件描述符,其類型為MYSQL。

第二步:執(zhí)行備份操作。在連接到MySQL數(shù)據(jù)庫后,需要執(zhí)行備份操作。備份操作的詳細(xì)內(nèi)容包括選擇要備份的數(shù)據(jù)庫以及使用查詢語句從MySQL數(shù)據(jù)庫中提取數(shù)據(jù)。

第三步:將備份結(jié)果寫入文件中。在執(zhí)行備份操作之后,需要將結(jié)果寫入到一個(gè)文件中保存起來。

1.3 MySQL備份的注意事項(xiàng)

MySQL備份非常重要,備份過程中需要注意以下幾點(diǎn):

1.3.1 數(shù)據(jù)庫完整性

備份文件需包含數(shù)據(jù)庫中所有的數(shù)據(jù)、表結(jié)構(gòu)以及其他元數(shù)據(jù),以保證備份文件與原始數(shù)據(jù)庫的完整性一致。

1.3.2 備份文件的密鑰安全

備份文件應(yīng)該受到加密保護(hù),以保護(hù)備份文件的內(nèi)容和備份密鑰不受到攻擊者的竊取和破解。備份文件應(yīng)該存儲(chǔ)在一個(gè)安全的地方,例如離線存儲(chǔ)設(shè)備或云存儲(chǔ)。

1.3.3 備份頻率

備份頻率應(yīng)該根據(jù)數(shù)據(jù)庫的敏感程度和業(yè)務(wù)需求進(jìn)行調(diào)整。如果數(shù)據(jù)庫的數(shù)據(jù)更新頻率很高,需要經(jīng)常備份數(shù)據(jù),以保證備份文件能夠更大程度上反映數(shù)據(jù)庫最新的狀態(tài)。

二、MySQL數(shù)據(jù)庫還原

2.1 MySQL數(shù)據(jù)庫還原的概念

MySQL數(shù)據(jù)庫還原是將備份文件中的數(shù)據(jù)恢復(fù)到MySQL數(shù)據(jù)庫中的過程。對(duì)于有些企業(yè)而言,備份和還原數(shù)據(jù)庫的頻率很高,因此還原操作也要非常熟悉和靈活。

2.2 MySQL數(shù)據(jù)庫還原的方法

MySQL數(shù)據(jù)庫還原的方法有兩種:分別是使用MySQL命令行和使用C語言程序?qū)崿F(xiàn)。

2.2.1 使用MySQL命令行還原MySQL

使用MySQL命令行還原MySQL的方法如下:

之一步:連接到MySQL數(shù)據(jù)庫。

第二步:選擇要還原的數(shù)據(jù)庫。

第三步:將備份文件中的數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫中。

2.2.2 使用C語言程序?qū)崿F(xiàn)MySQL還原

使用C語言程序?qū)崿F(xiàn)MySQL還原的方法如下:

之一步:連接到MySQL數(shù)據(jù)庫。要使用C語言程序連接到MySQL數(shù)據(jù)庫,需要在程序中建立一個(gè)連接句柄。句柄是一個(gè)標(biāo)準(zhǔn)的文件描述符,其類型為MYSQL。

第二步:執(zhí)行還原操作。在連接到MySQL數(shù)據(jù)庫后,需要執(zhí)行還原操作。還原操作的詳細(xì)內(nèi)容包括選擇要還原的數(shù)據(jù)庫以及使用查詢語句從備份文件中提取數(shù)據(jù)。

第三步:將還原結(jié)果寫入MySQL數(shù)據(jù)庫中。在執(zhí)行還原操作之后,需要將結(jié)果寫入到MySQL數(shù)據(jù)庫中,以實(shí)現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)。

2.3 MySQL數(shù)據(jù)庫還原的注意事項(xiàng)

MySQL數(shù)據(jù)庫還原非常重要,還原過程中需要注意以下幾點(diǎn):

2.3.1 數(shù)據(jù)庫完整性

還原過程需根據(jù)備份文件中的完整性反恢原數(shù)據(jù)庫。如果備份文件中缺少某些數(shù)據(jù)或結(jié)構(gòu),還原操作將失敗。

2.3.2 認(rèn)證憑據(jù)的正確性

還原過程中需要確認(rèn)認(rèn)證憑據(jù)的正確性,包括用戶名、密碼、主機(jī)名等信息。只有確認(rèn)憑據(jù)的正確性,才能成功連接到MySQL服務(wù)器,恢復(fù)數(shù)據(jù)庫。

2.3.3 備份文件的可讀性

還原過程中需要確認(rèn)備份文件的可讀性,包括文件的格式、文件的完整性等。只有確認(rèn)備份文件的可讀性,才能保證還原操作的成功。

三、

本文介紹了如何使用簡(jiǎn)單易學(xué)的C語言實(shí)現(xiàn)MySQL數(shù)據(jù)庫的備份和還原。通過本文的介紹,讀者可以了解到MySQL備份和還原的基本概念和方法,并學(xué)習(xí)到如何使用C語言程序?qū)崿F(xiàn)MySQL備份和還原操作。對(duì)于有需要備份和還原MySQL數(shù)據(jù)庫的讀者而言,本文提供了一個(gè)簡(jiǎn)單易行的方案。同時(shí),在備份和還原過程中,需要注意確認(rèn)數(shù)據(jù)庫完整性、備份文件安全以及備份頻率等注意事項(xiàng)。只有充分了解備份和還原數(shù)據(jù)庫的基本知識(shí)和注意事項(xiàng),才能夠確保數(shù)據(jù)在備份和還原過程中安全可靠。

相關(guān)問題拓展閱讀:

  • windows mysql幾種備份和 恢復(fù)

windows mysql幾種備份和 恢復(fù)

前言

MySQL 5.6引入了GTID,每個(gè)事務(wù)都會(huì)產(chǎn)生一個(gè)GTID,我們可以通過驗(yàn)證主從GTID來驗(yàn)證主從數(shù)據(jù)的一致性。

為了敘述簡(jiǎn)便,定義一個(gè)量ALL_GTID: 表示某個(gè)數(shù)據(jù)庫實(shí)例上 所有存在過的 或 將要存在的事務(wù) 的GTID(包括已經(jīng)被purge掉的事務(wù))。

在討論數(shù)據(jù)庫可用性的場(chǎng)景中, 當(dāng)發(fā)生主備切換時(shí), 需要進(jìn)行數(shù)據(jù)補(bǔ)償。通過比較主備的ALL_GTID,可以確定需要補(bǔ)償多少數(shù)據(jù):

在實(shí)例存活的情況,可以在實(shí)例狀態(tài)中查詢ALL_GTID。

在實(shí)例崩潰的情況,無法在實(shí)例狀態(tài)中查詢ALL_GTID??梢酝ㄟ^查詢BINLOG中的Previous-GTIDs計(jì)算來獲得ALL_GTID。

下面列舉與ALL_GTID相關(guān)的變量。

與ALL_GTID相關(guān)的變量

Previous-GTIDs

Previous-GTIDs格式如下(環(huán)境為MySQL5.7,日志手動(dòng)flush binary logs獲得):

查看新輪轉(zhuǎn)出的BINLOG:

下面為mysql-bin.00001中包含的GTID:

請(qǐng)點(diǎn)擊輸入圖片描述

然后再次flush binary logs:

請(qǐng)點(diǎn)擊輸入圖片描述

mysql-bin.00002中是沒有任何GTID的。

請(qǐng)點(diǎn)擊輸入圖片描述

綜上Previous-GTIDs是本身這個(gè)BINLOG文件前面的所有BINLOG的。

請(qǐng)點(diǎn)擊輸入圖片描述

全局變量中的GTID相關(guān)的變量

請(qǐng)點(diǎn)擊輸入圖片描述

變量解釋:

gtid_executed 代表著server上所有事務(wù)執(zhí)行產(chǎn)生的GTID(包含已經(jīng)被purge的BINLOG中的GTID或者是手動(dòng)set gtid_purged的GTID)。

gtid_purged 代表著已經(jīng)被purge到的GTID。gtid_purged是gtid_executed的子集。

gtid_retrieved 是從機(jī)上relay_log中的GTID。

ALL_GTID 的計(jì)算

了解了GTID相關(guān)的變量之后,可以得到獲得實(shí)例的All_GTID的的方法:

對(duì)象

方法

存活的Master實(shí)例    gtid_executed

存活的Slave實(shí)例    gtid_executed和gtid_retrieved的并集

非存活Master實(shí)例    最后一個(gè)BINLOG文件的Previous-GTIDs + 最后一個(gè)BINLOG文件中所有的GTID

非存活Slave實(shí)例    最后一個(gè)BINLOG文戚虧件的Previous-GTIDs + 最后一個(gè)BINLOG文件中所有的GTID

在獲得非存活實(shí)例中的ALL_GTID時(shí),最后一個(gè)BINLOG文件中的GTID可能不連續(xù)(比如事務(wù)同時(shí)來自于本實(shí)例客戶端和復(fù)制回放),所以需要掃描最后一個(gè)BINLOG文件。

生產(chǎn)中我們使用Xtrabackup來產(chǎn)生一個(gè) 從實(shí)例 的流程如下:

拉取備份,進(jìn)行還原

change master to

set @@global.gtid_purged=’xxx’;

set @@global.gtid_purged=’xxx’; 的影響:

將 從實(shí)例 的ALL_GTID手工置為xxx, 在通過GTID方式建立復(fù)制時(shí)不會(huì)出錯(cuò).

將更新Binlog中記錄的Previous-GTIDs (由于Binlog不可改變, 將產(chǎn)生新的Binlog, 記錄新的Previous-GTIDs).

MySQL 5.7中set gtid_purged的行為變更

問題描述

回顧一下備份恢復(fù)的流歷渣程:

拉取備份,進(jìn)行還原

change master to

set @@global.gtid_purged=’xxx’;

現(xiàn)象: 發(fā)現(xiàn)有一臺(tái)MySQL 5.7的Slave服務(wù)器恢復(fù)后沒有產(chǎn)生 正確的Previous-GTIDs。

分析

分析整個(gè)過程,解決問題高爛神應(yīng)該分階段進(jìn)行手動(dòng)模擬發(fā)現(xiàn)問題。以下為詳細(xì)步驟:

手工還原備份

環(huán)境

BINLOG數(shù)量,Previous-GTIDs狀態(tài)

Xtrabackup 2.4.2 & MySQL 5.6    1,空

Xtrabackup 2.4.2 & MySQL 5.7    1,空

Xtrabackup 2.2.9 & MySQL 5.6    1,空

Xtrabackup 2.2.9 & MySQL 5.7    1,空

可見: 恢復(fù)過程不會(huì)輪轉(zhuǎn)BINLOG。

驗(yàn)證change master和set gtid_purged在不同的MySQL版本中執(zhí)行的差異

環(huán)境

BINLOG數(shù)量,Previous-GTIDs狀態(tài)

change master & MySQL 5.6    1,空

change master & MySQL 5.7    1,空

set gtid_purged & MySQL 5.6    2,正常

set gtid_purged & MySQL 5.7    1,空

可見: 執(zhí)行set gtid_purged時(shí)不同版本的MySQL產(chǎn)生了差異

驗(yàn)證

對(duì)不同版本MySQL單獨(dú)執(zhí)行set @@global.gtid_purged=”;語句。檢查結(jié)果

環(huán)境

進(jìn)行的操作

BINLOG數(shù)量,Previous-GTIDs狀態(tài)

MySQL 5.7    reset master; set @@global.gtid_purged=”;    1,空

MySQL 5.6    reset master; set @@global.gtid_purged=”;    2,正常

結(jié)論

參考:

官方解釋: 在5.7版本中,執(zhí)行SET GTID_PURGED語句后binlog_simple_gtid_recovery會(huì)給GTID_PURGED計(jì)算出一個(gè)錯(cuò)誤的值。

由于5.7中新增了存儲(chǔ)GTID的表。所以5.7版本中set @@global.gtid_purged=”;語句被改成只修改存放GTID的表。

而5.6版本中會(huì)進(jìn)行BINLOG輪轉(zhuǎn)和向Previous_gtids_log_event中添加GTID。如果5.7需要產(chǎn)生和5.6相同結(jié)果的話,可以在SET GTID_PURGED語句后手動(dòng)執(zhí)行flush binary logs語句。

1、復(fù)制date文件夾備份

============================

假想環(huán)境:

MySQL 安裝位置:C:\MySQL

論壇數(shù)據(jù)庫名稱為:bbs

數(shù)據(jù)庫備份目的地:C:\db_bak\

============================

新建db_bak.bat,寫入以下代碼

*******************************Code Start*****************************

net stop mysql

xcopy c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I

net start mysql

*******************************Code End *****************************

然后使用Windows的“計(jì)劃任務(wù)”定時(shí)執(zhí)行該批處理腳本即可。(例肢擾做如:每天凌晨3點(diǎn)執(zhí)行back_db.bat)

解釋:備份和恢復(fù)的操作都比較簡(jiǎn)單,完整性比較高,控制備份周期比較靈活,例如,用%date:~0,10%。此方法適合有獨(dú)立主機(jī)但對(duì)mysql沒有管理經(jīng)驗(yàn)的用戶。缺點(diǎn)是占用空間比較多,備份期間mysql會(huì)短時(shí)間斷李掘開(例如:針對(duì)30M左右的數(shù)據(jù)庫耗時(shí)5s左右),針對(duì)%date:~0,10%的用法參考。

2、mysqldump備份成sql文件

==============

假想環(huán)境:

MySQL 安裝位置:C:\MySQL

論壇數(shù)據(jù)庫名稱為:bbs

MySQL root 密碼:123456

數(shù)據(jù)庫備份目的地:D:\db_backup\

腳本:

rem *******************************Code Start*****************************

@echo off

set “Ymd=%date:~,4%%date:~5,2%%date:~8,2%”

C:\MySQL\bin\mysqldump –opt -u root –password=bbs > D:\db_backup\bbs_%Ymd%.sql

@echo on

rem *******************************Code End*****************************

將以上代碼保存為backup_db.bat

然后使用Windows的“計(jì)劃任務(wù)”定時(shí)執(zhí)行該腳本即可。(例如:每天凌晨5點(diǎn)執(zhí)行back_db.bat)

說明:此方法可以不用關(guān)閉數(shù)據(jù)庫,并且可以按歷衡每一天的時(shí)間來名稱備份文件。

通過%date:~5,2%來組合得出當(dāng)前日期,組合的效果為yyyymmdd,date命令得到的日期格式默認(rèn)為yyyy-mm-dd(如果不是此格式可以通過pause命令來暫停命令行窗口看通過%date:~,20%得到的當(dāng)前計(jì)算機(jī)日期格式),所以通過%date:~5,2%即可得到日期中的第五個(gè)字符開始的兩個(gè)字符,例如今天為,通過%date:~5,2%則可以得到02。(日期的字符串的下標(biāo)是從0開始的)

3、利用WinRAR對(duì)MySQL數(shù)據(jù)庫進(jìn)行定時(shí)備份。

對(duì)于MySQL的備份,更好的方法就是直接備份MySQL數(shù)據(jù)庫的Data目錄。下面提供了一個(gè)利用WinRAR來對(duì)Data目錄進(jìn)行定時(shí)備份的方法。

首先當(dāng)然要把WinRAR安裝到計(jì)算機(jī)上。

將下面的命令寫入到一個(gè)文本文件里

*******************************Code Start*****************************

net stop mysql

c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data

net start mysql

*******************************Code End*****************************

保存,然后將文本文件的擴(kuò)展名修改成CMD。進(jìn)入控制面版,打開計(jì)劃任務(wù),雙擊“添加計(jì)劃任務(wù)”。在計(jì)劃任務(wù)向?qū)е姓业絼偛诺腃MD文件,接著為這個(gè)任務(wù)指定一個(gè)運(yùn)行時(shí)間和運(yùn)行時(shí)使用的賬號(hào)密碼就可以了。

這種方法缺點(diǎn)是占用時(shí)間比較多,備份期間壓縮需要時(shí)間,mysql斷開比之一種方法更多的時(shí)間,但是對(duì)于文件命名很好。

  設(shè)mysql 安裝在c:盤,mysql數(shù)據(jù)庫的用戶名是root,密碼是123456,數(shù)據(jù)庫名是database_name,在d:盤根目錄下面存放備份數(shù)據(jù)庫,備份數(shù)據(jù)庫名槐檔字為database_name_backup_.sql(.sql為備份咐梁日期)

  備份數(shù)據(jù)庫:

  mysqldump -uroot -pdatabase_name>d:/database_name_backup_.sql

  恢復(fù)數(shù)據(jù)庫:

  刪除原有數(shù)據(jù)庫,建立數(shù)據(jù)庫,把備份數(shù)據(jù)庫導(dǎo)入。

  mysqladmin -uroot -pdrop database_name

  衡明運(yùn)mysqladmin -uroot -pcreate database_name

  mysql -uroot -pdatabase_name

  注:在導(dǎo)入備份數(shù)據(jù)庫前,database_name如果沒有,是需要?jiǎng)?chuàng)建的;而且與database_name_backup_.sql中數(shù)據(jù)庫名是一樣的才能導(dǎo)入。

  注:環(huán)境Windows命令行。

關(guān)于c mysql備份還原數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。


網(wǎng)頁標(biāo)題:簡(jiǎn)單易學(xué)的C語言實(shí)現(xiàn)MySQL數(shù)據(jù)庫備份與還原(cmysql備份還原數(shù)據(jù)庫)
標(biāo)題來源:http://www.dlmjj.cn/article/cooeehh.html