首页 > 数据库 >MySQL异常断电恢复脚本

MySQL异常断电恢复脚本

时间:2023-09-12 19:14:17浏览次数:43  
标签:脚本 MySQL echo 断电 exit file mysql fi else

#!/bin/bash

user="root"
host="127.0.0.1"
passwd="password"
conf_file="/etc/mysql/mysql.conf.d/mysqld.cnf"
backup_file="/home/ehigh/DB.sql"
data_dir="/var/lib/mysql"

if [ $(id -u) -ne 0 ];then
    echo "需要root用户执行"
    exit 1
fi

# Force recovery
echo "innodb_force_recovery=6" >> ${conf_file}
if systemctl restart mysql.service &> /dev/null ;then
    echo "在强制恢复模式下启动"
else
    echo "启动失败";exit 1
fi

# Backup
mysqldump -u${user} -p${passwd} -A -F --single-transaction --flush-privileges --default-character-set=utf8 --hex-blob > ${backup_file}

echo "数据备份完成";

# Remove the force recovery option
sed -i '/innodb_force_recovery=6/d' ${conf_file}

if systemctl stop mysql.service &> /dev/null ; then
    echo "mysql 停止成功"
else
    kill -9 $(pidof mysqld)
fi


mv ${data_dir} ${data_dir}-bak-$(date +"%F_%T")
mkdir ${data_dir}
chown mysql:mysql ${data_dir}

if [ -d ${data_dir} ];then
    echo "数据目录已重命名,新的数据目录已创建"
else
    echo "创建数据目录失败";exit 1
fi 


if mysqld --initialize-insecure ;then
    echo "Mysql 初始化成功";
else
    echo "MySQL初始化失败";exit 1
fi


if systemctl restart mysql &> /dev/null ;then
    echo "mysql 重启成功";
else
    echo "mysql 重启失败";exit 1
fi

if [ ! -s ${backup_file} ]; then
    echo "备份文件为空";exit 1
fi

if mysql -uroot  < ${backup_file} ;then
    echo "Mysql 数据恢复成功";
else
    echo "Mysql 数据恢复失败";exit 1
fi

# Restart MySQL
if systemctl restart mysql.service  &> /dev/null ; then
    echo "mysql数据恢复后重启成功"
else
    echo “mysql 数据恢复后重启失败”
fi

标签:脚本,MySQL,echo,断电,exit,file,mysql,fi,else
From: https://www.cnblogs.com/heyongshen/p/17697554.html

相关文章

  • MySQL-分区表和分区介绍
    一、MySQL分区简介1、数据库分区数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是透明的。MYSQL的分区主要有两种形式:水平分区和垂直分区①、水平......
  • java中Mysql Insert 的高效应用
    在Java中,使用MySQL进行高效的插入操作可以采取以下几种方法:1.使用批量插入:通过使用批量插入语句,可以一次性插入多条数据,减少与数据库的交互次数,提高插入效率。可以使用JDBC的`addBatch()`方法将多个插入语句添加到批处理中,然后使用`executeBatch()`方法执行批处理。2.使用预编译......
  • MySQL 8.0.30 新新特性 不可见主键
    MySQL8.0.30引入了“生成的不可见主键”(GIPK)功能。本博客介绍了此功能,讨论了其局限性和限制,并描述了备份和恢复操作如何使用此功能。让我们开始吧!背景InnoDB存储引擎包含一个称为隐式主键的内部功能。此功能会在生成的名为DB_ROW_ID的列上自动生成名为GEN_CLUST_index的隐藏聚集索......
  • mysql
    一、逻辑架构1.1系统架构图Connectors:指的是不同语言中与SQL的交互ConnectionPool:管理缓冲用户连接,线程处理等需要缓存的需求。负责监听对MySQLServer的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上MySQLServer的客户端请求都会被分配(或创......
  • ArrayList/MySQL数据批量写入Excel表格
    ArrayList/MySQL数据集合写入Excel1.文章概述:写入Excel文件通常需要使用一些库或工具,而"EasyExcel"通常是指的阿里巴巴开源的EasyExcel库。这个库可以让我们在Java中简便地进行Excel文件的读写操作。2.导入配置:<dependency><groupId>com.alibaba</group......
  • MySQL篇:第二章_初识MySQL
    初始MySQLMySQL的背景1、前身属于瑞典的一家公司,MySQLAB2、08年被sun公司收购3、09年sun被oracle收购MySQL的优点1、开源、免费、成本低2、性能高、移植性也好3、体积小,便于安装数据库的好处​ 1、持久化数据到本地​ 2、可以实现结构化查询,方便管理​数据库相关概......
  • 21分钟MySQL基础入门
    MySQL 及快速的方式入门 MySQL。其实21分钟把下面语句之行一遍是没有问题的,要理解的话估计不止21分钟,对于初学者来说只需满足自己需求可以增删改查等简易的维护即可。目录开始使用登录MySQL创建数据库创建数据库表增删改查SELECTUPDATEINSERTDELETEWHEREAND和ORANDORORDERBYI......
  • N天爆肝数据库——MySQL(1)
    (N天爆肝数据库——MySQL(1))链接:link这是csdn专栏链接,大家可以看一看,提提意见数据库概念理解==数据库DB存储数据的仓库数据库管理系统DBMS操纵和管理数据库的大型软件==SQL操作关系型数据库的编程语言,定义了用一套操作关系型数据库同意标准学习SQL的作用SQL是一门......
  • 如何把Mysql注册为Windows服务
    我们在使用Mysql的时候,经常需要在命令行中开启mysql。如果把mysql做成服务的话会方便很多,下面小编就给大家分享一下如何把Mysql注册为Windows服务。操作方法01首先在cmd命令行中通过cd命令进入mysql的bin目录,这个目录下面有要使用的注册服务的命令,如下图所示02然后通......
  • mysql case when
    当使用MySQL进行查询时,可以使用CASE表达式来根据条件对结果进行分支处理。CASE表达式在SELECT语句中非常有用,可以根据不同的条件返回不同的值。在本文中,我们将介绍如何使用CASE表达式进行条件分支查询。假设我们有一个名为 transactions 的表,其中包含以下字段:tx_id、t......