天天看點

mysql簡單資料庫定期備份

  • 需要對單節點mysql主機中的資料庫定期進行備份,備份需求是每天全量備份一次,保留七天資料,方法如下:
  • 需要備份的資料庫:

    infor

    yy

  • 書寫的腳本為:

需要修改的地方:

1.密碼

2.mysql.sock路徑

3.--databases 後面接的資料庫名稱

4./data/$day/$day.yy.sql 為我自己存放位置,根據自己需求修改

           
vim /data/backup.sh
#!/bin/bash
source /etc/profile
day=`date +%Y%m%d`
password=wa!11111qaz

mkdir -p /data/$day
mysqldump --single-transaction --master-data=2 -S /var/lib/mysql/mysql.sock --databases infor  -p$password> /data/$day/$day.infor.sql

mysqldump --single-transaction --master-data=2 -S /var/lib/mysql/mysql.sock --databases yy -p$password> /data/$day/$day.yy.sql


           
  • 之後設定定時任務,每天的晚上五點半進行全量備份
crontab -u root -e
30 17 * * * sh /data/backup.sh
           
  • 最後實作的效果為(每天會建立一個檔案夾,裡面包含所有的備份資料庫):
mysql簡單資料庫定期備份
  • 另外,如果想要備份整個全套的,可以用-A參數:
mysqldump --single-transaction --master-data=2 -S /var/lib/mysql/mysql.sock -A -p$password > /data/$day.sql
           

注意:

如果有主從服務的話,進行備份,要開啟binlog服務。

vim /etc/my.cnf

//server_id 運算方式為:伺服器ip後一位加上端口
如果是192.168.1.111 3307------ 1113307  10.203.144.95 3306 ----953306

server_id              =953306
binlog_format            =row             
log_bin               =mysql-bin           
binlog_rows_query_log_events    =on               
log_slave_updates          =on               
expire_logs_days          =7               
binlog_cache_size          =65536             
sync_binlog             =1               
slave-preserve-commit-order     =ON 
           
systemctl restart mysqld
           

如果不想寫變量,并且是全量完整備份的話,可以這樣執行:

mysqldump --single-transaction --master-data=2 -S /var/lib/mysql/mysql.sock -A -p'密碼'> $instance_$port_`date +%F`.sql