资讯专栏INFORMATION COLUMN

MySQL利用xtrabackup快速搭建主从

IT那活儿 / 1542人阅读
MySQL利用xtrabackup快速搭建主从

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

在生产环境中,服务器架构为主从,因服务器IO存在瓶颈那个,所以需要更换硬件或者主机,因而需要重新搭建主从,下面介绍一款可以快速搭建主从的工具:xtrabackup。



适用范围



  • MySQL5.7版本
  • 平台:Linux





闪回原理



Percona Xtrabackup软件是基于InnoDB等事务引擎自带的redo日志和undo日志功能来保持备份和恢复前后数据一致性的,从而确保数据库的数据安全可靠。

在InnoDB引擎中存在一个redo日志(事务日志)功能。redo日志文件会存储每一个InnoDB表中的数据修改记录。

当InnoDB数据库启动时,会检查数据文件和redo日志文件,将已经提交到事务日志(redo日志文件)中的信息应用(提交)到数据文件并保存,然后根据undo日志信息将修改过但没有提交的数据记录进行回滚(不提交到数据文件)。





复制场景



IP
是否有新业务数据
同步方式
192.169.100.50(主)
是(读写)
xtrabackup
192.169.100.51(备)
否(只读)
GTID





数据备份



1. 在主库执行全备(192.169.100.50)

  • 备份-innobackupex(5.7):
innobackupex --defaults-file=/etc/my.cnf --slave-info --
host=192.168.100.50 --port=3306 --user=root --
password=aG?/qR5ivzgK /data/backup/
  • 拷贝至从库服务器:
scp -r backup.zip root@192.168.100.51:/data/
2. 准备恢复(192.168.100.51)
  • 回滚事务:
innobackupex --apply-log /mysql/backup/2022-03-06_15-57-26
  • 恢复数据:
innobackupex --defaults-file=/etc/my.cnf --copy-back /mysql/backup/2022-03-06_15-57-26
  • 目录授权:
chmod -R 755 /mysql/data/
chown -R mysql:mysql /mysql/data/
3. 启动备库(192.168.100.51)
mysqld_safe --defaults-file=/etc/my.cnf &
4. 查看需要同步到的位置(binlog_pos)中GTID的位置信息(192.168.100.51)
cd /mysql/backup/2022-03-06_15-57-26/

cat xtrabackup_info
uuid = 174dc8c7-0ee8-11ec-8e3c-080027682bac
name =
tool_name = innobackupex
tool_command = --defaults-file=/etc/my.cnf --slave-info --host=192.168.56.50 --port=3306 --user=root --password=... /data/backup/
tool_version = 2.4.23
ibbackup_version = 2.4.23
server_version = 5.7.34-log
start_time = 2021-09-06 15:57:26
end_time = 2021-09-06 15:57:32
lock_time = 1
binlog_pos = filename mybinlog.000017, position 1887, GTID of the last change df42a4e0-fe3e-11eb-888f-080027682bac:1-184,
e353511e-fe3e-11eb-b909-080027c7bfc6:1-10

innodb_from_lsn = 0
innodb_to_lsn = 4743009
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
5. 在备库上设置需要同步到的位置信息(192.168.100.51)
reset master;

SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=df42a4e0-fe3e-11eb-888f-080027682bac:1-184,e353511e-fe3e-11eb-b909-080027c7bfc6:1-10;
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
6. 同步主库数据(在51 备库上同步主库信息)
grant replication slave on *.* to repl@% identified by repl@Abc123;

CHANGE MASTER TO
MASTER_HOST=192.168.100.50,
MASTER_USER=repl,
MASTER_PASSWORD=repl@Abc123,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

start slave;
如果要设置主主同步:(在50 主库同步备库信息)

grant replication slave on *.* to repl@% identified by repl@Abc123;

CHANGE MASTER TO
MASTER_HOST=192.168.100.51,
MASTER_USER=repl,
MASTER_PASSWORD=repl@Abc123,
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;
7. 同步主库数据(在51 备库上同步主库信息)
  • 查看状态和数据:
show slave statusG
show variables like "%gtid%"
上述方式用于快速恢复或者搭建主从或者架构的整改等类型,比较适合在生产场景中使用。


END




本文作者:赵栋辉(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129436.html

相关文章

  • Amazon和Mysql之间的那点事儿

    摘要:摘要本文主要介绍了亚马逊的使用过程中发现的问题以及基于亚马逊实例自己搭建服务器的一些经验。之前公司使用亚马逊的实例,一切都非常好。但是我们架设在亚马逊实例上的服务器为了安全起见都是跨网段的,不支持,实现不了啊。 摘要 本文主要介绍了亚马逊RDS的使用过程中发现的问题以及基于亚马逊EC2实例自己搭建Mysql服务器的一些经验。 showImg(https://segmentfault.c...

    Tamic 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<