要命的Shell之MySQL数据库

本文详细介绍MySQL数据库的分库、分表备份策略,包括批量创建数据库、表,以及数据插入和查看的脚本。同时,提供了MySQL主从复制状态监控脚本,确保数据同步正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MySQL数据可分库备份

分析:1、建库      2、备份

在命令行上通过以下命令创建数据库,socket可以省略

mysql -uroot -pcentos -S /var/lib/mysql/mysql.sock -e "create database wu;"

批量创建MySQL数据库的脚本如下:

#!/bin/bash
PATH="/usr/bin:$PATH"

User=root
Passwd=centos
Socket=/var/lib/mysql/mysql.sock

Mycmd="mysql -u$User -p$Passwd -S $Socket"

for dbname in yi yang qian xi;do
    $Mycmd -e "create database $dbname;"
done

在命令行通过以下命令备份数据库:

mysqldump -uroot -pcentos -S /var/lib/mysql/mysql.sock yi | gzip > /data/shell/mysql/yi_$(date +%F).sql.gz
#!/bin/bash
PATH="/usr/bin:$PATH"
Dbpath=/data/shell/mysql/back

User=root
Passwd=centos
Socket=/var/lib/mysql/mysql.sock

Mycmd="mysql -u$User -p$Passwd -S $Socket"
Mydump="mysqldump -u$User -p$Passwd -S $Socket"

[ ! -d "$Dbpath" ] && mkdir -pv $Dbpath

for dbname in `$Mycmd -e "show databases;" | sed '1,2d' | egrep -v "mysql|performance_schema"`;do
  $Mydump $dbname | gzip >$Dbpath/${dbname}_$(date +%F).sql.gz
done

二、MySQL数据库分库分表备份

要求:请用脚本实现对MySQL数据库的分库加分表备份

准备测试的数据:通过写脚本批量建表并插入数据并批量查看数据:

#!/bin/bash
PATH="/usr/bin:$PATH"

User=root
Passwd=centos
Socket=/var/lib/mysql/mysql.sock
Mycmd="mysql -u$User -p$Passwd -S $Socket"

for dbname in yi yang qian xi ;do
  $Mycmd -e "use $dbname;create table test(id int,name varchar(16));insert into test values(1,'testdata');"

  echo ===============dbtest========================
  $Mycmd -e "use $dbname;select * from ${dbname}.test;"
done     

对数据库进行分表备份:

#!/bin/bash

PATH="/usr/bin:$PATH"
Dbpath=/data/shell/mysql/table_back

User=root
Passwd=centos
Socket=/var/lib/mysql/mysql.sock

Mycmd="mysql -u$User -p$Passwd -S $Socket"
Mydump="mysqldump -u$User -p$Passwd -S $Socket"
[ ! -d $Dbpath ] && mkdir -pv $Dbpath

for dbname in `$Mycmd -e "show databases;" | sed 1,2d | egrep -v "mysql|performance_schema"` ;do
  
  #创建对应目录
  mkdir $Dbpath/${dbname}_$(date +%F) -p

  #内层循环,获取每个库里面的所有表,然后进入循环
  for table in `$Mycmd -e "show tables from $dbname;"|sed '1d'`;do

  #备份指定的库内的表到指定目录下,并以库表名字命名备份的名字
  $Mydump $dbname $table | gzip > $Dbpath/${dbname}_$(date +%F)/${dbname}_${table}.sql.gz
  done
done

三、MySQL主从复制异常监控

要求:开发一个守护进程脚本,每30秒监控一次MySQL主从复制是否异常(包括不同步及延迟),如果异常,则发送短信并发送邮件给管理员存档

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值