服務端啟用二進制日志
如果日志沒有啟開,必須啟用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 從規定的起始位置還原到規定的結束位置