Mysqldump备份脚本for slave
来源:互联网 发布:亿赛通加密软件 编辑:程序博客网 时间:2024/05/19 05:32
Mysqldump在很多场景下是作为主力备份工具使用,不过mysqldump创建一致性备份会带有全局锁定(flush table with read lock),而在slave节点上就可以不用担心全局锁定的影响,因为可以控制slave节点在创建备份时不承担前段业务。
备份过程中,可以借助于slave中的复制线程,使得备份期间slave根本不产生变更,这样的话mysqldump无需使用全局锁定也可以创建一致性备份,即只需要停止sql_thread线程,这样,slave节点仍然能接收master节点的日志,但并不会应用。在此期间创建的备份理论上应为一致状态。而且master节点新产生的修改时间仍能同步到本地(io_thread仍在工作)。待备份任务完成后重新启动sql_thread即可。
大致步骤如下:
A . 停止slave服务中的sql_thread线程
B. 记录当前接收和应用二进制日志文件及位置
C. 执行备份命令
D. 再次记录当前接收和应用二进制日志文件及位置
E. 启动slave服务中的sql_thread线程
备份脚本:
#!/bin/sh # show_slave_status(){ echo -e "---- master.info:----" >>$LOG_FILE cat ${MYSQL_PATH}/data/master.info |sed -n '2,3p' >>$LOG_FILE echo -e "---- show slave status: ----" >> $LOG_FILE echo "show slave status\G" | ${MYSQL_CMD} | egrep "Slave_IO_Running|Slave_SQL_Running|Master_Log_File|Read_Master_Log_Pos|Exec_Master_Log_Pos|Relay_Log_File|Relay_Log_Pos" >> $LOG_FILE echo -e " " >> $LOG_FILE}MYSQL_USER=rootMYSQL_PASSWORD=mysqldDATA_PATH=/backup/bakDATE=$(date +%Y%m%d) DATA_FILE=$DATA_PATH/dbfullbak_$DATE.sql.gzLOG_FILE=$DATA_PATH/dbfullbak_$DATE.logMYSQL_PATH=/u01/my3306MYSQL_CMD="$MYSQL_PATH/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_PATH}/run/mysql.sock"MYSQL_DUMP="$MYSQL_PATH/bin/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_PATH}/run/mysql.sock -A -R -x --default-character-set=utf8"echo > $LOG_FILEecho -e "==== Jobs started at $(date +"%y-%m-%d %H:%M:%S") ===\n" >> $LOG_FILEecho -e "*** started position:====" >> $LOG_FILEecho "stop slave SQL_THREAD;" |$MYSQL_CMDshow_slave_statusecho -e "*** Excuted commend:${MYSQL_DUMP} |gzip > $DATA_FILE" >> $LOG_FILE${MYSQL_DUMP} |gzip > $DATA_FILEecho -e "*** Excuted finished:${MYSQL_DUMP} |gzip > $DATA_FILE" >> $LOG_FILEecho -e "*** Bachkup file size:"`du -sh $DATA_FILE`" ===\n" >> $LOG_FILEecho -e "*** recheck position:====" >> $LOG_FILEecho "stop slave SQL_THREAD;" |$MYSQL_CMDshow_slave_statusecho -e "----Find expired backup and delete those file ----" >> $LOG_FILEfor tfile in $(/usr/bin/find $DATA_PATH/ -mtime +7)do if [-d $tfile ] ; then rmdir $tfile elif [-f $tfile] ; then rm $tfile fi echo "----Delete the file $tfile ----" >> $LOG_FILEdone echo -e "==== Jobs ended at $(date +"%y-%m-%d %H:%M:%S") ===\n" >> $LOG_FILE
备份日志:
[mysql@mysql_slave bak]$ cat dbfullbak_20171130.log ==== Jobs started at 17-11-30 17:39:23 ===*** started position:====---- master.info:----binlog.000023195---- show slave status: ---- Master_Log_File: binlog.000023 Read_Master_Log_Pos: 195 Relay_Log_File: relaylog.000005 Relay_Log_Pos: 355 Relay_Master_Log_File: binlog.000023 Slave_IO_Running: Yes Slave_SQL_Running: No Exec_Master_Log_Pos: 195 Slave_SQL_Running_State: *** Excuted commend:/u01/my3306/bin/mysqldump -uroot -pmysqld -S /u01/my3306/run/mysql.sock -A -R -x --default-character-set=utf8 |gzip > /backup/bak/dbfullbak_20171130.sql.gz*** Excuted finished:/u01/my3306/bin/mysqldump -uroot -pmysqld -S /u01/my3306/run/mysql.sock -A -R -x --default-character-set=utf8 |gzip > /backup/bak/dbfullbak_20171130.sql.gz*** Bachkup file size:180K /backup/bak/dbfullbak_20171130.sql.gz ===*** recheck position:====---- master.info:----binlog.000023195---- show slave status: ---- Master_Log_File: binlog.000023 Read_Master_Log_Pos: 195 Relay_Log_File: relaylog.000005 Relay_Log_Pos: 355 Relay_Master_Log_File: binlog.000023 Slave_IO_Running: Yes Slave_SQL_Running: No Exec_Master_Log_Pos: 195 Slave_SQL_Running_State: ----Find expired backup and delete those file ----==== Jobs ended at 17-11-30 17:39:23 ===
可以在备份完成后检查备份前后,读取和应用master节点的二进制位置有无变化,无变化则可认为备份集是一致的。
阅读全文
0 0
- Mysqldump备份脚本for slave
- mysqldump 备份脚本
- MySQL mysqldump备份脚本
- mysqldump 备份数据库脚本
- mysqldump定时备份脚本
- mysqldump自动备份shell脚本
- mysqldump完全备份shell脚本
- Mysql数据备份三(脚本备份mysqldump)
- mysqldump全备份脚本mysqlallbackup.sh
- MySQL逻辑备份mysqldump全备脚本
- linux下mysql用mysqldump备份脚本
- mysqldump备份脚本(全量+增量)
- mysqldump备份
- mysqldump备份
- Mysqldump备份
- mysqldump 备份
- mysqldump全备份脚本mysqlallbackup.sh-->(旧文档整理)
- Linux shell脚本配合mysqldump备份mysql数据库
- mySql+Hibernate 单表上下级关系数据整理
- Leetcode Combinations问题总结
- Sublime Text3 注册码
- Unity3d 游戏被强制暂停的判断与处理
- 邮件安全风险高发,公安部、工信部、国家保密局联发预警
- Mysqldump备份脚本for slave
- eclipse 中文乱码
- solr学习总结(一)
- APP升级测试
- 深入探讨大数据权限管理方案-从哲学到技术
- 笔记2-容器适配器/泛型算法/lambada表达式
- Android内存泄漏检测利器:LeakCanary
- HTML、CSS学习-node.js三句代码挂载静态网站
- 私募股权和VC有什么区别