温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-05-18 11:28:34 来源:网络 阅读:172 作者:三月 栏目:数据库

下面一起来了解下应该如何备份及还原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表

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

    查看/tmp/test2目录

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

    例2:备份整个数据库

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

    然后查看/tmp/test目录

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

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

    查看一下tutors.txt这个文件

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

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

--fields-terminated-by=','

列值之间用逗号隔开

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

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

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

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

注意要点:

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

数据库的还原

  1、mysqldump没使用--tab选项    

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

   2、mysqldump使用--tab选项    

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

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

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

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

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

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

创建冷备份

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

mysql>show master status;

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

    2、进行二进制日志滚动

mysql>flush logs

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

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

创建增量备份

    1、进行二进制日志滚动

    2、使用mysqlbinlog进行备份

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

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

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


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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI