千家信息网

mysql数据库备份

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,数据库备份1 冷备(cp)2 LVM快照备份lvcreate -s -n rhel6node1 -L 2G /dev/vg_kvm/rhel6base3 热备mysqldump -hserip -u用
千家信息网最后更新 2025年11月12日mysql数据库备份

数据库备份

1 冷备(cp

2 LVM快照备份

lvcreate -s -n rhel6node1 -L 2G /dev/vg_kvm/rhel6base

3 热备

mysqldump -hserip -u用户名 -p密码 数据库名 > 目录名/xxx.sql

数据库名的表示方式

--all-databases 备份服务器上的所有数据

数据库名 备份一个库的所有数据

数据库名 表名 备份一个表的所有数据

-B 数据库名1 数据库名2 备份几个库的所有数据

完整恢复

mysql -hlocalhost -uroot -p123 [数据库名] < xxx.sql

4 增量备份

1 binlog日志加脚本实现增量备份

1 使用mysql自带binlog日志功能实现对数据的增量备份

2 安装第3方软件提供增量备份工具对数据做增量备份

------------------------------------------------------------------

使用binlog日志增量备份/增量恢复

binlog日志的使用

mysql服务有4种日志文件:错误日志、查询日志、慢查询日志

binlog日志

binlog日志 (二进制日志)

记录客户端连接自己之后,执行的除查询之外的sql命令。

默认没开启binlog日志

service mysql stop

vim /etc/my.cnf

[mysqld]

Log-bin=/logdir/plj

:wq

mkdir /logdir

chown mysql /logdir

service mysql start

cd /var/lib/mysql/

www-bin.000001 binlog日志文件

500M+

www-bin.000002

www-bin.index 日志的索引文件

查看binlog日志文件内容

mysqlbinlog binlog日志文件名

手动生成新binlog日志文件方式?

mysql> flush logs;

mysql -hlocalhost -uroot -p123 -e "flush logs"

service mysql restart

binlog记录SQL命令的方式?

1 字符偏移量

2 时间点

mysqlbinlog 【选项】 binlog日志文件名

时间点

--start-datetime="2015-12-16 14:20:30" 自己去库里找时间

--stop-datetime="2015-12-16 17:20:30" 自己去库里找时间

字符偏移量

--start-position=数字 自己去库里找偏移量

--stop-position=数字 自己去库里找偏移量

mysqlbinlog --start-position=385 --stop-position=1134 plj.000010 | mysql -hlocalhost -uroot -p123 【数据库名】

vim /shell/newlogfilebak.sh

#!/bin/bash

if [ ! -e /logbak ];then

mkdir /logbak

fi

mysql -hlocalhost -uroot -p123 -e "flush logs" &> /dev/null

cd /logdir

for file in `sed '$d' plj.index`

do

name=`echo $file | awk -F "/" '{print $3}'`

if [ ! -e /logbak/$name ];then

cp $name /logbak/

fi

done

:wq

00 18 * * 1 /shell/bakadb.sh &> /dev/null

00 19 * * 2-7 /shell/newfillogbak.sh

2 三方插件xtrabackup增量备份

yum -y install perl-Time-HiRes perl-DBD-MySQL

rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm

增量备份/增量恢复命令 xtrabackup_56

备份过程中不锁库表

备份时只备份表记录,不备份表结构。

使用xtrabackup_56增量备份时,必须有一次完整备份,这样再备份时,才能知道哪些数据是新产生的。

xtrabackupC程序,支持InnoDB/XtraDB

xtrabackup_56 <选项>

选项

--backup 备份数据

--prepare 准备恢复数据

--target-dir=目录名 备份目录

--datadir=数据库目录 备份的源文件

--incremental-basedir=目录名 增量备份时,指定上一次备份文件存储的目录

--incremental-dir=目录名 准备恢复数据时,指定使用那个备份目录下的数据做恢复

1001 5

xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/onedir

2002 7

xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new1 --incremental-basedir=/onedir

3003 10

xtrabackup_56 --backup --datadir=/var/lib/mysql --target-dir=/new2 --incremental-basedir=/new1

mysql > delete from testdb.a;

drop table testdb.a;

增量恢复

1 、准备恢复数据

xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir

xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir --incremental-dir=/new1

xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/onedir --incremental-dir=/new2

2、被备份文件拷贝回数据库目录下对应的位置

cp /onedir/testdb/a.ibd /var/lib/mysql/testdb/

3、重启数据库服务器 service mysql restart

xtrabackup工作过程

lsn 日志序列号

/var/lib/mysql/

ibdata1

ib_logfile0

ib_logfile1

ibdata1

ibdata1.delta

ibdata1.meta

xtrabackup_checkpoints

xtrabackup_logfile

a.ibd

a.ibd.delta a.ibd.meta


0