暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Mysql基于xtrabackup主从同步搭建

IT那活儿 2023-02-10
1637

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




前言



1. mysql主从背景

搭建mysql主从的目的是让一台mysql作为主数据库,一台或多台mysql作为从数据库,主数据库只负责数据的写入,从数据库只负责数据的查询(读写分离),且主从数据库是实时同步的,这样就可以减轻单个数据库压力,从而提高项目的并发量。搭建主从可通过xtrabackup工具热备份方式实现,下面是搭建的步骤方案。

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密码

如有slave密码则不要需要修改。
先切换到root用户:sudo su - root
进入数据库:mysql -uroot -p
进入到mysql库:use mysql;
修改slave密码。
alter user 'slave'@'192.168.188.%' identified by '123456';

2. 编写备份脚本

根据实际情况选择备份脚本目录:
cd /usr/software/mysqlbak/scripts
创建备份脚本:vi mysql_bak.sh
#!/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. 备份并传输

执行脚本:sh mysql_bak.sh
cd /usr/software/mysqlbak
使用scp命令传输备份:
scp usr/software/mysqlbak/192.168.188.100_20221213_3306.tar.gz 
root@192.168.188.101:/usr/software/soft/

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




从库还原数据步骤



1. 停库

切换到root用户下:sudo su - root
停库:service mysqld stop
查看进程确保mysql以停ps -ef |grep mysqld。

2. 备份数据目录

创建一个文件夹存放原数据data下的文件:
mkdir -p usr/software/soft/data_bak

3. 解压备份

切换到数据库目录下:cd usr/software/soft/
mv 192.168.188.100_20221213_3306.tar.gz usr/software/soft/data
解压备份文件压缩包:
tar -zxvf 192.168.188.100_20221213_3306.tar.gz

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
登录数据库:mysql -uroot -p;
查看master节点:show master status\G;
查看主从情况:show slave status\G;
删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件:reset master;
先停止复制的操作:stop slave;
使slave 忘记主从复制关系的位置信息:reset slave;
配置同步:
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

重启slave:
查看主从状态:show slave status\G。




总  结



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

需要注意的是目前mysql8.0.31版本的数据库目前还没有推出符合的xtrabackup版本,不能使用xtrabackup工具进行数据备份。主从同步搭建不能跨mysql的大版本,尽量选择同意版本,版本不同可能带来配置错误。

END


本文作者:刘 能(上海新炬中北团队)

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

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

评论