✅ 操作成功!

数据迁移方案

发布时间:2023-06-06 作者:admin 来源:文学

数据迁移方案

数据迁移方案

英语错题本-通告和通知的区别

2023年2月21日发(作者:中医美容学)

数据备份数据迁移⽅案

数据备份⽅式

物理备份

冷备:cp、tar、…

逻辑备份

mysqldump//备份

mysql//恢复

物理备份及恢复

备份

]cp-r/var/lib/mysql⽬录/

]tar-zcvf/root//var/lib/mysql/*

恢复

]cp-r⽬录//var/lib/mysql/

]tar-xvf/root/-C/var/lib/mysql/

]chown-Rmysql:mysql/var/lib/mysql

逻辑备份

数据备份策略

完全备份:备份所有数据源

增量备份:备份上次备份后,所有新产⽣的数据

差异备份:备份上次完全备份后,所有新产⽣的数据

完全备份和恢复

]mysqldump-uroot-p密码库名>⽬录/⽂件.sql#备份

]mysqldump-uroot-p密码-A|--all-databases>⽬录/⽂件.sql#备份所有库

]mysqldump-uroot-p密码库名表名>⽬录/⽂件.sql#备份表

]mysqldump-uroot-p密码-B数据库1数据库2>⽬录/⽂件.sql#备份多个数据库

]mysql-uroot-p密码库<⽬录/⽂件.sql#恢复

增量备份

⽇志⽂件

1)什么是binlog⽇志?

⼆进制⽇志

MySQL服务⽇志⽂件的⼀种

记录除查询之外所有的SQL命令

可⽤于数据备份和恢复

配置mysql主从同步的必要条件

2)启⽤binlog⽇志

配置项⽤途

server_id=数字指定id值(1-255)

log_bin[=⽬录/⽂件]启⽤binlog⽇志

max_binlog_size=数值m指定⽇志⽂件容量,默认1G

配置项⽤途

]vim/etc/

[mysqld]

log_bin

server_id=50#启⽤binlog必须指定server_id

3)binlog相关⽂件

主机名-bin’.index//索引⽂件

主机名-bin.000001//第⼀个⼆进制⽇志

主机名-bin.000002//第⼆个⼆进制⽇志

4)⼿动⽣成新的⽇志⽂件

四个⽅法:

]systemctlrestartmysqld

mysql>flushlogs;

]mysql-uroot-p密码-e'flushlogs'

]mysqldump-uroot-p密码--flush-logs库>⽬录/⽂件

5)清理⽇志

删除指定编号之前的binlog⽇志⽂件:

mysql>purgemasterlogsto"binlog⽂件名";

删除所有的binlog⽇志,重建新⽇志:

mysql>resetmaster;

6)相关命令

mysql>showmasterstatus;#查看⽇志信息

2.使⽤binlog⽇志⽂件恢复数据

命令格式

]mysqlbinlog[选项]binlog⽇志⽂件#将⽂件内容输出到屏幕

]mysqlbinlog[选项]binlog⽇志⽂件|mysql-uroot-ppassword#恢复数据,不加选项时恢复全部数据

选项:

--start-position=数字#指定起始偏移量

--stop-position=数字#指定结束偏移量

--start-datetime="yyyy-mm-ddhh:mm:ss"#起始时间

--stop-datetime="yyyy-mm-ddhh:mm:ss"#结束时间

binlog⽇志记录格式

row⾏模式

statement报表模式

mixed混合模式

mysql>showvariableslike"binlog_format";#查看⽇志⽂件记录格式

vim/etc/#修改⽇志⽂件记录格式,mixed模式可以通过命令查看偏移量和时间

binlog_format="mixed"

使⽤binlog⽇志⽂件恢复指定范围内的数据

查看要恢复的数据所在的偏移量和时间:

mysqlbinlogbinlog⽇志⽂件

内容解析:

at数字#数字为偏移量

commit#代表’回车’,查找结束偏移量或时间需要包括⼀个commit

恢复数据:

mysqlbinlog选项binlog⽇志⽂件|mysql-uroot-ppassword

例:

mysqlbinlog--start-position=300--stop-position=1185dzh.000002|mysql-uroot-p123456

a

常⽤备份⼯具的缺点:

物理备份缺点:跨平台性差,备份时间长,冗余备份,浪费存储空间

mysqldump缺点:效率低,备份和还原速度慢,锁表

XtraBackup:

在线热备不锁库表,适合⽣产环境

由专业组织Percona提供(改进MySQL分⽀)

主要包括两个组件:xtrabackup(C程序,⽀持innodb和xtradb),innobackupex(perl脚本封装的xtrabackup,额外⽀持MyISAM)

7.x86_

whichinnobackupex

常⽤选项含义

--host主机名

--user⽤户名

--port端⼝号

--password密码

--databases数据库名

--no-timestamp不⽤⽇期命名存储备份⽂件的⼦⽬录名

--redo-only⽇志合并

--apply-log准备恢复数据

--copy-back拷贝数据

--incremental⽬录名增量备份

--incremental-basedir=⽬录名增量备份时,指定上⼀次备份数据存储的⽬录名

--incremental-dir=⽬录名准备恢复数据时,指定增量备份数据存储的⽬录名

--export导出表信息

--databases="库"

--databases="库1库2"

--databases="库1.表"

1)innobackupex完全备份和恢复

