因为意外导致某个MySQL的从服务器宕机,且不可修复,因为是业务数据库,不能停机和锁表进行从库的搭建,所以考虑了使用xtrabackup 进行在线主从搭建。

一、数据库环境

注意:  主从搭建主库一定要开binlog 日志;     
             log-bin=mysql-bin        否则无法进行

数据库

数据库版本

外网IP

内网IP

同步用户

备份目录

主库

MYSQL-5.6.7

211.147.1.202

192.168.0.123

rep

从库

MYSQL-5.6.7

211.147.1.202

192.168.0.13

二、准备安装包

wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/binary/Linux/x86_64/percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz

yum install perl-DBI

yum install perl-DBD-MySQL

yum install perl-Time-HiRes

yum install perl-lO-Socket-SSL

yum -y install perl-Digest-MD5

yum install libaio

三、安装

1.1、安装 xtrabackup 包

[root@localhost] #tar -xvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz

[root@localhost soft]# cd percona-xtrabackup-2.1.9-Linux-x86_64/

[root@localhost percona-xtrabackup-2.1.9-Linux-x86_64]# ls

bin  share

[root@localhost percona-xtrabackup-2.1.9-Linux-x86_64]# cd bin/

[root@localhost bin]# ls

innobackupex  innobackupex-1.5.1  xbcrypt  xbstream  xtrabackup  xtrabackup_55  xtrabackup_56

[root@localhost bin]# pwd

/data/soft/percona-xtrabackup-2.1.9-Linux-x86_64/bin

1.2、将innobackupex,xtrabackup等文件拷贝到*/mysql/bin 的目录下

[root@localhost bin]# cp * /data/soft/mysql/bin/

[root@localhost bin]# ln -s /data/soft/mysql/bin/* /usr/bin/

主从环境都要搭建到此位置。

2、数据库 创建复制用户和备份用户

2.1 在主库上创建备份用户

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';

mysql>  FLUSH PRIVILEGES;

2.2在主库上创建复制用户

mysql>grant replication slave,reload,super on  *.* to rep@192.168.0.13 identified by 'xxxxx';

mysql>flush privileges;

3.1 开始全量备份

需要修改下配置文件,但是不需要重启;加上以下俩个参数,否则在备份时候会报错。主从都要添加两行参数。

[root@localhost bin]# cat /etc/my.cnf

innodb_log_file_size = 5M

datadir=/data/mysql5

3.2 开始备份

[root@localhost soft]# export BKP_PASS="bkppass"

[root@localhost soft]# innobackupex --defaults-file=/etc/my.cnf --host='localhost' --port=3306 --user=bkpuser --password=${BKP_PASS}   /data/soft/(备份位置)

备份成功显示如下字样:

171024 09:07:45  innobackupex: Connection to database server closed

171024 09:07:45  innobackupex: completed OK!

3.3  把备份传到从库的服务器上

[root@localhost soft]# scp -r   2017-10-26_21-49-35   192.168.0.13:/data/soft

4、从库操作

4.1 全量恢复

[root@localhost soft]#  innobackupex --use-memory=2G --apply-log  /data/soft/2017-10-26_21-49-35/

成功显示如下字样

171024 17:11:04  innobackupex: completed OK!

4.2  确认从库的是关闭的(停掉从库),datadir 目录是空的,开始恢复数据

[root@localhost bin]# cat /etc/my.cnf

server-id = 2       #不要和主库的重复

[root@localhost mysql5]#  /etc/init.d/mysqld stop

[root@localhost mysql5]# cd /data/mysql5/

[root@localhost mysql5]# rm -rf *

[root@localhost mysql5]#  innobackupex  --defaults-file=/etc/my.cnf --copy-back    /data/soft/2017-10-26_21-49-35/

71024 17:13:09  innobackupex: completed OK!

4.3  修改数据的属组 属主

[root@localhost mysql5]# chown mysql:mysql  /data/mysql5 -R

4.4  启动数据库

[root@localhost mysql5]# /etc/init.d/mysqld start

Starting MySQL..                                           [确定]

[root@localhost mysql5]# mysql -uroot -pxxxxxx

5.1 、修改复制起始位置

root@localhost mysql5]# cd   /data/soft/2017-10-26_21-49-35/

root@localhost mysql5]#   cat xtrabackup_binlog_info

mysql-bin.000002    532     (记住文件偏移量和位置)

mysql> change master to master_host='192.168.0.123',master_user='rep',master_password='xxxxxx',master_log_file='mysql-bin.000002',master_log_pos=532;

Query OK, 0 rows affected, 2 warnings (0.23 sec)

5.2  查看从库同步状态

mysql>  show slave status\G

*************************** 1. row ***************************

Slave_IO_State:

Master_Host: 192.168.20.3

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 1390

Relay_Log_File: localhost-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: No

Slave_SQL_Running: No

