MySQL 备份与恢复详解(2)

把这个表相关的三个文件students_myisam.frm,students_myisam.MYD, students_myisam.MYI文件拷贝到另外 
的数据库实例对应的数据库目录下
 
[root@master01 course]# scp students_myisam.* 10.0.0.204:/usr/local/mysql/data/course/

注意相关目录下的权限改成mysql 
[root@master02 course]# chown mysql.mysql students_myisam.*

MySQL 备份与恢复详解

对InnoDB表来说:即使是innodb_file_per_table=on的情况下直接拷贝文件也不行

把这个表相关的两个文件students.frm,students.ibd文件拷贝到另外的数据库实例对应的数据库目录下

MySQL 备份与恢复详解

查看错误日志信息: 
2018-09-18T09:26:39.479752Z 5667 [Warning] InnoDB: Cannot open table test/students from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to  for how to resolve the issue. 
有一部分放在共享表空间ibdata里面,所以不能直接拷贝文件

对InnoDB来说,可以通过拷贝整个data目录的方式来完成备份和恢复,拷贝到另外实例,上记得授权

Mysqldump 详解

Mysqldump工具用来生成MySQL的逻辑备份文件,其文件内容就是构成数据库对象和数据内容的可重复执行的SQL语句

Mysqldump工具使用的三种方式: 
shell> mysqldump [options] db_name [tbl_name …] #备份某个库的那些表 
shell> mysqldump [options] –databases db_name … #备份那些苦 
shell> mysqldump [options] –all-databases #备份所有库

options里的关键参数: 
–host=host_name, -h host_name指定要导出的目标数据库所在的主机,默认是localhost 
–user=user_name, -u user_name指定链接目标数据库的数据库用户名 
–password[=password], -p[password]指定链接目标数据库的数据库密码 
–port=port_num, -P port_num指定链接目标数据库的端口 
–add-drop-database表示在使用–databases或者是–all-databases参数时在每个create database命令前都加上drop database的命令 
–add-drop-table表示在每个create table命令前加上drop table命令

–add-drop-trigger表示在每个create trigger命令前加上drop trigger命令

–replace表示使用replace命令插入数据而不是使用insert命令 

--default-character-set=charset_name指定默认的字符集,默认是UTF8

–set-charset表示将SET NAMES default_character_set命令写入到导出备份文件中,默认是开启状态

--dump-slave[=value]参数表示从复制的slave从库导出备份,且其中包含了change master to语句,则利用此备份文件可以直接建立另一个复制从库。 value参数如果不写或者=1的情况下,则change master to语句写入到dump文件中,如果设置=2则代表也写入到dump文件中,只是会注释掉

--master-data[=value]参数表示从复制的主库上导出备份,和–dump-slave参数配置类似,可以利用此备份文件直接建立另一个复制从库。其value的取值含义也和dump-slave相同。使用该参数会自动打开—lock-all-table参数,除非同时使--single-transaction参数

–tab=dir_name, -T dir_name参数表示将备份文件以文本文件的方式生成,dir_name指定了存放的文件路径,每个表会生成两个文件,一个是.sql文件保存的表结构信息,一个是.txt文件保存的表数据信息

–all-databases, -A参数代表导出所有数据库里的所有的表

–databases, -B参数代表导出指定的一个或多个数据库

–ignore-table=db_name.tbl_name参数代表导出过程中忽略某个指定表的导出,如果要忽略多个表则这个参数要使用多次

–no-data, -d参数代表不要导出数据,只导出表结构

–routines, -R参数代表也要把存储过程和函数导出来

–triggers参数代表也要将触发器导出来

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/da5dc0e700869060a288b7581c36f8af.html