1. 程式人生 > >MySQL 單個數據庫備份還原

MySQL 單個數據庫備份還原

資料庫備份還原

MYISAM:  --lock-all-tables

INNODB: --single-transaction

#單個數據庫備份及壓縮
mysqldump -uroot -pmysql --opt --databases --routines --events --flush-logs --single-transaction --master-data=2 --default-character-set=utf8 test | gzip > /opt/testdb_back.sql.gz

mysqldump -uroot -pmysql --opt -B -R -E -F --single-transaction --master-data=2 --default-character-set=utf8 test | gzip > /opt/testdb_back.sql.gz

#所有資料庫備份及壓縮
mysqldump -uroot -pmysql --opt --databases --routines --events --flush-logs --all-databases --flush-privileges --single-transaction --master-data=2 --default-character-set=utf8 | gzip > /opt/alldb_back.sql.gz

mysqldump -uroot -pmysql --opt -B -R -E -F -A --flush-privileges --single-transaction --master-data=2 --default-character-set=utf8 | gzip > /opt/alldb_back.sql.gz

單個使用者資料庫備份還原
#備份單個數據庫
shell> mysqldump -uroot -pmysql --opt -B -R -E -F --single-transaction --master-data=2 --default-character-set=utf8 test > /root/test/backtest.sql

#此時刪除資料庫 "test"
mysql> drop database test ;

#還原資料庫(方法一)
mysql> source /root/test/backtest.sql

#還原資料庫(方法二)
shell> mysql -uroot -pmysql < /root/test/backtest.sql

---------------------------------------------------

#檢視完整備份位置
shell> cat /root/test/backtest.sql | grep "MASTER_LOG_POS"
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000018', MASTER_LOG_POS=154;

#檢視(資料庫 test)事務日誌內容,日誌太大不建議這麼檢視
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v

---------------------------------------------------

#確定日誌起始時間
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v | grep "end_log_pos 154"

#獲取某個資料庫時間範圍內的事務日誌
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --start-datetime="2017-07-08 21:22:35" --stop-datetime="2017-07-08 22:12:23" > /root/test/backtestlog.sql

#執行日誌指令碼(SQL 操作,將再次記錄到事務日誌中)
shell> mysql -uroot -pmysql < /root/test/backtestlog.sql

---------------------------------------------------
#或者:
#因同一時間可能有多個操作,用時間還原不精確,也可以檢視時間附近確定 position
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v | grep -10 "170708 22:12:23"

#獲取某個資料庫位置點間的事務日誌
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --start-position=154 --stop-position=10556 > /root/test/backtestlog.sql

#執行日誌指令碼(SQL 操作,將再次記錄到事務日誌中)
shell> mysql -uroot -pmysql < /root/test/backtestlog.sql

還原為一個新的資料庫

因為備份時添加了選項"-B",則"create database ……" 及 "use <dbname>" 會記錄在備份中。如果打算還原為一個新的資料庫,則必須把備份檔案的相關資訊更改。如果還原在同一個例項,檢視、儲存過程、函式、觸發器、事件等有呼叫原資料庫表的,注意更改!尤其觸發器,如果建立時限定了資料庫(如 CREATE TRIGGER dbname.tr_test ……),則還原會提示已存在,如使用觸發器,最好不要把資料庫名寫上。

本測試中,備份的是資料庫 test,現在還原為一個新的資料庫 testdb 。

#備份時不加引數"-B",還原時指定資料庫即可。若備份有引數"-B",把指令碼中的資料庫替換。
shell> cp /root/test/backtest.sql /root/test/backtest_b.sql
shell> sed -i 's/CREATE DATABASE \/\*!32312 IF NOT EXISTS\*\/ `test`/CREATE DATABASE \/\*!32312 IF NOT EXISTS\*\/ `testdb`/g' /root/test/backtest_b.sql
shell> sed -i 's/USE `test`;/USE `testdb`;/g' /root/test/backtest_b.sql


#還原資料庫(方法一)
mysql> source /root/test/backtest_b.sql

#還原資料庫(方法二)
shell> mysql -uroot -pmysql < /root/test/backtest_b.sql