注意:要在主库赋予新的从库复制权限

在主库上执行:

mysql> grant all privileges on *.* to rep@'192.168.0.13' identified by 'xxxxxx';

在从库上开启复制进程:

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.20.3

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 1390

Relay_Log_File: localhost-relay-bin.000002

Relay_Log_Pos: 267

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

1 row in set (0.00 sec)

6、施工后校验

1: 主库新建测试表rep_test,并在从库查看是否创建成功

【MASTER】

#mysql -u root -p****** -h127.0.0.1

mysql>use laclocal;

mysql>create table rep_test (id int,name varchar(20));

【SLAVE】

#mysql -u root -p******

mysql>use laclocal;

mysql>show create table rep_test;

2: 主库对rep_test测试表进行增删改查测试,并在从库查看该表是否进行了相应的改动

3: 主库对rep_test进行删除表操作,并在从库查看是否删除成功

【MASTER】

#mysql -u root -p******

mysql>use laclocal;

mysql>drop table rep_test;

【SLAVE】

#mysql -u root -p******

mysql>use laclocal;

mysql>show columns from rep_test;

7、基于  xtrabackup 进行在线主从搭建施工完毕!

xtrabackup 在线主从搭建的更多相关文章

  1. 基于xtrabackup的主从同步

    基于xtrabackup的主从同步 作者 刘畅 时间 2020-9-21 服务器版本:CentOS Linux release 7.5.1804 主机名 ip地址 服务器配置 安装软件 密码 mysq ...

  2. ### MySQL主从搭建Position

    一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...

  3. mysql 主从搭建步骤

    mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...

  4. Redis多实例及主从搭建

    主从搭建前提是服务器上已经安装好了redis, redis安装可搜索本站另一篇博客:redis安装. redis单主机多实例 一.我们首先拷贝两份文件: cp /etc/redis.conf /etc ...

  5. mongodb主从搭建

    #tigergao 官网进行下包,可以下载源码包或者二进制包,本次下载的为二进制包,进行试验. 主服务器搭建: mkdir mongomaster cp mongodb-linux-x86_64-rh ...

  6. SQL Server、MySQL主从搭建,EF Core读写分离代码实现

    一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...

  7. xtrabackup在线迁移mysql并搭建为主主同步

    一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...

  8. xtrabackup在线备份主库,搭建slave,使用gtid模式

    mysql:5.6.29xtrabackup:2.2.10master:192.168.166.129slave:192.168.166.131mysql数据目录:/data/mysqlmysql备份 ...

  9. mysql之 mysql 5.6不停机主从搭建(一主一从)

    环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...

随机推荐

  1. UOJ176 新年的繁荣

    题目链接 Boruvka生成树算法 \(Boruvka\)算法就是先把每个点看作一个联通块,然后不断在联通块之间找最优的边进行合并.因为每次联通块的数量最少缩小一半.所以合并次数是\(log\)的 先 ...

  2. gethostbyname(domain) 老是返回 NULL, 凌乱了

    struct hostent *h = gethostbyname(pDomain); 今天在写一个下载网上文件到本地的小程序,在测试时发现 gethostbyname()老是返回NULL. 解析不了 ...

  3. php 在服务器端开启错误日志记录方法

    修改php.ini设置,或者通过方法 ini_set设置以下项即可 1.打开error_reporting设置: 如 error_reporting= E_ALL 2.  log_errors=On ...

  4. python字节(bytes)

    在 3.x 中,字符串和二进制数据完全区分开.文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示.Python 3 不会以任意隐式的方式混用 str 和 bytes, ...

  5. qml: 组件复用

    在编写组件时,使用下面两种方法可以实现组件的复用: import QtQuick 2.0 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 a ...

  6. day14-jdbc案例(简单的curd&分页)

    回顾: mvc jsp的设计模式1: jsp+javabean jsp的设计模式2: jsp+javabean+servlet jsp:展示数据 javabean:封装数据 封装对数据的访问 serv ...

  7. python3 aes加解密

    # encoding: utf-8 import xlrd import os import yaml import logging.config from Crypto.Cipher import ...

  8. springboot定时任务处理

    定时任务是一种很常见的应用场景,springboot中的定时任务完全用的spring的那一套,用起来比较简单,需要注意的是线程池配置的那一块 使用 @EnableScheduling 注解就可以开启定 ...

  9. python静态方法和类方法

    静态方法和类方法在python2.2中被引用,经典类和新式类都可以使用.同时,一对内建函数:staticmethod和classmethod被引入,用来转化类中某一方法为这两种方法之一. 静态方法: ...

  10. Docker笔记一:Docker介绍

    目录 什么是Docker? Docker的核心概念 Docker镜像命令 Docker容器命令 Docker实战 查看我的镜像 启动Redis Docker中国镜像加速 血与泪的教训 什么是Docke ...