mysql各种备份

备份/还远

冷备:需要停止当前正在运行mysqld,然后直接拷贝或打包数据文件

半热备:mysqldump+binlog    -----适合数据量比较小的应用

在线热备份:AB复制

第一种冷备(物理备份)

1. 停掉mysql服务器

2.拷贝数据

cd /data

tar cjvf /tmp/mysql_bak.tar.gz ./

第二种逻辑备份mysqldump(mysqld必须是运行着,不需要停掉mysql服务,但需要锁表):

逻辑备份=表结构+数据插入

  mysqldump

          1.备份一张或多张表

          2.备份一个或多个库

          3.备份所有库

Usage: mysqldump [OPTIONS] database [tables]

OR      mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3....]

OR      mysqldump [options] --all-databases [OPTIONS]

 

# mysqldump -uroot -p132 test t1 t2 > /tmp/t1.sql --备份单个或多个表

# mysql -uroot -p123 test > /tmp/t1.sql      ---还远test库的t1,t2表

# mysqldump -uroot -p132 --databases db01 db02 db03  > /tmp/t1.sql  ---备份多个库

# mysqldump -uroot -p123 --all-databases > /tmp/all.sql   ---备份所有库

还原就用 mysql -uroot -p123 [database] < /tmp/1.sql 

 

第三种增量数据:

需要打开了二进制日志记录

binlog --记录mysql服务器增删的操作记录。

mysqlbinlog

--start-datetime 开始的时间

--stop-datetime 结束时间

--start-position=# 开始位置(POS)

--stop-position=#结束的位置

 

备份方案1:

完成备份(mysqldump)+增量备份(binlog)

    1、数据总量不大,一般在几百M的数据可以使用这种方法

    2、如果数据量太大,每次备份锁表时间会比较长,这样会影响上层应用的使用。

 

进行备份

mysqldump -uroot -p123 --flush-logs --master-data=2 --all-databases > /mysql/all.sql

--flush-logs ------备份时先将内存的日志写回磁盘,并刷新二进制日志。

--master-data=2 在备份时进行全库锁表,并将锁对应的二进制日志名字写入到文件里。

 

还原

mysql -uroot -p123  < /mysql/all.sql

mysqldump --start-postion=106 --stop-datetime="xxxx-xx-xx xx:xx:xx" mysqld.000001 | mysql -uroot -p123

 

使用脚本备份

vim mysql_backup.sh

#!/bin/sh

name=`date +%Y%m%d-%T`

/usr/bin/mysqldump -uroot -p132 --flush-logs --master-data=2 -A > /mysql/$name.sql

crontab -e

00 05 * * 7 /bin/sh/var/ftp/notes/scripts/mysql_backup.sh &> /dev/null && echo "$name 备份已成功"  >> /mysql/bk_status

 

备份方案2:

完成备份(LVM快照)+物理备份+增量备份(binlog)

1.确认你当前数据文件是否放在LVM卷上

2.确认卷组有空闲空间

3.全库锁 -->同步缓存都磁盘-->并截断日志并记录日志名称,然后新建快照并挂载快照

4.全库解锁

5.做完整的数据备份

6.删除快照

 

mysql> dilimiter //

mysql> flush tables with read lock//

mysql>flush logs//

mysql>system lvcreate -n data_snap -L 200M -s /dev/vol0/data

mysql>system mysql -uroot -p132 -e "show master status" > `date +%y%m%d-%T`.txt

mysql>unlock tables//

 

shell> mount /dev/vol0/data_snap /mnt

shell>cd /mnt

shell> tar cjf /mysql_bk.tar.gz ./

shell>cd .. && umount /mnt && lvremove /dev/vol0/data_snap

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值