在 Windows 中使用命令列 cmd 備份資料庫並壓縮檔案:(需安裝 winrar)

set bkdb=mydb
set bkuser=root
set bkpw=mysql
set bkhost=localhost
set bkpath=D:\mysql_backup\

set dt=%date:~,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set bkfile="%bkpath%%bkdb%_full_%dt%.sql"
set rarfile="%bkpath%%bkdb%_full_.rar"

mysqldump -u%bkuser% -p%bkpw% --opt -B -R -E -F --single-transaction --default-character-set=utf8 %bkdb% > %bkfile%
"%ProgramFiles(x86)%\WinRAR\Rar.exe" a -ep1 -ag -df -m5 -ibck -y %rarfile% %bkfile%


a: 新增壓縮
-ag :預設生成的壓縮檔案新增時間,格式為:YYYYMMDDHHMMSS (可自定義)
-ep1:壓縮檔案不含輸入的路徑
-df :壓縮後刪徹底除原始檔
-dr :壓縮後刪除原始檔到回收站
-m5 :使用 RAR 5.0 壓縮格式
-ibck :後臺執行
-y:對所有詢問均迴應為"是"


RAR 更多引數說明,參考安裝目錄中的文件:C:\Program Files (x86)\WinRAR\WinRAR.chm

window bat 匯出 MySQL 授權指令碼(此處只匯出 grant 指令碼)

@echo off
set "user=root"
set "pwd=mysql"
set "sqlfile=D:/MSSQLDATA/Backup/mysql_grant_sql.sql"

echo.> %sqlfile%
mysql -u%user% -p%pwd% -B -N -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS grantsql FROM mysql.user;" | mysql -u%user% -p%pwd% -B -N | for /F "delims=" %%a in (' findstr /i "^grant"') do echo %%a; >> %sqlfile%

測試時注意:
#命令列執行
for /F "delims=" %a in (' findstr /i "^grant"') do echo %a;

#指令碼中執行
for /F "delims=" %%a in (' findstr /i "^grant"') do echo %%a;


為了資料庫的高可用擴充套件,檢視、儲存過程、函式、觸發器 等都不需要建立,資料庫迴歸本質,只儲存資料,所以上面的一些備份引數可以忽略。


相關推薦

MySQL 單個備份還原

資料庫備份還原 MYISAM:  --lock-all-tables INNODB: --single-transaction #單個數據庫備份及壓縮 mysqldump -uroot -pmysql --opt --databases --routines --eve

第二百九十節,MySQL-MySQL命令行導出導入備份還原

mman tro 建立 pro lena ont mysq 提示 sql數據庫 MySQL命令行導出導入數據庫,數據庫備份還原 MySQL命令行導出數據庫:1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄如我輸入的命令行:cd C:\Pro

MYSQL備份還原

span 方便 不可用 inf 一個數據庫 備份 不一致 root 最簡 MYSQL數據庫備份還原 一、 數據庫備份 備份數據是數據庫管理最常用的操作。為了保證數據庫中數據的安全,數據管理員需要定期地進行數據備份。一旦數據庫遭到破壞,即可通過備份的文件來還原。因此,數據備

基於邏輯卷LVM的MySQL、mariadb備份還原詳細實現