备份:(备份后数据在指定的⽬录下)

innobackupex选项⽬录

例:

innobackupex--host地址--port端⼝号--userroot--passwordPASSWORD--databases=库⽬录名--no-timestamp#备份所有数据,不指定库时为备份所有

恢复:

1.停⽌数据库服务

2.清空数据⽬录下的数据

3.准备恢复数据

4.恢复数据

5.修改数据⽬录下⽂件的所有者/组为mysql

6.启动数据库服务

7.管理员登录查看数据

systemctlstopmysqld#关闭服务

rm-rf/var/lib/mysql/*#清空数据

7.x86_#安装⼯具

innobackupex--apply-log备份⽂件路径#准备恢复数据

innobackupex--copy-back备份⽂件路径#拷贝数据到数据库⽬录下

chown-Rmysql:mysql/var/lib/mysql/*#修改权限

2)innobackupex在完全备份恢复某表的所有数据

表空间

存储表记录的⽂件

1.删除表空间

2.导出表信息

3.拷贝表信息⽂件到数据库⽬录下

4.修改表信息⽂件的所有者及组⽤户为mysql

5.导⼊表空间

6.删除数据库⽬录下的表信息⽂件

7.查看表记录

mysql>altertable库.表discardtablespace;#删除表空间

innobackupex--apply-log--export数据备份⽬录#导出表信息

cp数据备份⽬录/数据库名⽬录/表名.{ibd,exp,cfg}/var/lib/mysql/库名⽬录/#cp表信息⽂件到数据库⽬录下

chown-Rmysql:mysql/var/lib/mysql/库名⽬录/#修改权限

mysql>altertable库.表importtablespace;#导⼊表空间

rm-rf/var/lib/mysql/库名⽬录/表.{exp,cfg}#删除表信息⽂件

3)innobackupex增量备份和恢复

增量备份:

1.判断是否有新数据产⽣

2.有新数据时判断哪些数据是新数据

备份⽬录/xtrabackup_checkpoints⽂件:

lsn:⽇志序列号

backup_type含义

full-backuped完全备份

incremental增量备份

log-applied已应⽤(已准备好恢复数据)

应⽤实例:

周⼀:完全备份

]innobackupex--userroot--passwordPASSWORD/allbak--no-timestamp#备份所有数据

]cat/allbak/xtrabackup_checkpoints

#lsn:⽇志序列号

backup_type=full-backuped

from_lsn=0#备份数据开始序列号

to_lsn=2880259#备份数据结尾序列号

last_lsn=2880268#增量备份时,使⽤此序列号与数据库⽬录下的ib_logfile进⾏⽐对,确定是否有新数据

compact=0

recover_binlog_info=0

周⼆:增量备份

]innobackupex--userroot--passwordPASSWORD--incremental/new1dir--incremental-basedir=/allbak--no-timestamp

]cat/new1dir/xtrabackup_checkpoints

backup_type=incremental

from_lsn=2880259#通过上⼀次备份的结尾确定这⼀次备份的开始

to_lsn=2882360

last_lsn=2882369#再次进⾏增量备份时,同样进⾏⽐对

compact=0

recover_binlog_info=0

周三:增量备份

]innobackupex--userroot--passwordPASSWORD--incremental/new2dir--incremental-basedir=/new1dir--no-timestamp

]cat/new2dir/xtrabackup_checkpoints

backup_type=incremental

from_lsn=2882360

to_lsn=2884453

last_lsn=2884462

compact=0

recover_binlog_info=0

增量恢复:

1.停⽌数据库服务

2.清空数据库⽬录下内容

3.准备恢复数据(合并⽇志)

4.拷贝数据到数据库⽬录下

5.修改⽂件所有者/组为mysql

6.启动数据库服务

systemctlstopmysqld

rm-rf/var/lib/mysql/*

innobackupex--apply-log--redo-only/allbak#合并⽇志

innobackupex--apply-log--redo-only/allbak--incremental-dir=/new1dir#合并增量⽇志

innobackupex--apply-log--redo-only/allbak--incremental-dir=/new2dir#合并增量⽇志

innobackupex--copy-back/allbak#拷贝⽂件

chown-Rmysql:mysql/var/lib/mysql/*

systemctlstartmysqld

4)数据迁移⽅案

1.从服务器安装mysql,启动服务完成初始化,然后stop服务,删除/var/lib/mysql/下的所有⽂件,为恢复数据做准备

2.使⽤innobackupex⼯具备份所有数据,并记录当前的binlog⽇志名和偏移量

innobackupex--userroot--passwordPASSWORD--slave-info/allbak--no-timestamp#使⽤--slave-info参数,备份所有数据,并记录备份数据对应的binlo

g⽇志名

3.将备份⽂档发送到从服务器

scp-r/allbakroot@slave:

4.从服务器使⽤备份⽂件恢复数据

5.启动服务

6.查看备份⽂件中记录的binlog⽇志信息,配置主从changemasterto

]cat/root/allbak/xtrabackup_info|grepmaster11#master11为当前主服务器的binlog⽇志前缀

binlog_pos=filename'master11.000001',position'7700'

从服务器的mysqld服务,卸载,安装pxc,启动pxc,此时该服务器依然为线上服务器的从服务器,数据保证了同步,继续配置

其余pxc服务器即可

👁️ 阅读量:0