分库备份+分库恢复

由于一台mysql数据库服务器上有多个数据库,所以在考虑备份的时候也将多个库分开进行,以便在单个库出现问题时恢复。

一、分库备份

1、可以一个库对应一条备份语句,如:

mysqldump -S /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -F -B db1 |gzip > /home/mysql/bakup/db1.sql.gz
mysqldump -S /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -F -B db2 |gzip > /home/mysql/bakup/db2.sql.gz
......

2、一条语句分开

for DBNAME in `mysql -uroot -p123456  -e "show databases;"|grep -Evi database|infor|perfor"`
do
mysqldump -S /home/mysql/run/mysql.socket -uroot -p123456 --single-transaction --master-data=2 -F -B $DBNAME |gzip > /home/mysql/bakup/$DBNAME.sql.gz
done

二、分库恢复

1、所有库恢复时

<pre name="code" class="html">gzip -d /home/mysql/bakup/*.gz
for DBNAME in `ls /homoe/mysql/bakup |sed 's#.sql##g'`
do
mysql -uroot -p123456 < /home/mysql/bakup/$DBNAME.sql
done
 

2、从备份恢复指定库时,指定相应的备份文件即可

gzip -d /home/mysql/bakup/db1.sql.gz
mysql -uroot -p123456 < /home/mysql/bakup/db1.sql
但是二进制日志是记录所有库的操作,所以要指定相应库的恢复,使用mysqlbinlog的-d参数指定要恢复的数据库,即可增量恢复指定库

mysqlbinlog -d db1 /home/mysql/data/mysql.bin-000045 |mysql -S /home/mysql/run/mysql.socket -uroot -p123456
说明:socket文件不是默认位置,所以所有命令需要添加-S参数,但mysql例外,已经在.bashrc中添加alias mysql='mysql -S /home/mysql/run/mysql.socket'

当然其他命令也可以添加。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上海阿丽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值