xtrabackup 在线主从搭建

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

一、数据库环境


数据库


数据库版本


外网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

二、准备安装包

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

三、安装

1.1、安装 xtrabackup 包

[[email protected]] #tar -xvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz

[[email protected] soft]# cd percona-xtrabackup-2.1.9-Linux-x86_64/

[[email protected] percona-xtrabackup-2.1.9-Linux-x86_64]# ls

bin  share

[[email protected] percona-xtrabackup-2.1.9-Linux-x86_64]# cd bin/

[[email protected] bin]# ls

innobackupex  innobackupex-1.5.1  xbcrypt  xbstream  xtrabackup  xtrabackup_55  xtrabackup_56

[[email protected] bin]# pwd

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

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

[[email protected] bin]# cp * /data/soft/mysql/bin/

[[email protected] 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 [email protected] identified by ‘xxxxx‘;

mysql>flush privileges;

3.1 开始全量备份

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

[[email protected] bin]# cat /etc/my.cnf

innodb_log_file_size = 5M

datadir=/data/mysql5

3.2 开始备份

[[email protected] soft]# export BKP_PASS="bkppass"

[[email protected] 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  把备份传到从库的服务器上

[[email protected] soft]# scp -r   2017-10-26_21-49-35   192.168.0.13:/data/soft

4、从库操作

4.1 全量恢复

[[email protected] 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 目录是空的,开始恢复数据

[[email protected] bin]# cat /etc/my.cnf

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

[[email protected] mysql5]#  /etc/init.d/mysqld stop

[[email protected] mysql5]# cd /data/mysql5/

[[email protected] mysql5]# rm -rf *

[[email protected] 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  修改数据的属组 属主

[[email protected] mysql5]# chown mysql:mysql  /data/mysql5 -R

4.4  启动数据库

[[email protected] mysql5]# /etc/init.d/mysqld start

Starting MySQL..                                           [确定]

[[email protected] mysql5]# mysql -uroot -pxxxxxx

5.1 、修改复制起始位置

[email protected] mysql5]# cd   /data/soft/2017-10-26_21-49-35/

[email protected] 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 [email protected]‘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 进行在线主从搭建施工完毕!

原文地址:https://www.cnblogs.com/lixinliang/p/8672462.html

时间: 2024-10-01 03:56:09

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

Centos6.7 Redis3.2.8的主从搭建

首先参看一下redis 3.2.8的安装 传送门:biubiubiu 飞去吧:http://www.cnblogs.com/bing-yu12/p/6582086.html 我的主从搭建: redis 主环境: centos 6.7 ip:192.168.184.3 redis 3.2.8 redis.conf的重要配置: bind 127.0.0.1选项后面加上192.168.184.3 让外部机器也可以访问该ip iptables规则清除 selinux关闭:setenforce 0 或者v

DNS主从搭建之解析

一.DNS定义 DNS是域名系统的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务. DNS命名用于TCP/IP网络中,通过用户友好的名称查找计算机和服务.当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相应的IP地址.监听于TCP/53端口.UDP/53端口. 二.DNS域名命名空间 DNS域名命名空间是具有层次行的,一般可分为根域.顶级域.二级域.子域以及主机名, 如图: 三.DNS服务器类型    1.主DNS 服务器 当DNS服务器管理主要区域时,它被称为主D

简单的mysql主从搭建及恢复

mysql主从搭建: 怎么安装mysql数据库,这里不讲,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修改主服务器master:   #vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志       server-id=1       //[必须]服务器唯一ID 3.修改从服务器slave:  

Mysql 主从搭建

Mysql  主从搭建 操作系统: [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) Master(主):192.168.137.32 Slave (从) :192.168.137.33 第一步:在CentOS6.x下安装MySQL数据库 这里我直接用脚本安装mysql5.7的 vim auto_install_mysql.sh #!/bin/bash yum install  -y  wget w

Centos 7.1 Bind主从搭建

Centos 7.1  Bind主从搭建 ########################################################################## 概览 DNS简单描述 1.环境准备 2.配置主DNS服务器 2.1. 主要配置文件 2.2. 配置/etc/named.conf 2.3. 配置/etc/named.rfc1912.zones 2.4. 配置/var/named/数据库文件 2.5 启动服务以及测试 3. 配置从dns服务器 3.1. 主D

mysql主从搭建详细步骤

一 .系统环境:Centos 6.5 MySQL版本:mysql-5.5.25a Master:192.168.4.9 Slave :192.168.4.10 二.主从配置需要注意的点 主从服务器操作系统版本尽量保持一致 Master和Slave版本要一致 Slave导入的Master备份数据要完整 Master开启了二进制日志 Slave开启了中继日志 Master和Slave  server_id值,唯一 三.主从配置步骤 Master配置 查看server-id是否唯一 建立主从授权用户

rsync+inotify 实现中福在线平台搭建双向实时同步

中福在线平台搭建论坛:haozbbs.com Q1446595067 安装rsync #yum install -y xinetd #yum install -y rsync #vim /etc/xinetd.d/rsync 启动XINETD #service xinetd startStarting xinetd: [ OK ] #chkconfig xinetd on #netstat -tlunp |grep 873 查看端口 tcp 0 0 :::873 :::* LISTEN 8831

数据库主从搭建

数据库主从搭建 为什么要搭建数据库主从,因为一个项目一般都是读的操作比写的操作多很多,所以搭建主从,实现读写分离,减轻数据库压力. 2.1 主从同步原理 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到slave; 3) slave有一个I/O线程把master发送的二进制写入到relay日志里面: 4)slave有一个SQL线程,按照relay日志处理slave的数据: 2.2 注意点 1 咱们用docker

docker部署django项目、mysql主从搭建、django实现读写分离

目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dockerfile 2 mysql主从搭建 3 django实现读写分离 我们使用python镜像源构建的出的容器,是一个纯净的debian系统下的python环境,在容器内部要想安装vim.nginx等,就不能使用yum install ...了,需要使用apt-get源.首先更新apt-get源,使用