将数据库数据从一台服务器迁移到另一台服务器
按照备份的量或者业务可以分为三种备份,分别是完全备份、增量备份、差异备份。
数据备份的方式: MyISAM Innodb
·热备份:数据库启动,读写不影响 N Y
·温备份:读不影响,写不行 (lock tables) Y Y
·冷备份:数据库掉线,读写都不行 Y Y
逻辑备份,适合数据量比较小的情况
使用mysqldump.exe(SQL备份)进行数据库导出。
mysqldump -uroot -p --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction passport > /root/temp/passport20190121.sql;
再将数据库导入
mysql.exe -h 数据库 < 文件位置
或source
SQL备份因为需要备份结构,因此产生的备份文件特别大,因此不适合特大型数据备份,也不适合数据变换频繁性的数据库备份
物理备份,数据库文件的data文件拷贝
以表”Table”为例:
如类型是MyISAM, 数据文件则以”Table.frm””Table.MYD””Table.MYI””三个文件存储于”/data/
d
a
t
a
b
a
s
e
n
a
m
e
/
”
目
录
中
.
如
类
型
是
I
n
n
o
D
B
,
数
据
文
件
则
存
储
在
”
databasename/”目录中. 如类型是InnoDB, 数据文件则存储在”
databasename/”目录中.如类型是InnoDB,数据文件则存储在”innodb_data_home_dir/″中的ibdata1文件中(一般情况),结构文件存在于table_name.frm中.
MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。
而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“.frm”文件,不像MyISAM那样还“.MYD,.MYI”文件。
MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:同时拷贝innodb数据库表“.frm”文件和innodb数据“ibdata1”文件到合适的位置。
二进制log文件的增量恢复
一般来说开启binlog日志大概会有1%的性能损耗。
binlog日志有两个最重要的使用场景
1)MySQL主从复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves来达到
master-slave数据一致的目的。
2)自然就是数据恢复了。
binlog日志需要使用mysql的自带的mysqlbinlog工具进行解码,执行:mysqlbinlog mysql-bin.000005可以将二进制文件转为可阅读的sql语句,然后再进行对应的恢复。
binlog日志包括两类文件
1)二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件
2)二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。
一般数据库备份采用全备 + mysql-binlog日志的方式。