1. 程式人生 > >知識點:linux數據庫備份

知識點:linux數據庫備份

查看 參數 刷新 函數 tables mysql 密碼 需要 後綴 name

服務端啟用二進制日誌

如果日誌沒有啟開,必須啟用binlog,要重啟mysql,首先,關閉mysql,打開/etc/my.cnf,加入以下幾行:

[mysqld]
log-bin

然後重新啟動mysql,會產生hostname-bin.000001以及hostname-bin.index,前面的日誌文件是記錄所有對數據的更新操作,後面的文件是存儲所有二進制文件的索引,不能輕易被刪除。

重啟

[root@localhost ]# service mysqld start (5.0版本是mysqld) 
[root@localhost ]# service mysql start (5.5.7版本是mysql)

查看日誌狀態

技術分享圖片

Mysqldump備份執行腳本

# Name:backup.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#備份地址
backupdir=/var/lib/mysql-files/mysqlbackup
#備份文件後綴時間
time=_` date +%Y_%m_%d_%H_%M_%S `
#需要備份的數據庫名稱
db_name=bike_system
#mysql 用戶名
db_user=root
#mysql 密碼
db_pass=bicycle
#mysqldump命令使用絕對路徑,
-flush-logs刷新biglog日誌 mysqldump -flush-logs -u$db_user -p$db_pass --databases $db_name | gzip > $backupdir/$db_name$time.sql.gz #刪除7天之前的備份文件 find $backupdir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 echo "success"

設置腳本定時執行

輸入:crontab -e

選擇一個編輯器

在文件末尾添加:

30 1 * * * /var/lib/mysql-files/backup.sh
#每晚1點半執行數據庫備份腳本 

Mysqldump用法參考

用法:mysqldump[options][db_name[tbl_name...]]
主要選項解釋:
--all-databases,-A:備份所有數據庫
--databases,-B:要備份的數據庫,可以同時備份多個,使用空格分隔
--flush-logs,-F:備份前、請求到鎖之後滾動日誌,要記錄下復制時的二進制日誌
--flush-privileges:通知數據庫重讀授權表
--host=host_name,-hhost_name:要備份的數據庫的主機名,可以基於網絡備份
--lock-all-tables,-x:請求鎖定所有表之後再備份,對MyISAM,InnoDB,Aria做溫備
--single-transaction:能夠對InnoDB存儲引擎實現熱備
-uusename備份的用戶名
-ppassword登陸數據庫的密碼
--events:備份事件調度器代碼
--routines:備份存儲過程和存儲函數
--triggers:備份觸發器
--master-date={0|1|2},0表示不記錄,1表示距離為changemaster語句,2表示記錄為註釋的changemaster語句

  • 1.備份全部數據庫的數據和結構 mysqldump -uroot -p123456 -A >F:\all.sql
  • 2.備份全部數據庫的結構(加 -d 參數) mysqldump -uroot -p123456 -A-d>F:\all_struct.sql
  • 3.備份全部數據庫的數據(加 -t 參數) mysqldump -uroot -p123456 -A-t>F:\all_data.sql
  • 4.備份單個數據庫的數據和結構(,數據庫名mydb) mysqldump -uroot-p123456 mydb>F:\mydb.sql
  • 5.備份單個數據庫的結構 mysqldump -uroot -p123456 mydb-d>F:\mydb.sql
  • 6.備份單個數據庫的數據 mysqldump -uroot -p123456 mydb-t>F:\mydb.sql
  • 7.備份多個表的數據和結構(數據,結構的單獨備份方法與上同) mysqldump -uroot -p123456 mydb t1 t2>f:\multables.sql
  • 8.一次備份多個數據庫 mysqldump -uroot -p123456 --databases db1 db2>f:\muldbs.sql

還原部分分(1)mysql命令行source方法 和 (2)系統命令行方法

1.還原全部數據庫:

(1) mysql命令行:mysql>source f:\all.sql

(2) 系統命令行: mysql -uroot -p123456

(2) mysql -uroot -p123456 mydb

(2) mysql -uroot -p123456 mydb

(2) 系統命令行: mysql -uroot -p123456<f:\muldbs.sql

Biglog還原參考

mysqlbinlog --start-datetime=“時間” 日誌文件路徑 | mysql -u用戶 -p 從規定的起始時間還原到現在

mysqlbinlog --stop-datetime=“時間” 日誌文件路徑 | mysql -u用戶 -p 從最開始還原到規定的結束時間

mysqlbinlog --start-datetime=“時間” --stop-datetime=“時間” 日誌文件路徑 | mysql -u用戶 -p 從規定的起始時間還原到規定的結束時間

通過位置還原:

--start-position="還原數據的起始位置"

--stop-position="還原數據的結束位置"

mysqlbinlog --start-position=“位置” 日誌文件路徑 | mysql -u用戶 -p 從規定的起始位置還原到現在

mysqlbinlog --stop-position=“位置” 日誌文件路徑 | mysql -u用戶 -p 從最開始還原到規定的結束位置

mysqlbinlog --start-position=“位置” --stop-position=“位置” 日誌文件路徑 | mysql -u用戶 -p 從規定的起始位置還原到規定的結束位置

知識點:linux數據庫備份