015—备份、还原和数据迁移
admin
2023-04-20 09:23:04
0

备份:

 

按是否备份全部数据可以将备份划分为: 

 

完全备份

 

增量备份:指的是备份自上一次备份以来(增量或完全)以来变化的数据特点节约空间、还原麻烦。

 

差异备份:指的是备份自上一次完全备份以来变化的数据 特点浪费空间、还原比增量备份简单。

 

一般情况下,根据备份策略组合使用:完全+增量;完全+差异。


015—备份、还原和数据迁移


常用备份工具:

1. mysqldump : 逻辑备份工具适用于所有的存储引擎支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备 

2. cp, tar 等归档复制工具物理备份工具适用于所有的存储引擎冷备、完全备份、部分备份 

3. lvm2 snapshot: 几乎热备借助文件系统管理工具进行备份 

4. mysqlhotcopy: 名不副实的的一个工具几乎冷备仅支持MyISAM存储引擎 

5. xtrabackup: 一款非常强大的InnoDB/XtraDB热备工具支持完全备份、增量备份percona提供

 

备份策略:


针对不同的场景下我们应该制定不同的备份策略对数据库进行备份一般情况下备份策略一般为以下4种:

 

a. 直接cp,tar复制数据库文件

 

b. mysqldump+复制BIN LOGS

 

c. lvm2快照+复制BIN LOGS

 

d. xtrabackup

 

以上的几种解决方案分别针对于不同的场景:

 

Ø 如果数据量较小可以使用第一种方式直接复制数据库文件。【如果是将复制的文件拷贝到新的数据库时,需要新数据的版本号高于旧数据库,仅有MYISAM引擎支持,INNODB不支持】

 

Ø 如果数据量还行可以使用第二种方式先使用mysqldump对数据库进行完全备份然后定期备份BINARY LOG达到增量备份的效果。

 

Ø 如果数据量一般而又不过分影响业务运行可以使用第三种方式使用lvm2的快照对数据文件进行备份而后定期备份BINARY LOG达到增量备份的效果。

Ø 

Ø 如果数据量很大而又不过分影响业务运行可以使用第四种方式使用xtrabackup进行完全备份后定期使用xtrabackup进行增量备份或差异备份。

 

 

1、Mysqldump实现备份恢复


windows环境下】

1) 备份单个数据库或单个数据库中的指定表: 

mysqldump -h主机名  -P端口 -u用户名 -p密码 –database 数据库名 表名> 文件名.sql

 

 

2) 备份多个数据库: 

mysqldump -h主机名  -P端口 -u用户名 -p密码 –database db1 db2 db3 > 文件名.sql


 

3) 备份所有数据库: 

mysqldump --all -databases > backupname.sql


 

4) 压缩备份:

mysqldump -h hostname -u username -p password -database databasename | gzip > backupfile.sql.gz


 

5) 还原MySQL数据库的命令

 

mysql -hhostname -uusername -ppassword databasename < backupfile.sql


 

6) 还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -u username -p password dbname


 

 

数据迁移:

可以分为:同版本MYSQL迁移;不同版本MYSQL迁移;不同数据库迁移

 

1、直接迁移(备份还原同时进行)【同版本】

mysqldump -h hostname1-u root -p password=password1 -all-databases 
| 
mysql –h hostname2 -u root -password=password2


 

2、【不同版本】低版本可以向高版本迁移,高版本很难向低版本迁移。

 

3、不同数据库迁移,可以实现,但比较复杂。

 

 

===========================================提高==============================================================

增量备份


小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份。增量备份的原理就是使用了mysqlbinlog志。

 

1、首先做一次完整备份:

 

mysqldump -h20.6.208.183 -utest2 -p123 -P3310 --single-transaction  --master-data=2  test>test.sql


这时候就会得到一个全备文件test.sql

 

sql文件中我们会看到:

-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指备份后所有的更改将会保存到bin-log.000002二进制文件中。

2、在test库的t_student表中增加两条记录,然后执行flush logs命令。这时将会产生一个新的二进制日志文件bin-log.000003bin-log.000002则保存了全备过后的所有更改,既增加记录的操作也保存在了bin-log.00002中。

 

3、再在test库中的a表中增加两条记录,然后误删除t_student表和a表。a中增加记录的操作和删除表at_student的操作都记录在bin-log.000003中。

 

恢复


1、首先导入全备数据

 

mysql -h20.6.208.183 -utest2 -p123  -P3310 < test.sql,

也可以直接在mysql命令行下面用source导入

 

2、恢复bin-log.000002

 

mysqlbinlog bin-log.000002 |mysql -h20.6.208.183 -utest2 -p123  -P3310

 

 

3、恢复部分 bin-log.000003

 

   在general_log中找到误删除的时间点,然后更加对应的时间点到bin-log.000003中找到相应的position点,需要恢复到误删除的前面一个position点。

 

可以用如下参数来控制binlog的区间

 

--start-position 开始点 --stop-position 结束点

 

--start-date 开始时间  --stop-date  结束时间

 

找到恢复点后,既可以开始恢复。

 

 mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h20.6.208.183 -utest2 -p123  -P3310


 

 

 参考:

1学会4MYSQL备份方法                    2、常用MSQL备份还原命令

 

 


相关内容

热门资讯

“一次愉快的会晤”,泽连斯基披... 在俄乌互相加大对对方纵深目标打击之际,乌克兰总统泽连斯基7月28日造访了白宫,与美国总统特朗普举行会...
总统连遭“逼宫”,少帅临危受命 躲避着燃烧瓶和火箭弹袭击,四辆苏制BMP步兵战车快速穿行在马里乌波尔市区。即将出城的路口,迎面出现1...
独居女子在卧室玩偶内发现摄像头... 租房独居女子意外发现家中玩偶内藏着偷拍设备,报警后偷拍设备竟“不翼而飞”,门锁记录显示有人在她出门的...
伊学者:乌克兰袭击行动适得其反... 乌克兰袭击与伊朗有关的船只后,伊朗和俄罗斯接连作出强硬回应。伊朗外交学院教授法拉吉扎德在接受凤凰卫视...
20万人怒火不会停!蓝议员挺蒋... 海峡导报综合报道 在蓝白号召台湾民众上凯道呐喊“反毒台”后,台北市长蒋万安日前透露,近日不少民代私下...
柯文哲妻子陈佩琪畅游大陆,民进... 台湾民众党前主席柯文哲妻子陈佩琪27日在脸书发文证实,自己早前由儿子陪同前往上海、杭州与北京旅游一周...
高市早苗被问如何改善中日关系 据日本东京新闻报道,当地时间7月27日,日本首相高市早苗在首相官邸举行记者会。当被问及如何改善中日关...
扎哈罗娃批小泉进次郎涉核言论:... 【环球网报道 记者 张江平】综合俄新社等媒体报道,对于日本防卫大臣小泉进次郎涉核言论,俄罗斯外交部发...
“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...