mysql的全量備份與增量備份mysql
全量備份:可使用mysqldump直接備份整個庫或者是備份其中某一個庫或者一個庫中的某個表。linux
備份全部數據庫:
[root@my ~]# mysqldump -uroot -p123456 --all-databases >/opt/all.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.sql
備份單個數據庫的全部表:
[root@my ~]# mysqldump -uroot -p123456 --databases test>/opt/test.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.shell
備份數據庫中的單個表的結構:
[root@my ~]# mysqldump -uroot -p123456 -d test userinfo >/opt/test_userinfo_jiegou.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.數據庫
備份數據庫中的單個表的內容:
[root@my ~]# mysqldump -uroot -p123456 test userinfo>/opt/test_userinfo_neirong.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.bash
增量備份:增量備份是針對於數據庫的bin-log日誌進行備份的,須要開始數據庫的bin-log日誌。增量備份是在全量的基礎上進行操做的。增量備份主要是靠mysql記錄的bin-log日誌。(能夠把二進制日誌保存成天天的一個文件)spa
1.開啓二進制日誌文件;
[root@my ~]# echo -e "log-bin = /usr/local/mysql/logs/mysql_bin \nserver_id = 1\n max_binlog_size = 100M " >>/etc/my.cnf 日誌
根據position值位置進行恢復;
[root@my ~]# mysqlbinlog --start-position=1 --stop-position=795 /usr/local/mysql/logs/mysql_bin.000001 |mysql -uroot -p123456server
根據時間點位置進行恢復;-d指定數據庫,選項-h指定主機
[root@my ~]#mysqlbinlog --start-date='2019-05-30 14:49:25' --stop-date='2019-05-30 14:52:39' -d linux -h127.0.0.1 /usr/local/mysql/logs/mysql-bin.000001 |mysql -uroot -p123456it
將二進制日誌文件中全部的數據記錄所有恢復;
[root@my ~]# mysqlbinlog /usr/local/mysql/logs/mysql_bin.000001 |mysql -uroot -p123123
腳本:
全量備份:
[root@calldb1 ~]# cat /shell/fs_sql_bak.sh
#!/bin/bash
##beifen sql
Bakdir=/data/sql-bak
Time=$(date +"%F_%T")
[ -f /usr/bin/mysqldump ] && echo "ok" || exit
/usr/bin/mysqldump -uroot -p123456 -R --all-databases > $Bakdir/$Time"_34.sql"
#echo $Bakdir/$Time"_34.sql"
/usr/bin/mysqldump dbname -uroot -p123456 > $Bakdir/$Time"-dbname.sql"
增量備份:
[root@calldb2 shell]# cat zeng_sql.sh
#!/bin/bash
## zeng liang bak sql
Logdir=/usr/local/mysql/logs
Time=$(date +%F)
mkdir $Logdir/"log-"$Time
find $Logdir -type f -mmin 1 -exec cp {} $Logdir/"log-"$Time/ \;
if [ -f $Logdir/"log-"$Time/mysql-bin.* ];then
echo "mysql is zeng backup success on time-$(date +%F)" >>$Logdir/"log-"$Time/mysql_zeng_backup.log
else
echo "mysql is zeng backup fail on time-$(date +%F)" >>$Logdir/"log-"$Time/mysql_zeng_backup.log
fi
mysqladmin -uroot -p123456 flush-logs >/dev/null
生產環境:建議一週或者三天進行一次全量備份,一天一次增量備份。