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. 统计学第十二周,第十三周

    知识点:回归分析 本周是统计学学习小组-第二期的第十二周,我们这周的学习内容是[回归分析],涉及到的二级知识点有两个,分别是: 1.一元线性回归:相关关系.最小二乘法.拟合优度检测.显著性检验.回归预 ...

  2. 20145240《信息安全系统设计基础》第十二周学习总结

    20145240<信息安全系统设计基础>第十二周学习总结 前三周博客链接 第九周学习总结 第十周学习总结 第十一周学习总结 视频学习内容总结 指针数组与数组指针 数组指针(也称行指针) 定 ...

  3. 20145206 《信息安全系统设计基础》第十二周学习总结

    20145206 <信息安全系统设计基础>第十二周学习总结 本周学习目标 1.第九周代码检查 2.第十周代码检查 3.第十一周代码检查 博客链接 20145206 <信息安全系统设计 ...

  4. 2019春第十二周作业

    作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函数返 ...

  5. 2019春第十二周 编程总结

    一.作业头内容 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 C语言作业评价标准 我在这个课程的目标是 学习二级指针的概念:掌握指针数组的应用方法:理解指针与函数的关系,学习指针作为函 ...

  6. 左耳听风 第四十二周

    左耳听风 第四十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...

  7. linux按照学号对文件进行排序,学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周...

    一.题目要求 实现Linux下Sort -t : -k 2的功能 二.题目理解 -t 分隔符,将每一行数据按照该选项指定的分隔符分成多个域.默认情况下是使用tab键或者空格符来分割的. -k 指定用哪 ...

  8. Hubble Zhang的学习日记(第十二周)

    为了督促自己每天都有进步,在这里记录下每天遇到的问题和学到的新知识,仅作为个人回顾使用. 目录 日记(第十二周) 20201130 20201201 20201202 日记(第十二周) 2020113 ...

  9. 20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十二周作业 服务 Service的声明 Service是Android中的四大组件,使用它一定要在AndroidManifest.x ...

最新文章

  1. Kotlin一大特色之空安全
  2. bootstrap30-辅助类展示不同的背景颜色
  3. spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)
  4. 20155213 2016-2017-2《Java程序设计》课程总结
  5. KlayGE C++代码风格指南英文版
  6. 怎么颈椎和秃头都扯上我,程序员:我太难了…
  7. Struts2配置国际化文件
  8. LNMP架构数据迁移到NFS存储
  9. vs2013制作滚屏软件
  10. GNS3新手安装教程
  11. 无法复制文件到远程桌面的解决办法
  12. python爬取ZOL高清壁纸
  13. web-天下武功唯快不破
  14. android 从app跳转到微信小程序和微信没有设置浮动权限 打不开小程序
  15. RTMP推流摄像机联合EasyCVR安防视频云服务平台助力智能楼宇的建设
  16. android 软引用intent对象,Android中的软引用(SoftRefrerence)和弱引用(WeakReference)
  17. 招投标过程---投标之述标 大杂烩
  18. 计算机统计模式的符号,科学计算器的统计的符号有哪些?
  19. Cannot cast ch.qos.logback.classic.servlet.LogbackServletContainerInitializer to javax.servlet.Servl
  20. SQL查询重复数据和清除重复数据

热门文章

  1. [NodeJS] Hello World 起步教程
  2. PLSQL Developer 特点
  3. 资料管理工具VSGoogle?
  4. HDU2148 Score【序列处理】
  5. LeetCode 堆栈队列 —— 括号匹配(20、232、155)
  6. 音译 —— 本身的含义
  7. 公司(企业与市场)与商业模式
  8. 无处不在的黄金分割比
  9. matlab 文本处理
  10. 强悍的 Linux —— 常用 shell