mysql基于xtrabackup热备配置主从复制

本文详细介绍了如何在Linux环境下设置MySQL主从复制,包括安装Xtrabackup、配置主库和从库、热备数据以及执行全量和增量备份的过程。
摘要由CSDN通过智能技术生成

实验环境准备

mysql服务器mysql版本mysql服务器ip
mysql1(master)5.6.5010.206.120.10
mysql2(slave)5.6.5010.206.120.2

1、安装xtrabackup

#安装Percona yum存储库
yum install https://repo.percona.com/yum/percona-release-1.0-20.noarch.rpm -y

#如果打算将Percona XtraBackup与MySQL 结合使用,还需要开启tools存储库
percona-release enable-only tools release

#安装Percona XtraBackup  2.4版本 适用于mysql8.0以下版本
yum install -y percona-xtrabackup-24-2.4.23-1.el7.x86_64 

#下载mysql-devel mysql-client mysql-server上传至服务器

#安装mysql
yum install -y MySQL-client-5.6.50-1.el7.x86_64.rpm 
yum install -y MySQL-server-5.6.50-1.el7.x86_64.rpm 
yum install -y MySQL-devel-5.6.50-1.el7.x86_64.rpm 

#若报mysql与mariadb的lib冲突
rpm -e --nodeps mariadb-libs.x86_64

主从复制

xtrabackup热备

#主库执行
1.准备纯净的从库环境 
主库:10.206.120.10
从库:10.206.120.2

2.修改主库配置文件
[root@VM-120-2-centos ~]# vim /usr/my.cnf
[mysqld] 
# 节点ID,确保唯一 
server-id = 1 
#开启mysql的binlog日志功能 
log-bin = mysql-bin
#控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中, 性能最差,最安全 
sync_binlog = 1 
#binlog日志格式
binlog_format = row 
#binlog过期清理时间 
expire_logs_days = 7 
#binlog每个日志文件大小 
max_binlog_size = 100m 
#binlog缓存大小 
binlog_cache_size = 4m 
#最大binlog缓存大小 
max_binlog_cache_size= 512m 
#不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制黏贴下述配置项,写多行 
binlog-ignore-db=mysql 
# 表中自增字段每次的偏移量 
auto-increment-offset = 1 
# 表中自增字段每次的自增量 
auto-increment-increment = 1 
#跳过从库错误 
slave-skip-errors = all 
#跳过密码
skip-grant-table

3.重启主库(略) 
systemctl restart mysql

4.修改密码

```bash
#更新密码
update mysql.user set password=password("123") where user="root";
flush privileges;
#关闭跳过密码
vim /usr/my.cnf 
.......
.......
.......
#skip-grant-table
重启数据库
systemctl restart mysql

mysql -uroot -p123
SET PASSWORD = PASSWORD('your new password');
flush privileges;

5.在主库上创建一个用于复制的账号,并赋予replication slave权限,这里必须 . 不能指定库授权,因为 replication slave 是全局的

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123';
mysql> grant replication slave on *.* to 'slave'@'%' identified by '123';
mysql> flush privileges;

6.模拟主库运行,有数据写入、

#创建数据库
mysql> create database number;
mysql> use number;
mysql> create table test(id int)#编写数据写入脚本
vim insert_mysql.sh
for i in `seq 0 1000000` 
do 
    mysql -uroot -p123 -e "insert number.test(id) values($i)";
    sleep 5; 
done 

#下载后台程序并将脚本运行在后台
yum install -y tmux
tmux 
sh insert_mysql.sh

#创建备份目录
mkdir -p /data/xtrabackup/

7.主库全备数据

#全备数据
innobackupex --defaults-file=/usr/my.cnf --user=root --password=123 /data/xtrabackup
......
......
231229 18:01:12 [00]        ...done
xtrabackup: Transaction log of lsn (8985658) to (8985658) was copied.
231229 18:01:13 completed OK!


# 备份一致性检查
innobackupex --apply-log  /data/xtrabackup/备份当天的日期-时间/
........
........
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 9020064
240102 10:29:39 completed OK!

8.将热备数据传达从库并关闭数据库

#主库压缩刚刚备份的目录
cd /data/xtrabackup/
tar -czvf 2024-01-31_15-45-51.tar.gz 2024-01-31_15-45-51
scp 2024-01-31_15-45-51.tar.gz 10.206.120.2:/tmp.

#关闭从数据库
systemctl stop mysql

9.修改从库配置文件

[root@VM-120-10-centos ~]# vim /usr/my.cnf
[mysqld] 
server-id = 2 
relay-log = mysql-relay-bin 
#同步的时候跳过以下几个表
replicate-wild-ignore-table=mysql.% 
replicate-wild-ignore-table=test.% 
replicate-wild-ignore-table=information_schema.% 
log-bin=mysql-bin
log-slave-updates
sync_binlog=0     
replicate-do-db=testdb
slave-net-timeout=60
datadir=/var/lib/mysql 
binlog_format = row 

10.在从库导入全备数据

cd /tmp
tar -xf 2024-01-31_15-45-51.tar.gz 
innobackupex --defaults-file=/usr/my.cnf --copy-back /tmp/2024-01-31_15-45-51
chown -R mysql.mysql /var/lib/mysql

11.重启从库

systemctl restart mysql

12.查看sql文件中的位置点(如果是打点备份的话)

#该位置即主库刚刚做完全量备份时,主库binlog日志所处的位置 
[root@VM-120-10-centos tmp]# cat /tmp/2024-01-02_11-12-06/xtrabackup_binlog_info 
mysql-bin.000006        7354

13.从库配置同步

[root@slave1 ~]# mysql -uroot -p123 # 登录然后执行 
change master to master_host='10.206.120.10', 
master_port=3306, 
master_user='slave', 
master_password='123', 
master_log_file='mysql-bin.000002', 
master_log_pos=3239; 

14.开启SQL线程和IO线程

start slave; 

15.查看主从状态

show slave status\G;
.......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
.......

至此,mysql全备(热备)完成,并将主从复制配置成功


## XtraBackup增量备份

一 基于上一次备份进行增量,参数说明: 
--incremental:开启增量备份功能 
--incremental-basedir:上一次备份的路径 

#增备备份命令
 innobackupex --user=root --password=123 --no- timestamp --incremental \
 --incremental-basedir=/data/xtrabackup/2024-01-02_11-12-06


#三 判断数据备份是否衔接 
#查看增备的详细信息
cat timestamp/2024-01-02_17-25-54/xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 9256591     #应该跟上一次全备的to_lsn值一致
to_lsn = 12149737
last_lsn = 12149737
compact = 0
recover_binlog_info = 0
flushed_lsn = 12149737


#查看全备的详细信息
[root@VM-120-2-centos 2024-01-02_11-12-06]# cat /data/xtrabackup/2024-01-02_11-12-06/xtrabackup_checkpoints 
backup_type = full-prepared
from_lsn = 0
to_lsn = 9256591      
last_lsn = 9256858
compact = 0
recover_binlog_info = 0
flushed_lsn = 9256858


详情点击这里

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值