原文转自:https://www.cnblogs.com/itzgr/p/10233932.html
作者:木二

目录

  • 一 基础环境
  • 二 新增slave2方案
    • 2.1 方案1:-复制主库
    • 2.2 方案2:复制从库
    • 2.3 方案对比
  • 二 新增slave2
    • 2.1 部署主从
    • 2.2 slave-02安装MySQL
    • 2.2 初始化MySQL
  • 三 方案1形式
    • 3.1 锁定主库
    • 3.2 备份主库
    • 3.3 解锁主库
    • 3.4 传递备份文件至slave02
    • 3.5 主库继续新建数据库
    • 3.6 备库slave02开启主从复制
    • 3.7 备库slave02恢复mysqltest
    • 3.8 备库slave02开启主从复制
    • 3.9 验证数据
  • 四 方案2形式
    • 4.1 停止slave01主从复制
    • 4.2 备份slave01数据库
    • 4.3 传递备份文件至slave02
    • 4.4 主库继续新建数据库
    • 4.5 备库slave02开启主从复制
    • 4.6 备库slave02恢复mysqltest
    • 4.7 备库slave02开启主从复制
    • 4.9 验证数据

一 基础环境

主机名
系统版本
MySQL版本
主机IP
master
CentOS 6.8
MySQL 5.6
172.24.8.10
slave01
CentOS 6.8
MySQL 5.6
172.24.8.11
slave02
CentOS 6.8
MySQL 5.6
172.24.8.20

二 新增slave2方案

2.1 方案1:-复制主库

复制主库要步骤:
  1. 将内存中的数据同步到表中;
  2. 锁定表,不让出现新数据;
  3. 备份;
  4. 解锁;
  5. 将备份传送到slave02,在slave02上同步数据;
  6. slave2上设置相应的master_log_file和master-log_pos。

2.2 方案2:复制从库

  1. 停止从库slave01:mysql> stop slave;
  2. 看当前从库的状态,mysql> show slave status;记下 Relay_Master_Log_file 和 Exec_Master_Log_Pos;
  3. 备份从库数据
  4. 将备份传送到slave02,在slave2上同步数据;
  5. slave02上设置相应的master_log_file和master-log_pos。
注意:此方案中master_log_file和master-log_pos也和slave中一样,指向主库。

2.3 方案对比

从主库复制会造成主库Master一定时间段锁表,这段时间会影响主库的使用。直接从从库进行复制,就不会对主库产生影响了。
但是,从从库复制要保证的是复制过程中从库上的数据不会发生变化,所以要先停掉从库。

二 新增slave2

2.1 部署主从

略,参考《002.MySQL高可用主从复制部署》。

2.2 slave-02安装MySQL

  1 [root@Slave02 ~]# yum list installed | grep mysql	#查看是否存在其他MySQL组件
2 [root@Slave02 ~]# yum -y remove mysql-libs.x86_64 #为避免冲突引发报错,卸载已存在的组件
3 [root@Slave02 ~]# wget http://mirrors.ustc.edu.cn/mysql-repo/mysql-community-release-el6-5.noarch.rpm
4 [root@Slave02 ~]# rpm -ivh mysql-community-release-el6-5.noarch.rpm
5 [root@Slave02 ~]# yum install mysql-community-server -y
6 [root@Slave02 ~]# chkconfig --list | grep mysqld #查看MySQL是否加入启动项
7 [root@Slave02 ~]# chkconfig mysqld on
 

2.2 初始化MySQL

  1 [root@Master ~]# service mysqld start
2 [root@Master ~]# mysql_secure_installation
3 [root@Master ~]# service iptables stop
4 [root@Master ~]# chkconfig iptables off
 
提示:建议采用yum localinstall下载到本地进行安装。

三 方案1形式

3.1 锁定主库

  1 [root@Master ~]# mysql -uroot -px120952576
2 mysql> flush tables with read lock; #锁定主库的表
3 mysql> show master status\G
 
File: mysql-bin.000003
Position: 12

3.2 备份主库

  1 [root@Master ~]# mysqldump -R -u root -p mysqltest >/tmp/mysqltest.sql
2 Enter password:
 

3.3 解锁主库

  1 [root@Master ~]# mysql -uroot -px120952576
2 mysql> unlock tables;
 

3.4 传递备份文件至slave02

  1 [root@Master ~]# scp /tmp/mysqltest.sql root@172.24.8.20:/tmp

3.5 主库继续新建数据库

在Master主服务器上继续创建库mysqltest02并插入相应数据:
  1 [root@Master ~]# mysql -uroot -p
2 Enter password:
3 mysql> create database mysqltest02;
4 mysql> use mysqltest02;
5 mysql> create table user02(id int(5),name char(10));
6 mysql> insert into user02 values (00002,'lisi');
7 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.%' identified by 'x12345678';
 
提示:主库继续创建新库用于验证slave02是否能正常复制,同时必须注意赋权给slave02。

3.6 备库slave02开启主从复制

  1 [root@Slave02 ~]# vi /etc/my.cnf
2 [mysqld]
3 server-id=3
4 log-bin=mysql-bin
5 relay_log=mysql-relay-bin
6 log_slave_updates=1
7 read_only=1
8 [root@Slave02 ~]# service mysqld restart
 
解释:
server_id:服务器的标识符,唯一值,不能跟从服务器重复
log-bin=mysql-bin:开启 binlog日志
relay_log:开启复制日志,relay-log日志记录的是在复制过程中,从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。

3.7 备库slave02恢复mysqltest

  1 [root@Slave02 ~]# mysql -uroot -px120952576
2 mysql> create database mysqltest;
3 mysql> use mysqltest;
4 mysql> source /tmp/mysqltest.sql;
5 mysql> select * from mysqltest.user; #查看验证
 

3.8 备库slave02开启主从复制

  1 [root@Slave02 ~]# mysql -uroot -px120952576
2 mysql> change master to master_host='172.24.8.10',
3 master_user='repl_user',
4 master_password='x12345678',
5 master_log_file='mysql-bin.000003',
6 master_log_pos=120;
7 mysql> start slave;
 
提示:
证常状态下,看到上面的两行加粗处,即Slave_IO_Running和Slave_SQL_Running的参数都为 Yes,就说明主从同步运行正常。

3.9 验证数据

  1 [root@Slave ~]# mysql -uroot -px120952576
2 [root@Slave02 ~]# mysql -uroot -px120952576
3 mysql> select * from mysqltest02.user02;
4 #两台slave上均验证master第二次创建的测试库是否正常复制过来。
 

四 方案2形式

4.1 停止slave01主从复制

  1 [root@Slave ~]# mysql -uroot -px120952576
2 mysql> stop slave;
3 mysql> show slave status\G
 
记录以下两项:
Relay_Master_Log_File: mysql-bin.000003
Exec_Master_Log_Pos: 932

4.2 备份slave01数据库

  1 [root@Slave01 ~]# mysqldump -R -u root -p mysqltest >/tmp/mysqltest.sql
2 Enter password:
 

4.3 传递备份文件至slave02

  1 [root@Slave01 ~]# scp /tmp/mysqltest.sql root@172.24.8.20:/tmp

4.4 主库继续新建数据库

在Master主服务器上继续创建库mysqltest02并插入相应数据:
  1 [root@Master ~]# mysql -uroot -p
2 Enter password:
3 mysql> create database mysqltest02;
4 mysql> use mysqltest02;
5 mysql> create table user02(id int(5),name char(10));
6 mysql> insert into user02 values (00002,'lisi');
7 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.%' identified by 'x12345678';
 
提示:主库继续创建新库用于验证slave02是否能正常复制,同时必须注意赋权给slave02。

4.5 备库slave02开启主从复制

参考3.6.

4.6 备库slave02恢复mysqltest

参考3.7.

4.7 备库slave02开启主从复制

  1 [root@Slave02 ~]# mysql -uroot -px120952576
2 mysql> change master to master_host='172.24.8.10',
3 master_user='repl_user',
4 master_password='x12345678',
5 master_log_file='mysql-bin.000003',
6 master_log_pos=932;
7 mysql> start slave;
 
提示:
证常状态下,看到上面的两行加粗处,即Slave_IO_Running和Slave_SQL_Running的参数都为 Yes,就说明主从同步运行正常。

4.9 验证数据

参考3.9.

MySQL高可用主从复制新增slave的更多相关文章

  1. 003.MySQL高可用主从复制新增slave

    一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...

  2. 002.MySQL高可用主从复制部署

    一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 17 ...

  3. 001.MySQL高可用主从复制简介

    一 简介 1.1 概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布在多个系统之上,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves ...

  4. MySQL高可用主从复制部署

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2. ...

  5. MySQL高可用主从复制简介

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 简介 1.1 概述 二 技术原理 2.1 支持的复制类型 2.2 技术特点 2 ...

  6. MySQL高可用方案MHA的部署和原理

    MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一 ...

  7. 33.MySQL高可用架构

    33.高可用架构33.1 MMM架构MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序(Perl).主要用来 ...

  8. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  9. [转载] MySQL高可用方案选型参考

    原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...

随机推荐

  1. [NOIp2017]宝藏 题解

    非常巧妙的 \(O(n^23^n)\) 做法. 题目的本质是要求一棵生成树,使得其每条边的长度与这条边的起点深度乘积的和最小. 我们使用状压 DP,考虑到当前状态与已经打通的点和深度有关,不妨设 \( ...

  2. 【洛谷P1816 忠诚】线段树

    题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨,财主还是对管家产生了 ...

  3. response 重定向

    背景: controller层需要重定向到其他html界面时,需要用如下代码 // 设置302状态码 response.setStatus(302); // 设置location响应头 respons ...

  4. odoo14里面的用户登录log记录

    一.继承userlog,添加字段 # -*- coding: utf-8 -*- from odoo import models, fields, api from odoo.http import ...

  5. create-react-app 创建的项目执行npm run eject后,运行报错

    create-react-app 创建的项目执行npm run eject后,运行报错:Cannot find module '@babel/plugin-transform-react-jsx-so ...

  6. cytoscape-d3-force api

    { animate:true,//是否在布局运行时显示布局:特殊的"结束"值使布局具有离散布局的动画效果 maxIterations:0,//布局退出前的最大迭代次数 maxSim ...

  7. 偷天换日 树形DP+背包

    A. 偷天换日 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较   题目描述 神偷对艺术馆内的名画垂涎欲滴准备大捞一把.艺术馆由若干个展览厅和若干 ...

  8. JAVA预科:Markdown基础语法

    JAVA预科:Markdown语法 什么是Markdown?Markdown是一种轻量级的「标记语言」,通常为程序员群体所用,目前它已是全球最大的技术分享网站 GitHub 和技术问答网站 Stack ...

  9. git从远程仓库里拉取一条本地不存在的分支

    查看远程分支和本地分支 git branch -va 当我想从远程仓库里拉取一条本地不存在的分支时: git checkout -b 本地分支名 origin/远程分支名 例如: 切换远程分支 git ...

  10. Java面向对象07——封装

    封装 (补充 this关键字):  package oop.demon01.demon03; ​ /*    封装的意义:        1. 提高程序的安全性,保护代码        2. 隐藏代码 ...