点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
1. mysql主从背景
2. 环境依赖
准备一套已安装好mysql的主机,根据mysql版本按装好xtrabackup工具。根据mysql版本选择xtrabackup版本,5.7.X版本的mysql对应2.4.X的xtrabackup,8.0.X版本的数据库对应8.0.X版本的xtrabackup。
主:192.168.188.100 从:192.168.188.101
1. 修改slave密码
alter user 'slave'@'192.168.188.%' identified by '123456';

2. 编写备份脚本
cd /usr/software/mysqlbak/scripts
#!/bin/bash
user="root"
#passwd为数据库root密码
passwd="xxxxx"
port=3306
#ip为主机ip
ip="192.168.188.100"
back_home="/usr/software/mysqlbak"
#根据mysql版本选择xtrabackup版本,5.7.X版本的mysql对应2.4.X的xtrabackup,8.0.X版本的数据库对应8.0.X版本的xtrabackup
home_innobackupex="/usr/software/mysqlbak/scripts/percona-xtrabackup-2.4.7-Linux-x86_64/bin/innobackupex"
files="/etc/my.cnf"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/software/soft/bin
export PATH
N=`date +"%Y%m%d"`
mkdir -p ${back_home}/log_bak
mkdir -p ${back_home}/full
X1=${ip}_${N}_${port}.tar.gz
rm -rf ${back_home}/full/20*
sleep 6
$home_innobackupex --defaults-file=${files} --socket=/usr/software/soft/data/mysql.sock --user=${user} --password=${passwd} --port=${port} --slave-info --stream=tar --tmpdir=${back_home}/full ${back_home}/full 2>${back_home}/log_bak/backup_full_${N}.log|gzip ->$back_home/$X1
cp ${back_home}/log_bak/backup_full_${N}.log ${back_home}/backup_full.log
3. 备份并传输
cd /usr/software/mysqlbak

scp usr/software/mysqlbak/192.168.188.100_20221213_3306.tar.gz
root@192.168.188.101:/usr/software/soft/

注意:传输需要root用户密码,如没root密码用其他用户传输文件需要把data目录所属改为该用户,传输完后再修改回来。
1. 停库

2. 备份数据目录

3. 解压备份
mv 192.168.188.100_20221213_3306.tar.gz usr/software/soft/data

4. 导入日志
导入日志时要注意:如果mysql是5.7.X版本的不需要target-dir指定路径,8.0.X版本的需要target-dir指定路径。
5.7.X版本 /usr/software/percona-xtrabackup-2.4.7-Linux-x86_64/bin/innobackupex --defaults-file=/etc/my.cnf --apply-log /usr/software/soft/data
8.0.X版本 /usr/software/percona-xtrabackup-2.4.7-Linux-x86_64/bin/innobackupex --defaults-file=/etc/my.cnf --apply-log --target-dir=/usr/software/soft/data


5. 配置同步
cat /usr/software/soft/data/xtrabackup_info |grep binlog_pos


change master to
master_host='192.168.188.100',
master_port=3306,
master_user='root',
master_password='shc537600',
master_log_file='mysql-bin.000017',
master_log_pos=617


此次基于xtrabackup的mysql主从同步搭建的实验经过了多次验证。

本文作者:刘 能(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




