mysqldump工具自带选项没有对
导出备份文件压缩功能,可结合
gzip只使用一条命令压缩
导出文件,方法如下:
mysqldump压缩导出:
#
mysqldump -h192.168.0.3 -P3306 -uroot -ppwd123 --single-transaction --default-character-set=utf8 -R -E zabbix --log-error=zabbix2018030709.log |gzip >
zabbix20180307
09.sql.gz
参数解释:
-h 正式DB IP
-P 正式DB Port
-u 正式DB賬號
-p 正式DB賬號對應密碼
-R 導出存儲過程和函數
-E 導出事件
--single-transaction 事务一致性備份
--default-character-set 字符集,和正式db字符集一致
--log-error 錯誤日誌文件,如果備份時無錯誤發生,只寫空文件,有錯誤話寫具體內存
zabbix 导出DB name
mysqldump压缩导出后导入:
#
gunzip <
zabbix2018030709
.sql.gz |mysql -uroot -p
pwd123
zabbix
將mysqldump压缩导出寫成shell腳本(可供conrtab定時執行)
#
vi zabbixdbbak.sh
FILENAME=`date +%Y%m%d%H`
cd /data/dbbak
mysqldump -h192.168.0.3 -P3306 -uroot -ppwd123 --single-transaction --default-character-set=utf8 -R -E zabbix --log-error='zabbix'$FILENAME.log |gzip > 'zabbix'$FILENAME.sql.gz
find /data/dbbak/zabbix*.gz -mtime +7 -exec rm -f {} \;
find /data/dbbak/zabbix*.log -mtime +7 -exec rm -f {} \;
#
crontab -e
30 0 * * * sh /data/dbbak/zabbixdbbak.sh 1>/data/dbbak/zabbixdbbakcron.log 2>>/data/dbbak/zabbixdbbakcron.bad
mysqldump导出数据一致性主要有single-transaction 和 lock-all-tables 二选一控制的:
single-transaction
是在导出开始时设置事务隔离状态并使用一致性快照开始事务,而后马上unlock tables,
然后执行导出,导出过程不影响其它事务或业务连接,但只支持类似innodb多版本特性的引擎,
因为保证了即使导出期间其它操作(事务点t2)改变了数据,而导出时仍能取出导出开始的事务点t1时的数据。
简单地说,就是通过回滚段能记录不同的事务点的各版本数据
single-transaction 的流程:
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
SHOW MASTER STATUS
-- 这一步就是取出 binlog index and position
UNLOCK TABLES
...dump...
lock-all-tables
是一开始执行 FLUSH TABLES WITH READ LOCK; 加全局读锁,会阻塞其它写操作,直到dump完毕。