mysql选择前12周_第十二周作业
1、编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份。
2、配置Mysql主从同步
3、使用MHA实现Mysql高可用。
1.编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份
思路:
mysqldump的备份分为全库备份-A和-B部分库备份 这个写两个函数
xtrabackup完全备份全库备份 写函数
定义彩色变量
while循环里面写,cat输入重定向打印彩色菜单提示符语句 read -p提示符,case语句菜单调用函数
image.png
复制可用,仅仅是全备份 没有考虑binlog备份。
下面注释的read -p的行 如果取消则变成交互式输入变量脚本
root@17 ~]# cat bk.sh
#!/bin/bash
. /etc/init.d/functions
. /etc/profile.d/path.sh
RED="echo -e \e[1;31m"
END="echo -e \e[0m"
TIME=`date +%F_%H-%M`
XBK=/backup/xbk
FULL_BK=/backup/full
#BIN_BK=/backup/binlog
BK_DIR=/backup
ETC="/mysql/3306/etc/my.cnf"
SOCK="/mysql/3306/sock/mysql.sock"
DB_LIST=$(mysql -e 'show databases'|grep -Ev 'information_schema|performance_schema|sys|Database')
USER=root
PASS=''
BK_USER=root
BK_IP=10.0.0.27
BK_PASS=123456
BK_PORT=22
#read -p "input the mysql_user: " USER
#read -p "input the mysql_passwd: " PASS
#read -p "input the bk_host user(like root): " BK_USER
#read -p "input the bk_host IP (like 10.0.0.8): " BK_IP
#read -p "input bk_host PASSWORD: " BK_PASS
test_connect_mysql(){
if [ -z $PASS ];then
mysql -u$USER -S $SOCK -e 'select @@hostname' &>/dev/null && action "connect mysql successful" || { action "connect to mysql failed,please check user,passd or host " false ;exit 3; }
else
mysql -u$USER -p${PASS} -S $SOCK -e 'select @@hostname' &>/dev/null && action "connect mysql successful" || { action "connect to mysql failed,please check user,passd or host " false ;exit 3; }
fi
}
dumpbk_B_mysql(){
[ -d ${FULL_BK} ] || mkdir -p ${FULL_BK}
#[ -d ${BIN_BK} ] || mkdir -p ${BIN_BK}
for DB in ${DB_LIST};do
if [ $PASS ! = "" ];then
mysqldump -u$USER -p${PASS} -S $SOCK -B $DB -F -E -R --triggers --single-transaction --master-data=2 -q | gzip > ${FULL_BK}/${DB}_dumpbk_${TIME}.sql.gz
else
mysqldump -u$USER -S $SOCK -B $DB -F -E -R --triggers --single-transaction --master-data=2 -q | gzip > ${FULL_BK}/${DB}_dumpbk_${TIME}.sql.gz
fi
[ $? -eq 0 ] && action "local ${DB} backup successful,see $FULL_BK" || { action "local backup failed" false;exit 3; }
done
}
dumpbk_A_mysql(){
[ -d ${FULL_BK} ] || mkdir -p ${FULL_BK}
#[ -d ${BIN_BK} ] || mkdir -p ${BIN_BK}
for DB in ${DB_LIST};do
if [ $PASS ! = "" ];then
mysqldump -u$USER -p${PASS} -S $SOCK -A -F --single-transaction --master-data=2 -q | gzip > ${FULL_BK}/ALL_dumpbk_${TIME}.sql.gz
else
mysqldump -u$USER -S $SOCK -A -F --single-transaction --master-data=2 -q | gzip > ${FULL_BK}/ALL_dumpbk_${TIME}.sql.gz
fi
[ $? -eq 0 ] && action "local backup successful,see backup dir $FULL_BK" ||{ action "local backup failed" false;exit 3; }
done
}
remote_bk (){
rpm -q sshpass &> /dev/null || yum -y install sshpass &>/dev/null
[ -f ~/.ssh/id_rsa ] || ssh-keygen -P "" -f /root/.ssh/id_rsa &>/dev/null
sshpass -p ${BK_PASS} ssh-copy-id -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa.pub ${BK_USER}@${BK_IP} -p ${BK_PORT} &>/dev/null || { action "remote backup server message maybe incorrect" false;exit 3; }
sshpass -p ${BK_PASS} ssh -o StrictHostKeyChecking=no ${BK_USER}@${BK_IP} -p ${BK_PORT} mkdir -p ${BK_DIR}
rsync -auv -e "ssh -p $BK_PORT" ${BK_DIR}/* ${BK_USER}@${BK_IP}:${BK_DIR} &>/dev/null
[ $? -eq 0 ] && action "remote backup successful,see ${BK_USER}@${BK_IP}:${FULL_BK}" || { action "remote backup failed" false;exit3; }
}
xtrabackup_all (){
[ -d ${XBK} ] || mkdir -p ${XBK}
if [ $PASS ! = "" ];then
innobackupex --defaults-file=${ETC} --socket=${SOCK} --user=${BK_USER} --password=${BK_PASS} ${XBK}
else
innobackupex --defaults-file=${ETC} --socket=${SOCK} --user=${BK_USER} ${XBK} &>/dev/null
fi
[ $? -eq 0 ] && action "local backup successful,see backup dir $XBK" || { action "local backup failed" false;exit 3; }
}
while :;do
$RED
cat <
1)mysqldump全备份
2)mysqldump分库备份
3)xtrabackup全备份
4)退出
EOF
$END
read -p "please choose a backup method: " MENU
case $MENU in
1)
test_connect_mysql
dumpbk_A_mysql
remote_bk
;;
2)
test_connect_mysql
dumpbk_B_mysql
remote_bk
;;
3)
test_connect_mysql
xtrabackup_all
remote_bk
;;
4)
exit 0
;;
*)
action "please input correct value 1|2|3" false
exit 3
;;
esac
done
2.配置Mysql主从同步 我这里用GTID复制
主库10.0.0.8 master
从库10.0.0.18 slave
image.png
主库配置
更改master配置文件
# replication
server_id=8
# binlog
# sql_log_bin=ON #default ON
log_bin=/mysql/3306/binlog/mysql-bin
# sync_binlog=1
binlog_format=row # default row
gtid_mode=on
enforce-gtid-consistency=true #强制一致性
systemctl restart mysqld
创建复制用户并授权
mysql> create user repl@'10.0.0.%' identified by '123';
Query OK, 0 rows affected (0.01 sec)
mysql> grant replication slave on *.* to repl@'10.0.0.%';
Query OK, 0 rows affected (0.01 sec)
主库mysqldump全备份所有数据到从库slave1
# 如果是第一次配置主从,直接建立主从,不用此步骤
mysqldump -A --single-transaction --master-data=1 -F >/root/all.sql
scp /root/all.sql root@10.0.0.18:/root
从库配置
从库配置文件
# replication
server_id=18
# binlog
# sql_log_bin=ON #default ON
log_bin=/mysql/3306/binlog/mysql-bin
read-only #从库加只读
# sync_binlog=1
binlog_format=row # default row
gtid_mode=on
enforce-gtid-consistency=true #强制一致性
systemctl restart mysqld
还原数据库到从库
# 同样如果第一次建立主从 不用此步骤
root@18 ~]# mysql -e 'set sql_log_bin=0;source /root/all.sql;set sql_log_bin=1'
写change master to主库信息到master.info 注意此处写masterIP
CHANGE MASTER TO
MASTER_HOST='10.0.0.8',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
启动从库IO和SQL线程并查看状态
start slave;
show slave status\G;
3.实现MHA高可用
mysql选择前12周_第十二周作业相关推荐
- 统计学第十二周,第十三周
知识点:回归分析 本周是统计学学习小组-第二期的第十二周,我们这周的学习内容是[回归分析],涉及到的二级知识点有两个,分别是: 1.一元线性回归:相关关系.最小二乘法.拟合优度检测.显著性检验.回归预 ...
- 20145240《信息安全系统设计基础》第十二周学习总结
20145240<信息安全系统设计基础>第十二周学习总结 前三周博客链接 第九周学习总结 第十周学习总结 第十一周学习总结 视频学习内容总结 指针数组与数组指针 数组指针(也称行指针) 定 ...
- 20145206 《信息安全系统设计基础》第十二周学习总结
20145206 <信息安全系统设计基础>第十二周学习总结 本周学习目标 1.第九周代码检查 2.第十周代码检查 3.第十一周代码检查 博客链接 20145206 <信息安全系统设计 ...
- 2019春第十二周作业
作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函数返 ...
- 2019春第十二周 编程总结
一.作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函 ...
- 左耳听风 第四十二周
左耳听风 第四十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...
- linux按照学号对文件进行排序,学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周...
一.题目要求 实现Linux下Sort -t : -k 2的功能 二.题目理解 -t 分隔符,将每一行数据按照该选项指定的分隔符分成多个域.默认情况下是使用tab键或者空格符来分割的. -k 指定用哪 ...
- Hubble Zhang的学习日记(第十二周)
为了督促自己每天都有进步,在这里记录下每天遇到的问题和学到的新知识,仅作为个人回顾使用. 目录 日记(第十二周) 20201130 20201201 20201202 日记(第十二周) 2020113 ...
- 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业
20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业 服务 Service的声明 Service是Android中的四大组件,使用它一定要在AndroidManifest.x ...
最新文章
- Kotlin一大特色之空安全
- bootstrap30-辅助类展示不同的背景颜色
- spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)
- 20155213 2016-2017-2《Java程序设计》课程总结
- KlayGE C++代码风格指南英文版
- 怎么颈椎和秃头都扯上我,程序员:我太难了…
- Struts2配置国际化文件
- LNMP架构数据迁移到NFS存储
- vs2013制作滚屏软件
- GNS3新手安装教程
- 无法复制文件到远程桌面的解决办法
- python爬取ZOL高清壁纸
- web-天下武功唯快不破
- android 从app跳转到微信小程序和微信没有设置浮动权限 打不开小程序
- RTMP推流摄像机联合EasyCVR安防视频云服务平台助力智能楼宇的建设
- android 软引用intent对象,Android中的软引用(SoftRefrerence)和弱引用(WeakReference)
- 招投标过程---投标之述标 大杂烩
- 计算机统计模式的符号,科学计算器的统计的符号有哪些?
- Cannot cast ch.qos.logback.classic.servlet.LogbackServletContainerInitializer to javax.servlet.Servl
- SQL查询重复数据和清除重复数据