xtrabackup 在线主从搭建
因为意外导致某个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 在线主从搭建的更多相关文章
- 基于xtrabackup的主从同步
基于xtrabackup的主从同步 作者 刘畅 时间 2020-9-21 服务器版本:CentOS Linux release 7.5.1804 主机名 ip地址 服务器配置 安装软件 密码 mysq ...
- ### MySQL主从搭建Position
一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...
- mysql 主从搭建步骤
mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...
- Redis多实例及主从搭建
主从搭建前提是服务器上已经安装好了redis, redis安装可搜索本站另一篇博客:redis安装. redis单主机多实例 一.我们首先拷贝两份文件: cp /etc/redis.conf /etc ...
- mongodb主从搭建
#tigergao 官网进行下包,可以下载源码包或者二进制包,本次下载的为二进制包,进行试验. 主服务器搭建: mkdir mongomaster cp mongodb-linux-x86_64-rh ...
- SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...
- xtrabackup在线迁移mysql并搭建为主主同步
一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...
- xtrabackup在线备份主库,搭建slave,使用gtid模式
mysql:5.6.29xtrabackup:2.2.10master:192.168.166.129slave:192.168.166.131mysql数据目录:/data/mysqlmysql备份 ...
- mysql之 mysql 5.6不停机主从搭建(一主一从)
环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...
随机推荐
- iview表单验证下拉框不通过问题
iview表单验证的步骤: 第一步:给 Form 设置属性 rules :rules 第二步:同时给需要验证的每个 FormItem 设置属性 prop 指向对应字段即可 prop=”“ 第三步:注意 ...
- 【UOJ 351】新年的叶子
http://uoj.ac/problem/351 其实原来看到这题是真的不想做的 毕竟真的特别怕期望题 后来莫名发现自己打了正解 也是很震惊的2333 Description 对于一棵树,每次随 ...
- 洛谷P4316 绿豆蛙的归宿
一眼看去,这不是高斯消元吗? 然后发现数据范围是100000... 然后发现是DAG...直接拓扑序递推即可. 边(x, y,z)的贡献是P(x) * z / out[x] #include < ...
- BZOJ2940 条纹
条纹游戏是一个双人的游戏.所需要的物品有一个棋盘以及三种颜色的长方形条纹,这三种颜色分别是红色.绿色和蓝色.所有的红色条纹的尺寸是c*1,所有的绿色条纹的尺寸是z*1,所有的蓝色条纹的尺寸是n*1,这 ...
- vue-cli+webpack在生成的项目中使用bootstrap的方法
在一个html页面中加入bootstrap是很方便,就是一般的将css和js文件通过Link和Script标签就行.那么在一个用vue-vli生成的前端项目中如何加入?因为框架不一样了,略微要适应一下 ...
- 用Jdbc连接数据库后实现增删改查功能
增删改用的都是executeUpdate()方法: 查用的是executeQuery()方法 package cn.lideng.dbc; import java.lang.management.Ma ...
- 根据指定的key,将二维数组的value转换为string,适用于mysql的in查询
function array_unique_join($arr,$param){ $utm_source_arr = array_unique(array_column($arr,$param)); ...
- 10款Mac上程序员装机必备的开发工具推荐和下载
10款Mac上程序员装机必备的开发工具推荐和下载 使用Mac的用户主要有两大类:设计师和程序员,为各位程序员童鞋推荐10个Mac上非常棒的开发工具和辅助工具,分享软件专题[10款Mac上程序员装机必备 ...
- 流畅的python--python数据模型
python最好的品质之一就是一致性.初步接触python可能会len(collection)而不是collection.len()觉得不适应,这是通常所说的“python风格”(Pythonic)的 ...
- python Bootstarp框架和inconfont、font-awesome使用
http://www.bootcss.com/ http://www.runoob.com/bootstrap/bootstrap-panels.html 查找基本的没问题 https://www. ...