快照恢復數據庫 lvm 前提是數據庫的數據是放在邏輯卷上的; 數據庫數據和日誌分開存放;正常情況下數據和日誌是放在兩個獨立的磁盤上,如果是raid的話,那麽就無所謂了。創建分區: [root@mysql ~]$fdisk /dev/sda Command (m for

MYSQL備份還原,並還原到最新狀態(mysqldump)

replicat from rom ESS 設置 utf 保留 set mysq 啟用二進制日誌文件 vim /etc/my.cnf 配置文件位置及文件名根據實際情況確定 sql_log_bin=ON|OFF:是否記錄二進制日誌,默認為ON //在需要的時候設置為O

java sql編輯器 動態報表 備份還原 quartz定時任務調度 自定義表單 SSM

大小 demo 結構 圖片顯示 登錄 效果 tab 雙向 mar A 調用攝像頭拍照,自定義裁剪編輯頭像,頭像圖片色度調節B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemaker模版技術 ,0個代碼不用寫,生成完整的一

oracle備份還原操作

file 命令 dmp 電腦 備份還原 bsp acl oracle數據庫 數據 oracle數據庫備份還原操作 直接在裝有oracle數據庫的電腦上使用命令執行: 備份數據庫:exp [email protected]/* */ file=D:\tes

如何查看MySQL單個或者表的大小

rem 存在 ext reat cksum where type ati _for 總體來說,這些信息存在於information_schema數據庫的TABLES表中 mysql> desc information_schema.TABLES; +-----

java sql編輯器 動態報表 備份還原 quartz定時任務調度 自定義表單 java圖片爬蟲

springmvcmybatis整合 bootstrap 框架源碼 spring html5 官網 http://www.fhadmin.org/A代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開

java sql 編輯器 備份還原 quartz 定時任務調度 自定義表單 java 圖片爬蟲 集成代碼生成器

分離 文件大小 發送郵件 進度條 服務器配置 mysql http 備份數據庫 生成報表 A代碼編輯器,在線模版編輯,仿開發工具編輯器,pdf在線預覽,文件轉換編碼B 集成代碼生成器 [正反雙向](單表、主表、明細表、樹形表,快速開發利器)+快速表單構建器 freemake

學習筆記(十三)——備份還原的知識點與註意事項

差異 並且 rom esc 每次 sel exe tor 參數 學習筆記(十三)——數據庫備份還原的知識點與註意事項 一、備份還原基本概念 1、 完整備份:完整備份因為需要備份的數據量大,所以需要在空閑時間進行,並且定期進行。 2、

php 備份還原

寫入 xpl PE 備份數據庫 獲取 for 用戶名 log total public function exportDatabase(){ $data = input(); //備份數據庫 $host="192.168.0.123"

備份還原

恢復 mys Go filename path oot root test disk BACKUP DATABASE testTO disk = ‘c:\test‘WITH FORMAT,NAME = ‘Full Backup of MyNwind‘解釋如下:NAME =

mysql備份方案

dir 能夠 調研 rect 而是 兩個 如何 == 刪庫 1. 數據庫備份方案 1)沒備份,跑路~ 2)全量備份+增量備份 如果不小心“刪庫”,可以這麽恢復: a. 將最近一次全量備份的全

SQL Server 備份還原常用SQL語句及註意

設置 由於 避免 base 上線 新的 clas 斷開 無效 1.備份數據庫 backup database db_name to disk=‘d:\db_name.bak‘ with format --通過使用with format可以做到覆蓋任何現有的備

mysql備份還原

多個數據庫 mys mysq dump SQ style 表示 col 個數 一、備份 mysqldump語法: 1.備份數據表: mysqldump [OPTIONS] database [tables] 案例:mysqldump -u root -p dbname

MySQL 備份還原

步驟 重要 .sql l數據庫 操作 生產環境 oss EDA tex 說明:在生產環境中,數據的安全性是至關重要的,任何數據的丟失都有可能產生嚴重的後果。因此,備份數據與還原數據很是重要。下面就作數據的備份與還原做一些操作。.. 實驗環境:裝有MySQL數據庫的cento

C# Mysql備份還原(MVC)

輸入 ini erro cover pass lec 連接字符串 art uil 一、準備工作   1.電腦上要安裝上mysql,並且已經配置好了環境變量。 二、公共代碼   1.配置文件(該節點只是為備份、還原使用,數據庫連接字符串有另外的節點) <

mysql備份與恢復

system ase inux color charsets blog 註釋 更新 create mysqldump -u 用戶名 -p 數據庫名> 備份的文件名 本文中因服務器為多實例,所以在執行登陸等命令時指定了-S參數,即指定其中一個數據庫 備份: mysql

使用phpmyadmin進行超大備份或者還原

phpmyadmin mysql使用phpmyadmin進行備份還原數據庫的時候,通常使用的是在線上傳功能,這功能的最大bug就是如果你網絡狀態不是很好,很可能不小心就中斷了導入或者導出的操作。找到phpmyadmin的安裝目錄 config.inc.php文件裏找到:$cfg[‘UploadDir‘] =