[TOC]
0x00 前言说明
描述:本文章是为了记录在日常MySQL运维中对数据库进行操作处理的Shell脚本编写,做一个备份说明;
0x01 备份
1.Mysql数据库备份自动删除
[TOC]
描述:本文章是为了记录在日常MySQL运维中对数据库进行操作处理的Shell脚本编写,做一个备份说明;
1.Mysql数据库备份自动删除1
2
3
4
5
6
7
8
9
10#!/bin/bash
#Func:数据库备份并删除10天的备份文件
read -t 30 -p "请输入数据库备份得路径:" dir
filename="${dir}db_time.$(date "+%Y-%m-%d").sql"
mysqldump --database db_time -u root -p root > $filename
#获取日期当前减去10天(也可以使用ls列举出前十天的文件进行全部删除)
d=$(date -d "-10 day" +%Y-%m-%d)
#删除10天前的备份文件
del_file="${dir}db_time.${d}.sql"
rm -rf $del_file
2.mysql多数据库与表备份
描述:分表备份与备份数据库差不多,优缺点:文件多,分布;碎1
2
3
4
5
6
7
8#linux
mysql -uroot -p123456 -e "show databases;" | grep -Evi "database|info|perfor" | sed -r 's#^([a-z].*$)'#mysqldump -uroot -p123456 --event -B \1|gzip > /opt/backup/\1.sql.gz#g' | bash //bash是执行
#windwows (git)
mysql -uroot -p123456 -e "show databases;" | findstr /V /I "Database information performance" |sed -r "s#^([a-z].*$)# mysqldump.exe -uroot -p123456 --events -B \1|gzip >.\/backup\/\1.sql#g"|cmd
#分表备份:
mysql -uroot -p123456 -e "use demo;show tables" | findstr "u w"
相关脚本:1
2
3
4
5
6
7
8
9
10
11
12
13#shell脚本
#!/bash/bin
for down in `mysql -uroot -p123456 -e "show databases;" | grep -Evi "database|information|performance"`
do
mysqldump -uroot -p123456 --events -B $down|gzip > /opt/back/${down}_bak.sql.gz
done
#bat脚本
@echo off
mysql -uroot -p123456 -e "show databases;" |findstr /V /I "Database information performance" > data.txt
for /f "" %%v IN (data.txt) DO @mysqldump.exe -uroot -p123456 --events -B %%v > ./backup/%%v.sql.gz
echo "备份完成"
del /s /f /q data.txt
1.主从库一键自动化主从复制脚本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48#(1)模式主从同步的步骤,获取到全备及全备过程的binlog位置信息或者直接使用--master-data参数解决;
#---- master 主库 ----#
#!/bin/bash
MYUSER="root"
MYPASS="123456"
MYSOCK=/data/3306/mysql.sock
MAIN_PATH=/server/backup
LOG_FILE=${MAIN_PATH}/logs_`date +%F`.log
DATA_FILE=${MAIN_PATH}/backup_`date +%F`.sql.gz
MYSQL_PATH=/usr/local/mysql/bin
MYSQL_CMD="${MYSQL_PATH}/mysql -u$MYUSER -p$MYPASS -S $MYSOCK"
MYSQL_DUMP="${MYSQL_PATH}/mysqldump -u$MYUSER -p$MYPASS -S $MYSOCK -A -B --master-data=1 --single-transaction -e" #single-transaction 针对于Innodb备份 (全备)
#值得学习的地方 (注意采用EOF可以输入多行命令)
cat | $MYSQL_CMD<< EOF
flush tables with read lock;
system echo "--show master status --" >>$LOG_FILE;
system MYSQL_CMD -e "show master status;"|tail -l >>$LOG_FILE;
system ${MYSQL_DUMP} | gzip >$DATA_FILE;
EOF
$MYSQL_CMD -e "unlock tables;"
#---- slave 从库 ----#
#!/bin/bash
MYUSER="root"
MYPASS="123456"
MYSOCK=/data/3306/mysql.sock
MAIN_PATH=/server/backup
LOG_FILE=${MAIN_PATH}/logs_`date +%F`.log
DATA_FILE=${MAIN_PATH}/backup_`date +%F`.sql.gz
MYSQL_PATH=/usr/local/mysql/bin
MYSQL_CMD="${MYSQL_PATH}/mysql -u$MYUSER -p$MYPASS -S $MYSOCK"
#recover
cd ${MAIN_PATH}
gzip -d backup_`date +%F`.sql.gz
$MYSQL_CMD<backup_`date +%F`.sql
#config slave (由于是全备所以不需要加pos位置)
cat |$MYSQL_CMD<< EOF
CHANGE MASTER TO
MASTER_HOST='10.0.0.1',
MASTER_PORT="3306",
MASTER_USER='rep',
MASTER_PASSWORD='oldboy123',
EOF
$MYSQL_CMD -e "start slave;"
$MYSQL_CMD -e "show slave status\G" |egrep "IO_Runing|SQL_Runing" >$LOG_FILE
mail -s "mysql slave result" xxx@test.com <$LOG_FILE
你好看友,欢迎关注博主微信公众号哟! ❤
这将是我持续更新文章的动力源泉,谢谢支持!(๑′ᴗ‵๑)
温馨提示: 未解锁的用户不能粘贴复制文章内容哟!
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主,
将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!
@WeiyiGeek - 为了能到远方,脚下的每一步都不能少
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】, 个人首页地址( https://weiyigeek.top )
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、赞个助】,这将对我的肯定,我将持续整理发布更多优质原创文章!。
最后更新时间:
文章原始路径:_posts/数据存储/Database-运维/MySQL/运维实战/MySQL运维常用Shell脚本汇集.md
转载注明出处,原文地址:https://blog.weiyigeek.top/2020/1-3-89.html
本站文章内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议