MySQL資料庫備份與恢復

2021-10-09 10:19:39 字數 3265 閱讀 2543

每次對資料庫進行完整的備份,即對整個資料的備份,資料庫結構和檔案結構備份。儲存的是完整時刻的資料庫

只有那些在上次完全備份或者增量備份後被修改的檔案才會備份,以上次完成整備份,或者上次的增量備份的時間點,

僅備份這之間的資料變化,因而備份的資料量小,占用空間小,備份資料速度快,但恢復時候,需要從上次的完整備份

開始到最後一次的增量備份之間所有的增量依次恢復,如中間某次的恢復資料備份損壞,將導致資料的丟失。

下面做乙個關於完全備份 和增量備份

首先我們先對mysql的檔案進行優化

vi /etc/my.cnf

server-id = 1

log-bin=/usr/local/mysql/data/mysql-bin ####新增這行 即這個地方開啟二進位制日誌功能

systemctl restart mysqld ####重啟一下

[root@localhost opt]

# mysql -u root -p

create database client;

use client;

create table user_info(身份證 char(20) not null,姓名 char(20) not null,姓別 char(4)

,使用者id號 char(10) not null,資費 int(10));

insert into user_info values(

'000006'

,'張三'

,'男'

,'016'

,'10');

insert into user_info values(

'000007'

,'李四'

,'女'

,'017'

,'91');

insert into user_info values(

'000008'

,'王五'

,'女'

,'018'

,'23');

select

*from user_info;

show master logs;

####檢視當前資料庫binlog檔案

flush tables with read lock;

#####備份前需要將資料庫加讀鎖,防止資料在備份時寫入。

exit

[root@localhost ~]

# mkdir /mysql_bak ###建立/mysql_bak 目錄

mysqldump -u root -p client user_info

>/mysql_bak/client_userinfo-$(date +

%f).sql ####這邊括號中%f 的f必須是大寫的

mysqladmin -u root -p flush-logs ###重新整理一下

> unlock tables;

#######解除表鎖。

> use client;

> insert into user_info values(

'000009'

,'趙六'

,'男'

,'019'

,'37');

> insert into user_info values(

'000010'

,'孫七'

,'男'

,'020'

,'36');

> select

*from user_info;

> exit

;mysqladmin -u root -p flush-logs #####重啟一下

cp/usr/local/mysql/

data

/mysql-bin.000002 /mysql_bak/

####做乙個備份

mysql -u root -p -e 'drop table client.user_info'

####模擬刪除表

mysql -u root -p -e 'select * from client.user_info'

##檢視刪除情況

mysql -u root -p client < /mysql_bak/client_userinfo-2018-08-14.sql   ###將備份的檔案追加到庫中

mysql -u root -p -e'select * from client.user_info'

#####檢視有沒有恢復成功

mysqlbinlog --no-defaults /mysql_bak/mysql-bin.000002 |mysql -u root -p

mysql -u root -p -e'select * from client.user_info'

#基於位置恢復

mysql -uroot -p -e 'drop table client.user_info'

mysql -uroot -p -e 'select * from client.user_info'

mysql -u root -p client < /mysql_bak/client_userinfo-2018-08-14.sql ##做一下全域性恢復

mysql -u root -p -e'select * from client.user_info'

進行基於位置的恢復之前需要先檢視一下位置的情況

mysqlbinlog --no-defaults --base64-output=decode-rows -v /mysql_bak/mysql-bin.000002  

#--base64-output=decode-rows 64解碼 ### -v 換行顯示

下面的517的數字是上面的命令檢視at後面的位置節點數字 前面的stop表示的結束位置 而若是start表示的是開始的位置

mysqlbinlog --no-defaults --stop-position='517'

/mysql_bak/mysql-bin.000002 |mysql -u root -p ####操作的節點附近即可

mysql -u root -p -e'select * from client.user_info'

Mysql資料庫備份與恢復

匯出要用到mysql的mysqldump工具,基本用法是 mysqldump options database tables 幫助 mysqldump help mysqldump支援下列選項 add locks 在每個表匯出之前增加lock tables並且之後unlock table。為了使得更...

mysql 資料庫備份與恢復

首先要用命令列進入mysql的安裝目錄下的bin c program files mysql mysql server 5.1 bin win32下mysql的備份與還原 1.1 備份 開始選單 執行 cmd 利用 cd program files mysql mysql server 5.0 bi...

MySQL資料庫備份與恢復

mysql資料庫備份與恢復 mysql資料庫備份與恢復 方法一 1.匯出整個資料庫 命令列進入到mysql安裝目錄的bin目錄下 假設裝在d mysql bin 即 開始 執行 輸入cmd d cd mysql bin 然後執行下面語句 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 ...