# cat my_full_backup.sh
#!/bin/bash
BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
week=`date +%w`
port=3306
ip=192.168.1.101
backdir=/tmp/xtrabackup
file_cnf=/app/mysqldata/3306/my.cnf
user_name=xtrabk
password=onlybackup
out_log=$backdir/Xtrabackup_log_$format_time
time_cost=$backdir/Xtrabackup_time.txt
mysql_path=/usr/bin mkdir -p $backdir #full
if [ ! -d "$backdir/full" ];then
echo "#####start full backup at $BEGINTIME to directory full" >>$time_cost
${mysql_path}/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel=4 --throttle=200 --kill-long-queries-timeout=300 --kill-long-query-type=select --user=$user_name --password=$password --host=$ip --port=$port $backdir/full 1> $out_log 2>&1
fi
ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
begin_data=`date -d "$BEGINTIME" +%s`
end_data=`date -d "$ENDTIME" +%s`
spendtime=`expr $end_data - $begin_data`
echo "it takes $spendtime sec for packing the data directory" >>$time_cost
# cat my_full_recover_slave.sh
#NOTE:恢复开始前请确保mysql服务停止以及数据和日志目录清空,如
rm -rf /app/mysqldata/3306/data/*
rm -rf /app/mysqldata/3306/binlog/*
rm -rf /app/mysqldata/3306/redolog/*
rm -rf /app/mysqldata/3306/tmp/*
rm -rf /app/mysqldata/3306/undolog/*
#rm -rf /app/mysqldata/3306/error.log /app/mysqldata/3306/slow-queries.log INNOBACKUPEX=innobackupex
INNOBACKUPEX_PATH=/usr/bin/$INNOBACKUPEX
TMP_LOG="/tmp/restore.$$.log"
MY_CNF=/etc/my.cnf
BACKUP_DIR=/tmp/xtrabackup # 你的备份主目录
FULLBACKUP_DIR=$BACKUP_DIR/full # 全库备份的目录
MEMORY=2048M # 还原的时候使用的内存限制数
ERRORLOG=`grep -i "^log_error" $MY_CNF |cut -d = -f 2`
SLOWLOG=`grep -i "^slow_query_log_file" $MY_CNF |cut -d = -f 2`
MYSQLD_SAFE=/usr/local/mysql/bin/mysqld_safe
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_PORT=3306
SOCK_FILE=/app/mysqldata/3306/mysql.sock
MASTER_DB_IP=192.168.1.101
MASTER_DB_PORT=3306
master_user=xtrabk
master_password=onlybackup check_innobackupex_fail()
{
if [ -z "`tail -2 $TMP_LOG | grep 'completed OK!'`" ] ; then
echo "$INNOBACKUPEX命令执行失败:"; echo
echo "---------- $INNOBACKUPEX的错误输出 ----------"
cat $TMP_LOG
#保留一份备份的详细日志
logfiledate=restore.`date +%Y%m%d%H%M`.txt
cat $TMP_LOG>/tmp/$logfiledate
rm -f $TMP_LOG
exit 1
fi
} echo "*****************************"
echo "Prepare:使用完整备份进行恢复..........."
echo "*****************************"
$INNOBACKUPEX_PATH --defaults-file=$MY_CNF --apply-log --redo-only --use-memory=$MEMORY $FULLBACKUP_DIR > $TMP_LOG 2>&1
check_innobackupex_fail echo "*****************************"
echo "Copyback:数据库还原中 ...请稍等"
echo "*****************************"
$INNOBACKUPEX_PATH --defaults-file=$MY_CNF --copy-back $FULLBACKUP_DIR > $TMP_LOG 2>&1
chown -R mysql:mysql /app/mysqldata/3306
check_innobackupex_fail rm -f $TMP_LOG
echo "1.恭喜,还原成功!."
echo "*****************************"

touch $ERRORLOG
touch $SLOWLOG
chown mysql:mysql $ERRORLOG
chown mysql:mysql $SLOWLOG #自动启动mysql
INIT_NUM=1
if [ ! -x $MYSQLD_SAFE ]; then
echo "mysql安装时启动文件未安装到$MYSQLD_SAFE或无执行权限"
exit 1 #0是执行成功,1是执行不成功
else
echo "启动本机mysql端口为:$MYSQL_PORT的服务"
$MYSQLD_SAFE --defaults-file=$MY_CNF > /dev/null &
while [ $INIT_NUM -le 10 ]
do
PORTNUM=`netstat -lnt|grep ${MYSQL_PORT}|wc -l`
echo "mysql启动中....请稍等..."
sleep 10
if [ $PORTNUM = 1 ];
then
echo -e "\e[32m mysql****启动成功**** \e[m" GTID_PURGED=`cat $FULLBACKUP_DIR/xtrabackup_binlog_info | awk '{print $3}'`
SQL1="reset master;SET @@GLOBAL.GTID_PURGED='$GTID_PURGED';"
SQL2="change master to master_host='$MASTER_DB_IP',master_port=$MASTER_DB_PORT,master_user='$master_user',master_password='$master_password',master_auto_position=1;"
SQL3="set global read_only=on;set global super_read_only=on;"
SQL4="start slave;" $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL1"
$MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL2"
$MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL3"
$MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "$SQL4"
sleep 2 $MYSQL -uroot -pmsds007 -S $SOCK_FILE -e "show slave status\G"
echo -e "\e[32m mysql 从库配置成功 \e[m"
exit 0
fi
INIT_NUM=$(($INIT_NUM +1))
done
echo -e "\e[31m mysql启动失败或启动时间过长,请检查错误日志 `echo 'cat ' ${ERRORLOG}` \e[m"
echo "*****************************************"
exit 0
fi exit 0

Linux7_MySQL5.7_主从复制_scripts的更多相关文章

  1. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  2. [原]Redis主从复制各种环境下测试

    Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 C ...

  3. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  4. Redis主从复制

    大家可以先看这篇文章ASP.NET Redis 开发对Redis有个初步的了解 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此 ...

  5. MySQL主从复制(Master-Slave)实践

    MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...

  6. 2.快速部署MySQL主从复制

      1.快速部署MySQL主从复制 [root@mysql ~]# mysql -uroot -p123456 -S /data/3307/mysql.sock -e "show slave ...

  7. MySQL 主从复制

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  8. MySQL 主从复制与读写分离概念及架构分析

    1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...

  9. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建

    Mongodb数据库主从复制的搭建 Writeby:lipeng                                    date:2014-10-22 最近项目上用到了位置查询,在网上 ...

随机推荐

  1. Manjaro XFCE 设置分辨率1920*1080

    #查看系统显示器名称 xrandr #自定义cvt 1920 1080 #设置分辨率xrandr --newmode "1920x1080_60.00" 173.00 1920 2 ...

  2. django基础教程(一)

    Django是一个开源的网站框架,mvc模式.提供了开发网站经常用的模块 优势:1.数据库 2.用正则匹配网址,传到对应的函数 3.后台 4.模板系统,与样式分开 5,缓存 Diango的组成:1.u ...

  3. SRS之SrsHlsCache::reap_segment详解

    1. 是否可切片的检测 首先在调用 SrsHlsCache::reap_segment 函数进行切片时,针对音频或视频,都会有一个函数来进行检测当前片的时长是否符合所要求的时长. 对于音频,会调用 S ...

  4. LeetCode 112. 路径总和(Path Sum)

    题目描述 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum ...

  5. Android : 供应商原生开发套件 (VNDK)

    一.VNDK概述 VNDK(Vendor Native Development Kit)是一组专门用于vendor实现其HAL的lib库,因为自Android 8.0以来,Google引入了Trebl ...

  6. mybatis之动态SQL操作之更新

    1)  更新条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层*/ public class StudentDao { /** * 动态SQL--更新 */ public ...

  7. Aria2Gee 教程

    改定履历 Aria2Gee是什么 开始之前 aria2 frp Aria2Gee可能存在的问题 初级教程 插件的安装 运行状态说明 下载测试 进阶教程 下载百度网盘文件 网盘助手的安装 网盘助手的配置 ...

  8. shell脚本:统计分析 /home/ 目录用户磁盘使用情况

    一.统计单台机器 /home/ 目录下磁盘空间使用 top3 的用户 common.sh 脚本用于统计 /home/* 目录下存储空间 top3 的用户. du -sb /home/* |sort - ...

  9. mysql 严重锁表解决方案

    转自 http://blog.csdn.net/miltonzhong/article/details/20562587 http://wangwei3.iteye.com/blog/784435

  10. Angular05 angular架构、搭建angular开发环境、组件必备三要素、angular启动过程

    1 angular架构 1.1 组件:是angular应用的基本构建模块,可以理解为一段带有业务逻辑和数据的HTML 1.2 服务:用来封装可重用的业务逻辑 1.3 指令:允许你想HTML元素添加自定 ...