千家信息网

应该如何备份及还原mysql数据

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,下面一起来了解下应该如何备份及还原mysql数据,相信大家看完肯定会受益匪浅,文字在精不在多,希望应该如何备份及还原mysql数据这篇短内容是你想要的。备份的不同分类:热备份、温备份和冷备份热备份:读
千家信息网最后更新 2024年11月21日应该如何备份及还原mysql数据

下面一起来了解下应该如何备份及还原mysql数据,相信大家看完肯定会受益匪浅,文字在精不在多,希望应该如何备份及还原mysql数据这篇短内容是你想要的。

备份的不同分类:

热备份、温备份和冷备份

热备份:读、写不受影响;

温备份:仅可以执行读操作;

冷备份:离线备份;读、写操作均中止;

物理备份和逻辑备份

物理备份:复制数据文件;原始数据在操作系统上呈什么样,备份出来也是什么样,适用

于比较大型、重要、出现故障时要快速恢复的场景

逻辑备份:备份sql语句,恢复的时候执行一遍备份的sql语句,较为灵活,但恢复速度较

慢,适用于小型、便于在其他云服务器上进行恢复的场景

完全备份、增量备份和差异备份;

完全备份:备份全部数据;

增量备份:仅备份上次完全备份或增量备份以后变化的数据;

差异备份:仅备份上次完全备份以来变化的数据;

备份工具:

1、通过复制对象相关文件的方式创建备份

一般适用于myisam引擎表,只要将.frm、.MYD、.MYI这些文件复制保存就相当于进行了备份

步骤:

    mysql>FLUSH TABLES tb_name WITH READ LOCK    #备份前对表进行只读锁定    [root@localhost /]cp /the/path/to/data /the/path/to/backup    mysql>UNLOCK TABLES         #释放锁

这种备份方法不适用于Innodb表,当innodb_file_per_table设置为1时,复制表对象的相关文件.ibd不能达到备份的目的,因为表结构、所属数据库等信息仍存在于Innodb的系统表空间中。

2、使用sql语句进行备份

mysql>SELECT * INTO OUTFILE '/path/to/somefile.txt' FROM tb_name [WHERE clause];

3、使用mysqldump进行逻辑备份

备份单个数据库/表

mysqldump -uUSERNAME -p PASSWORD db_name [tb_name]> /path/to/backup/db_name.sql

备份多个数据库

mysqldump -uUSERNAME -p PASSWORD --databases db1 db2 > /path/to/backup/db1_db2.sql

使用--tab输出txt文件和sql文件,将数据和建表语句分开

mysqldump -uUSERNAME -p PASSWORD --tab=/path/to/backup db_name [tb_name]    #将数据库的全部对象或特定的表导出到backup目录下

例1:备份数据库jiaowu下的tutors表

查看/tmp/test2目录

例2:备份整个数据库

然后查看/tmp/test目录

可以发现,数据库中的每张表都生成两个同名文件,.txt存储表中的实际数据,.sql存储的是sql语句(建表语句)

查看一下tutors.txt这个文件

可以看到,每条记录输出到一行上,列值之间用tab符隔开,如果希望自己能自定义输出的格式,可以使用下面的选项

--fields-terminated-by=','

列值之间用逗号隔开

--fields-enclosed-by='"'列值使用双引号引起来
--lines-terminated-by='\'指定\为行结束符,默认为换行符

可以看到,导出的tutors.txt列值之间以逗号分开,并使用双引号引住,这样可以方便以后数据导入回数据库中

注意要点:

当mysqldump没有使用--tab时,其导出的sql文件中既有操作语句又有建表语句;当使用--tab时,其中txt文件保存数据,sql文件仅有建表语句。

数据库的还原

1、mysqldump没使用--tab选项

mysql>use db_namemysql>source /path/to/backup/tb.sql     #这样即可导入

2、mysqldump使用--tab选项

1、使用.sql文件将表创建好

    mysql -uUSERNAME -p PASSWORD db_name < /path/to/backup/tb.sql

2、在数据库中通过LOAD DATA INFILE语句来导入.txt文件到表中

mysql>LOAD DATA INFILE '/path/to/tb.txt' INTO TABLE tb_name [参数]

创建冷备份

1、查看正在使用的二进制日志

mysql>show master status;

2、进行二进制日志滚动

mysql>flush logs

3、关闭mysql,备份数据目录,开启mysql即可

创建增量备份

1、进行二进制日志滚动

2、使用mysqlbinlog进行备份

mysqlbinlog /path/to/binlog/mysql-bin.0000xx > /path/to/backup/0000xx.sql

(恢复时可以直接source或mysql命令(上面还原时有讲到))

说白了增量备份就是使用mysqlbinlog将上次备份后新生成的二进制日志备份到指定目录


看完应该如何备份及还原mysql数据这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的行业资讯栏目。

0