資料庫備份實戰二

2021-10-24 00:24:46 字數 3155 閱讀 6687

實戰案例2

mysqldump + binlog

優勢1 自動記錄日誌position位置。

(show master status\g;)

2 可用性,一致性

鎖表機制。

語法mysqldump -h 伺服器 -u使用者名稱 -p密碼 資料庫名 > 備份檔案.sql

引數說明

庫的範圍

-a, --all-databases 所有庫

school 資料庫名

school stu_info t1 是指school資料庫的表stu_info、t1

-b, --databases bbs test mysql 多個資料庫

–single-transaction #innodb 一致性 服務可用性

–master-data=1|2 #該選項將會記錄binlog的日誌位置與檔名並追加到檔案中,或新增注釋

高階選項

–opt #同時啟動各種高階選項

-r, --routines #備份儲存過程和儲存函式

-f, --flush-logs #備份之前重新整理日誌,截斷日誌。備份之後新binlog。

–triggers #備份觸發器

幫助mysqldump --help

備份實戰

請準備兩套root密碼

密碼1qianfeng@123

配置到當前資料庫中。

密碼2qianfeng@1234

備用準備庫1

注意請清理掉之前的test庫。實驗後半部分,需要繼續建立test庫,避免混淆。

testdb1.t1 建立庫和表,插入資料

create database testdb1;

use testdb1 進入庫里

create table t1(id int); 建立表

insert into t1 values(1);

insert into t1 values(2);

insert into t1 values(3);

mysql> select * from testdb1.t1;   檢視庫中表的全部內容
±-----+

| id |

±-----+

| 1 |

| 2 |

| 3 |

±-----+

執行備份,先建立備份的目標資料夾

[root@localhost ~]# mysqldump -p』qianfeng@123』 --all-databases --single-transaction --master-data=2 --flush-logs > /backup/date +%f-%h-mysql-all.sql

這是一條命令,注意空格。master-data=2 注釋掉日誌記錄

觀察備份細節

觀察各種鎖機制,用來保證資料一致性

22 change master to master_log_file='localhost-bin.000004', master_log_pos=154;

二進位制日誌截斷位置。第22行

業務正常推進... 相當於完整備份

備份後的資料變更行為。修改資料,用二進日誌檔案備份恢復。注意變更後的檔案沒有備份,需要用二進位制日誌重新操作。

在testdb2.t2 中插入資料1,2,3;

創testdb2庫,t2表,插入資料。

切斷二進位制日誌(重啟資料庫)

create database testdb2;

use testdb2

create table t2;

insert into t2 values(1);

insert into t2 values(2);

insert into t2 values(3);

mysql> select * from testdb2.t2;
±-----+

| id |

±-----+

| 1 |

| 2 |

| 3 |

±-----+

在testdb2.t2 中插入資料4;在testdb2.t2 中插入資料5;

mysql> show databases;

±-------------------+

| database |

±-------------------+

| testdb1 |

| testdb2 |

±-------------------+

12 rows in set (0.00 sec)

mysql>

恢復實戰

1 備份二進位制日誌檔案

cp /var/lib/mysql/*bin* ~

2. 停止資料庫

systemctl stop mysqld

3. 清理環境

rm -rf /var/lib/mysql/*

4.啟動資料庫

systemctl start mysqld

grep 'password' /var/log/mysqld.log

找密碼,再改一下密碼。請使用密碼2

9.關於資料恢復時的多餘日誌。

方法一原因

每次還原資料庫都會增加日誌的體積。但這些都是還原操作。恢復資料庫的日誌占用了儲存空間。

mysql> set sql_log_bin =0

再mysql> source /backup/*.sql

觀察二進位制日誌並沒有發生變化。

方法2在備份檔案中,加入關閉二進位制日誌。

Oracle實戰7 資料庫備份

日誌切換 alter system switch logfile 檢視日誌的存在模式 archive log list 改變日誌的歸檔模式,必須資料庫在mount狀態下 alter database noarchivelog alter database archivelog 第一小節 資料庫日誌模...

Oracle實戰7 資料庫備份

日誌切換 alter system switch logfile 檢視日誌的存在模式 archive log list 改變日誌的歸檔模式,必須資料庫在mount狀態下 alter database noarchivelog alter database archivelog 第一小節 資料庫日誌模...

資料庫備份

匯出方案 匯出自己的方案exp scott tiger oracle owner scott file d scott.dmp 成功匯入方案 imp userid retest retest oracle file e rem.dmp full y 匯出表 兩百萬資料 exp userid scot...