PHP程序員玩轉Linux系列文章:
1.PHP程序員玩轉Linux系列-怎么安裝使用CentOS
2.PHP程序員玩轉Linux系列-lnmp環(huán)境的搭建
3.PHP程序員玩轉Linux系列-搭建FTP代碼開發(fā)環(huán)境
前幾天有個新聞,說是gitlab的工程師把數(shù)據文件給誤刪了,搞了個大事件,很多人都去圍觀了.備份工作應該在最開始的時候就要做,否則就會失去最佳時機,為了保證我的數(shù)據是安全的,因此我要搞備份了.備份分為邏輯備份和物理備份,邏輯備份是導sql,物理備份是基于文件的,這兩種我都搞一下.
開啟binlog
首先第一件事是打開binlog日志,編輯mysql配置文件開啟一下,默認是關閉的.編輯 /etc/my.cnf ,log-bin=mysqlbinlog =號后面的是binlog日志的名字,默認生成在數(shù)據目錄里面,重啟一下mysql服務 , service mysqld restart

查看mysql的數(shù)據目錄 , /var/lib/mysql ,mysqlbinlog.000001等文件就是binlog日志文件.

添加一些測試數(shù)據
建數(shù)據庫,建表和插入一些記錄,用于測試,表的存儲引擎選擇innodb,因為這個引擎容易測出來問題
#建庫create database entmail charset=utf8; #建表,存儲引擎選用innodbcreate table user( id int auto_increment primary key, name varchar(100) not null default '' ) engine=innodb;#插記錄insert into user values(null,'shihan');insert into user values(null,'shihan1');insert into user values(null,'shihan2');insert into user values(null,'shihan3');

小數(shù)據量使用mysqldump邏輯備份
第一想到的備份方式是使用mysqldump,導出sql語句,恢復的時候就再次導入sql語句.
針對我的數(shù)據庫,用戶名root 密碼空,我放sql文件的位置是/home/shihan1/mysql/sqls/ ,備份所有數(shù)據庫,我的導出命令是下面這句
復制代碼 代碼如下:mysqldump -uroot --all-databases > /home/shihan1/mysql/sqls/all.sql
此時,我誤刪了數(shù)據庫entmail , drop database entmail

不著急,馬上進行恢復,執(zhí)行以下導入命令,數(shù)據庫立刻就回來了,注意一個是mysqldump命令,一個是mysql命令
復制代碼 代碼如下:mysql -uroot < /home/shihan1/mysql/sqls/all.sql
為啥不能用拷貝數(shù)據目錄的方式備份
有的同學會使用直接拷貝數(shù)據目錄的方式備份,我也測試了一下,實際證明這種方式是不正確的.我用tar命令把數(shù)據目錄整個打包搬走,然后刪除整個數(shù)據目錄,再搬回來.

因為我把mysql的那幾張用戶表啥的都刪了,mysql會進行重新初始化

我把數(shù)據文件再搬回來,然后進mysql看看,結果是這樣的,告訴我user表不存在了,這張表是innodb引擎的,所以不能使用這種方式,幸虧我有前面的邏輯備份,從新導一下,數(shù)據又回來了.
復制代碼 代碼如下:mysql -uroot < /home/shihan1/mysql/sqls/all.sql

使用第三方軟件percona-xtrabackup實現(xiàn)物理備份
可以實現(xiàn)物理備份的軟件與很多,mysql也有企業(yè)版?zhèn)浞莨ぞ?但是貌似是收費的,percona-xtrabackup這個開源軟件可以很好的實現(xiàn)全量備份和增量備份.
新聞熱點
疑難解答
圖片精選