当前位置:首页 > 数据库 > shell脚本,对MySQL数据库进行分库加分表备份

shell脚本,对MySQL数据库进行分库加分表备份

2022年11月07日 08:28:23数据库14
[root@localhost wyb]# cat table_backup.sh 
#!/bin/bash

flag=0
user=root
pass=test

mysql -u$user -p"$pass" -e "show databases;" &>/dev/null
[ $? -ne 0  ] && read -p "Mysql do not running,start it?(`echo -e "\033[32myes/no\033[0m"`):" choice && flag=1
[[ "choice" -eq "yes" ]] && service mysqld start &>/dev/null && flag=0
[ $flag -eq 1 ] && exit 2
database=`mysql -u$user -p$pass  -e "show databases;"|sed 1d|grep -v 'schema'`

echo -e "\033[32m==================backup start=====================\033[0m"
for i in $database
do
  tables=`mysql -u$user -p"$pass" -e "use $i;show tables;"|sed 1d`
  for j in $tables
  do
    mysqldump -u$user -p"$pass"   -B --databases $i --tables $j > /tmp/${i}-${j}-`date +%F`.sql
   [ $? -eq 0 ] && echo $i $j ok >>/tmp/table.log||echo $i $j failed >>/tmp/table.log
   [ $? -eq 0 ] && echo -e "$i $j \033[32mok\033[0m" ||echo -e "$i $j \033[31mfailed\033[0m"
  done

done
echo -e "\033[32m===================backup stop=======================\033[0m"
[root@localhost wyb]# bash table_backup.sh 
==================backup start=====================
mysql columns_priv ok
mysql db ok
mysql func ok
mysql help_category ok
mysql help_keyword ok
mysql help_relation ok
mysql help_topic ok
mysql host ok
mysql proc ok
mysql procs_priv ok
mysql tables_priv ok
mysql time_zone ok
mysql time_zone_leap_second ok
mysql time_zone_name ok
mysql time_zone_transition ok
mysql time_zone_transition_type ok
mysql user ok
===================backup stop=======================
[root@localhost wyb]# cd tmp
-bash: cd: tmp: No such file or directory
[root@localhost wyb]# cd /tmp
[root@localhost tmp]# ls
a.log                              mysql-help_category-2016-09-07.sql  mysql-tables_priv-2016-09-07.sql                table.log
dashazi123.sh                      mysql-help_keyword-2016-09-07.sql   mysql-time_zone-2016-09-07.sql                  VMwareDnD
keyring-cmzNiY                     mysql-help_relation-2016-09-07.sql  mysql-time_zone_leap_second-2016-09-07.sql      vmware-root
mapping-root                       mysql-help_topic-2016-09-07.sql     mysql-time_zone_name-2016-09-07.sql             vmware-root-1723735141
mysql-columns_priv-2016-09-07.sql  mysql-host-2016-09-07.sql           mysql-time_zone_transition-2016-09-07.sql       VMwareTools-9.6.2-1688356.tar.gz
mysql-db-2016-09-07.sql            mysql-proc-2016-09-07.sql           mysql-time_zone_transition_type-2016-09-07.sql  vmware-tools-distrib
mysql-func-2016-09-07.sql          mysql-procs_priv-2016-09-07.sql     mysql-user-2016-09-07.sql
[root@localhost tmp]# ls mysql*
mysql-columns_priv-2016-09-07.sql   mysql-help_topic-2016-09-07.sql   mysql-time_zone_leap_second-2016-09-07.sql
mysql-db-2016-09-07.sql             mysql-host-2016-09-07.sql         mysql-time_zone_name-2016-09-07.sql
mysql-func-2016-09-07.sql           mysql-proc-2016-09-07.sql         mysql-time_zone_transition-2016-09-07.sql
mysql-help_category-2016-09-07.sql  mysql-procs_priv-2016-09-07.sql   mysql-time_zone_transition_type-2016-09-07.sql
mysql-help_keyword-2016-09-07.sql   mysql-tables_priv-2016-09-07.sql  mysql-user-2016-09-07.sql
mysql-help_relation-2016-09-07.sql  mysql-time_zone-2016-09-07.sql
[root@localhost tmp]# cat table.log 
mysql columns_priv ok
mysql db ok
mysql func ok
mysql help_category ok
mysql help_keyword ok
mysql help_relation ok
mysql help_topic ok
mysql host ok
mysql proc ok
mysql procs_priv ok
mysql tables_priv ok
mysql time_zone ok
mysql time_zone_leap_second ok
mysql time_zone_name ok
mysql time_zone_transition ok
mysql time_zone_transition_type ok
mysql user ok
[root@localhost tmp]# 

 

来源链接:https://www.cnblogs.com/wangyuebo/p/5847792.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/68284.html

分享给朋友:

“shell脚本,对MySQL数据库进行分库加分表备份” 的相关文章

MySQL触发器

MySQL触发器 触发器是一种特殊的存储过程,触发器和存储过程一样是一个能完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用. 在MySQL中,只...

MySQL面试有这一篇就够了

MySQL面试有这一篇就够了

MySQL面试常见知识点 1、 MySQL常用的存储引擎有什么?它们有什么区别? InnoDB InnoDB是MySQL的默认存储引擎,支持事务、行锁和外键等操作。 MyISAM MyISAM是M...

MySQL查询JSON类型字段中某个属性值

MySQL查询JSON类型字段中某个属性值

只支持MySQL5.7以上的版本 user表中有如下数据: id profile 1 {“age”: 20, “name”: “...

mysql 查询操作日志

最近在操作mysql的过程中,因某些愿意需要查看mysql的日志,故总结如下: 要查看日志,首先需要查看日志是否开启, 使用一下语句: SHOW VARIABLES LIKE 'log_bin'; 如果显示ON,则表示日志已...

MySql 查询两张表的数据差别

select * from tb_a A where A.ID NOT IN(select B.ID from tb_b B ); select * from tb_a A where NOT EXISTS (select 1 from...

Mysql查询用户最后一次登陆时间

Mysql查询用户最后一次登陆时间

类似的问题还有,学生得分最高的课程 数据库如下: 第一种方案: SELECT sid,max(add_time) from test GROUP BY sid 第二种方案 S...

MYSQL查询大于某个时间的数据

今天: SELECT * FROM 表名 WHERE TO_DAYS( 时间字段名) = TO_DAYS(NOW()); 昨天: SELECT * FROM...

关于mysql数据库连接异常处理

tomcat启动错误日志关键信息: 28-Aug-2019 14:22:55.014 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerB...

mysql查询结果保留2位小数不够补0

SELECT ROUND(15.60,2);#15.6 SELECT ROUND(15.60/3,2);#5.2 SELECT CAST(15.60 / 3 AS decimal(18,2));#5.20 作者:阿磊_kb 来源...

Mysql查询数据时,自动为结果编上序号

Mysql查询数据时,自动为结果编上序号

说明: select @变量名 是定义变量名的方式 select @i:=1     在开始是定义一个变量i,并且递增, 使用select语句对用户变量进行赋值时,只能使用”:=”方式 每次执行查询语句获取结果后需要重置为0,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。