mysql备份之mysqldump

我们知道mysql的容灾策略常见的有以下几种:

1、设置mysql的主从备份,主服务器用于对外提供数据服务,从服务只用与同步主服务器的数据,当主服务器挂了,磁盘坏道或者故障,从服务器可以接替主服务器继续进行工作。(当然我们可以设置主主:即两台都可以做主服务器都可以写,同时备份各自的数据)

2、利用mysql自带的工具mysqldump备份,你可以备份单个表,有选择的备份多个表,也可以备份全库,他的速度要比直接用navicat转载成sql文件要快很多,一般我的做法是每日备份核心表,每周备份全库

3、开启mysqlbinlog记录,记录数据库实时更新操作,当数据库被误删或者数据表误删除或者误修改可以从上一个全量备份利用日志进行恢复。


今天主要讲一下mysqldump的定时备份策略:

#!/bin/bash

pwd=Hb118114
time=$(date '+%Y-%m-%d')
oldtime=`date -d '1 days ago' +%Y-%m-%d`

account=root
	
	/bin/mkdir -p /data/zhangfusheng/$time

rm -rf /data/zhangfusheng/$time/*

oldtime=`date -d '1 days ago' +%Y-%m-%d`
rm -rf /data/zhangfusheng/$oldtime
echo $(date '+%Y-%m-%d  %T') "删除文件夹$oldtime成功!" >>/data/MySQLBackup.log; 
echo $(date '+%Y-%m-%d  %T') "$dateTime 创建当前日期文件夹成功!" >>/data/MySQLBackup.log; 
echo $(date '+%Y-%m-%d  %T') "$dateTime Database:$databases backup starting!" >>/data/MySQLBackup.log; 

#########进行db数据导出



	
	
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp > /data/zhangfusheng/$time/t_work_wp.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_error_mobile > /data/zhangfusheng/$time/t_work_wp_error_mobile.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_failure > /data/zhangfusheng/$time/t_work_wp_failure.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_log > /data/zhangfusheng/$time/t_work_wp_log.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_modify > /data/zhangfusheng/$time/t_work_wp_modify.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_name > /data/zhangfusheng/$time/t_work_wp_name.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_name_equal_tel > /data/zhangfusheng/$time/t_work_wp_name_equal_tel.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_null > /data/zhangfusheng/$time/t_work_wp_null.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_people_name > /data/zhangfusheng/$time/t_work_wp_people_name.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_people_name2 > /data/zhangfusheng/$time/t_work_wp_people_name2.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_status > /data/zhangfusheng/$time/t_work_wp_status.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_status2 > /data/zhangfusheng/$time/t_work_wp_status2.sql;
	mysqldump -u$account -p$pwd db_ndc_2 t_work_wp_update > /data/zhangfusheng/$time/t_work_wp_update.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_addr_ext > /data/zhangfusheng/$time/tb_addr_ext.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_address > /data/zhangfusheng/$time/tb_address.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_class_hymap > /data/zhangfusheng/$time/tb_class_hymap.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_class > /data/zhangfusheng/$time/tb_cust_class.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_group > /data/zhangfusheng/$time/tb_cust_group.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_history > /data/zhangfusheng/$time/tb_cust_history.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_keyword > /data/zhangfusheng/$time/tb_cust_keyword.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_tel > /data/zhangfusheng/$time/tb_cust_tel.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_cust_tel_source > /data/zhangfusheng/$time/tb_cust_tel_source.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_customer > /data/zhangfusheng/$time/tb_customer.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_customer_depth > /data/zhangfusheng/$time/tb_customer_depth.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_group > /data/zhangfusheng/$time/tb_group.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_group_ext > /data/zhangfusheng/$time/tb_group_ext.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_group_history > /data/zhangfusheng/$time/tb_group_history.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_keyword > /data/zhangfusheng/$time/tb_keyword.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_name > /data/zhangfusheng/$time/tb_name.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_name_ext > /data/zhangfusheng/$time/tb_name_ext.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_name_ext_bak > /data/zhangfusheng/$time/tb_name_ext_bak.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_region > /data/zhangfusheng/$time/tb_region.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_source > /data/zhangfusheng/$time/tb_source.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_tel_ext > /data/zhangfusheng/$time/tb_tel_ext.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tb_telephone > /data/zhangfusheng/$time/tb_telephone.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tem_hot_cust > /data/zhangfusheng/$time/tem_hot_cust.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tf_enterprise > /data/zhangfusheng/$time/tf_enterprise.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tf_enterprise_address > /data/zhangfusheng/$time/tf_enterprise_address.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tf_enterprise_image > /data/zhangfusheng/$time/tf_enterprise_image.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tf_enterprise_image_del_0724 > /data/zhangfusheng/$time/tf_enterprise_image_del_0724.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tf_enterprise_tel > /data/zhangfusheng/$time/tf_enterprise_tel.sql;
	mysqldump -u$account -p$pwd db_ndc_2 tg_sp_wp > /data/zhangfusheng/$time/tg_sp_wp.sql;
	

#########压缩打包


#########传输数据



我们按照以上策略,梳理出数据库中的核心表,逐个表进行mysqldump备份,每天定时备份到当天按时间命名的文件夹中
备份好了之后我们要做的就是压缩转移到安全位置
以下是shell代码:
#!/bin/bash

pwd=Hb118114
time=$(date '+%Y-%m-%d')
oldtime=`date -d '1 days ago' +%Y-%m-%d`

account=root




echo $(date '+%Y-%m-%d  %T') "$dateTime Database:$databases backup have complete,now we need to compress !" >>/data/MySQLBackup.log; 



#########压缩打包
cd /data/zhangfusheng/$time;
tar -zcvf $time.tar.gz ./*
echo $(date '+%Y-%m-%d  %T') "$dateTime 压缩当前日期文件夹成功!" >>/data/MySQLBackup.log; 
echo $(date '+%Y-%m-%d  %T') "$dateTime Database:$databases backup success!" >>/data/MySQLBackup.log; 


#########传输数据
scp -C $time.tar.gz root@10.100.5.5:/data/zhangfusheng/db_ndc_2;


当我们每天进行一次打包放到指定机器目录下后,我再要做的是删除历史数据,比如我们要保留最近一个月的数据,之前的历史数据我们就可以直接清理掉了
不然磁盘长期这样会被撑爆掉
以下是shell代码:
#!/bin/bash

	
cd /usr/local/mysql/zhangfusheng/db_ndc_2


#########娓呴櫎7澶╁墠鏁版嵁
oldtime=`date -d '30 days ago' +%Y-%m-%d`;
rm -rf /usr/local/mysql/zhangfusheng/db_ndc_2/$oldtime.tar.gz;


echo $(date '+%Y-%m-%d  %T') "删除文件$oldtime.tar.gz成功!" >>/data/MySQLBackup.log 

以下是我的crontab -l 信息总的有两台机器
第一台机器就是mysql数据库服务器
01 00 * * * /home/mysql_dmp.sh  >>/home/crontab_log/crontab_run.log 2>&1
50 21 * * * sh /data/mysqldump0.sh
30 22 * * * sh /data/mysqldump1.sh
00 23 * * * sh /data/mysqldump2.sh
59 23 * * * sh /data/mysqldump3.sh
59 00 * * * sh /data/mysqlbinlogdelete.sh
第二台机器就是存放mysql数据库备份记录的机器
50 23 * * * sh /data/delete30daysago.sh


下面给一个mysqldump的文件,如何进行数据库恢复操作
要进行恢复我们要进行以下三个操作
1、解压我们上面备份后的压缩文件
2、找到我们要恢复的表cope到数据库服务器上
3、命令行 mysql -uroot -p登录数据库用source 命令来恢复
示例代码如下:
#!/bin/bash
#####定义变量
v_user="root"
v_password="123456"
v_date=`date -d today +%Y-%m-%d`
v_dir=/data/
v_dir1=/data/newdump
db="bd_yp"

#####解压当天的压缩文件

##find /data/mysql-dump -depth -mtime +7 -exec rm -rf {} \
##rm -rf /data/newdump/*

cd $v_dir
###tar -zxvf $v_date.tar.gz -C $v_dir1
########

mysql -u$v_user -p$v_password  <
     
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值