MySQL数据库主从复制从库重做步骤
mysql数据库主从复制再生产环境中,可能由于某些人为操作的原因,需要重做从库,以下对从库重做的步骤做一下记录~~
备份主库
本次采用MySQL数据库热备份工具xtrabackup进行。压缩备份用到的工具是pigz 进行压缩
#MySQL数据库版本:mysql-5.7.23
#xtrabackup备份工具版本:xtrabackup-2.4.12
#pigz压缩工具版本:pigz-2.3.4
非压缩备份
nohup $XTRABACKUP_HOME/bin/innobackupex --defaults-file=/etc/my.cfg --user=root --password=xxxxxx --socket=/etc/mysql/mysql.sock /usr/local/mysql > /usr/local/mysql/backup.log 2>&1 &
#nohup & 后台运行备份命令
#--defaults-file MySQL数据库配置文件路径
#--user 备份主库使用的用户
#--password 备份主库用户的密码
#--socket 本地备份套接字文件路径(mysql.sock)
#/usr/local/mysql 备份文件存放的路径
#/usr/local/mysql/backup.log 备份过程中的日志,可查看备份的执行情况
#2>&1 将标准错误重定向到标准输出
压缩备份
这里的压缩备份直接将备份后的文件发送到目标主机上$remote_host
nohup $XTRABACKUP_HOME/bin/innobackupex --defaults-file=/etc/my.cfg --parallel=4 --user=root --password=xxxxxx --socket=/etc/mysql/mysql.sock --slave-info --no-timestamp --stream=tar /usr/local/mysql 2> /usr/local/mysql/backup.log | /iddbs/software/pigz-2.3.4/pigz -6 -p 4 | ssh $remote_host"cat - > /iddbs/tmp/backup.tar.gz" &
#nohup & 后台运行备份命令
#--defaults-file MySQL数据库配置文件路径
#--parallel 指定并行备份的线程数量
#--user 备份主库使用的用户
#--password 备份主库用户的密码
#--socket 本地备份套接字文件路径(mysql.sock)
#--slave-info 该参数会在备份目录下生成xtrabackup_slave_info文件,文件记录主库的binlog日志位置点。在进行数据库恢复,搭建多从库时都需要这个文件。
#--stream=tar 备份是采用的压缩方式
#/usr/local/mysql 备份文件存放的路径
#/usr/local/mysql/backup.log 备份过程中的日志,可查看备份的执行情况
#pigz -6 -p 4 -6表示压缩级别,-p表示压缩核心数
#2>&1 将标准错误重定向到标准输出
停止从库MySQL服务
-
先停止slave
stop slave;
-
停止MySQL服务
$MYSQL_HOME/bin/mysqlamdin --socket=/etc/mysql/mysql.sock -uroot -pxxxxxx shutdown
恢复数据
恢复数据的时候,必须保证mysql数据库配置文件中datadir参数值存在且目录下为空,在进行数据恢复过程中,xtrabackup会自动将数据恢复到datadir参数值所在的目录下。
启动数据库的时候,必须保证server-id唯一。
回滚日志
将主库备份好的压缩文件进行解压后执行:
nohup $XTRABACKUP_HOME/bin/innobackupex --defaults-file=/etc/my.cfg --use-memory=8G --apply-log '压缩文件' >/tmp/apply3306.log 2>&1 &
数据恢复
nohup $XTRABACKUP_HOME/bin/innobackupex --defaults-file=/etc/my.cfg --use-memory=8G --copy-back '压缩文件' >/tmp/apply3306.log 2>&1 &
从做重库
启动数据库
$MYSQL_HOME/bin/mysqld_safe --defaults-file=/etc/my.cfg &
从库上执行:
-
reset master
-
reset slave
-
set global gtid_purged=
cat /usr/local/mysql/backup/xtrabackup_binlog_info
/usr/local/mysql/backup为压缩文件解压后的路径,可根据实际情况更改
在执行set global gtid_purged之前,必须执行reset master、stop slave、reset slave,否则会报错。
设置从库指向主库,执行
CHANGE MASTER TO MASTER_HOST='主库IP',MASTER_PORT=mysql服务端口,MASTER_USER='主从复制账号',MASTER_PASSWORD='用户密码',MASTER_AUTO_POSITION=1;
启动slave
start slave
查看slave状态
show slave statsu\G