二進位制備份還原案例

igcllq發表於2020-10-11

開啟二進位制日誌寫進配置檔案

vi /etc/my.cnf
[mysqld]
log_bin=/data/mysql/mysqlbinlog #等於後面是目錄路徑 mysqlbinlog是二進位制檔案字首
重啟mysql
systemctl restart mariadb

使用mysqldump工具把資料庫備份

這是備份指定資料庫
mysqldump -B hellodb > buckup/hellodb.sql
這是備份所有資料庫
mysqldump -A > buckup/all.sql

#完全備份,並記錄備份的二進位制位置(可以也用這個,這個更加好)
mysqldump  -uroot -pmagedu -A -F --default-character-set=utf8  --single-transaction --master-data=2 | gzip > /backup/all_`date +%F`.sql.gz

再在資料庫表中新增資料

insert student (name,age,gender,classid) values ('chickabiddy',18,'M',7);
insert student (name,age,gender,classid) values ('Bad baby',15,'F',6);

新增完成後把二進位制檔案進行備份(二進位制檔案存放位置在var/lib/mysql(預設存放位置) 自己設定的在my.cnf檢視)

mysqlbinlog  mysqlbinlog.000001 > backupmysql

#損壞資料庫

rm -rf /var/lib/mysql/*

壓縮的就解壓縮

gzip -d all_2019-11-25.sql.gz

#CentOS 8 需要事先生成資料庫相關檔案,CentOS7 不需要執行此步直接重啟

mysql_install_db  --user=mysql
systemctl restart mariadb

重啟後臨時關閉二進位制日誌

MariaDB [(none)]>set sql_log_bin=0;

還原資料庫和表資料

source /backup/all.sql
source /backup/backupmysql

也可以這樣
mysqlbinlog backupmysql>> all.sql
source /backup/all.sql

相關文章