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

一 基础环境


主机名

系统版本

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

2.2 初始化MySQL

  1 [[email protected] ~]# service mysqld start
  2 [[email protected] ~]# mysql_secure_installation
  3 [[email protected] ~]# service iptables stop
  4 [[email protected] ~]# chkconfig iptables off

提示:建议采用yum localinstall下载到本地进行安装。

三 方案1形式

3.1 锁定主库

  1 [[email protected] ~]# 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 [[email protected] ~]# mysqldump -R -u root -p mysqltest >/tmp/mysqltest.sql
  2 Enter password:

3.3 解锁主库

  1 [[email protected] ~]# mysql -uroot -px120952576
  2 mysql> unlock tables;

3.4 传递备份文件至slave02

  1 [[email protected] ~]# scp /tmp/mysqltest.sql [email protected]:/tmp

3.5 主库继续新建数据库

在Master主服务器上继续创建库mysqltest02并插入相应数据:

  1 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# service mysqld restart

解释:

server_id:服务器的标识符,唯一值,不能跟从服务器重复

log-bin=mysql-bin:开启 binlog日志

relay_log:开启复制日志,relay-log日志记录的是在复制过程中,从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。

3.7 备库slave02恢复mysqltest

  1 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# mysql -uroot -px120952576
  2 [[email protected] ~]# mysql -uroot -px120952576
  3 mysql> select * from mysqltest02.user02;
  4 #两台slave上均验证master第二次创建的测试库是否正常复制过来。

四 方案2形式

4.1 停止slave01主从复制

  1 [[email protected] ~]# 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 [[email protected] ~]# mysqldump -R -u root -p mysqltest >/tmp/mysqltest.sql
  2 Enter password:

4.3 传递备份文件至slave02

  1 [[email protected] ~]# scp /tmp/mysqltest.sql [email protected]:/tmp

4.4 主库继续新建数据库

在Master主服务器上继续创建库mysqltest02并插入相应数据:

  1 [[email protected] ~]# 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 [[email protected] ~]# 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.

原文地址:https://www.cnblogs.com/itzgr/p/9908474.html

时间: 2024-08-30 13:51:00

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

MySQL高可用主从复制新增slave

目录 一 基础环境 二 新增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 验

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

一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 172.24.8.11 二 实际部署 2.1 安装MySQL 1 [[email protected] ~]# yum list installed | grep mysql #查看是否存在其他MySQL组件 2 [[email protected] ~]# yum -y remove mysql-li

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

一 简介 1.1 概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布在多个系统之上,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从

MySQL高可用主从复制部署

目录 一 基础环境 二 实际部署 2.1 安装MySQL 2.2 初始化MySQL 2.3 master my.cf配置 2.4 创建账号 2.5 slave my.cf配置 2.6 启动slave 2.7 手动同步 三 启动主从 3.1 Slave启动主从服务 3.2 验证主从 一 基础环境 主机名 系统版本 MySQL版本 主机IP master CentOS 6.8 MySQL 5.6 172.24.8.10 slave01 CentOS 6.8 MySQL 5.6 172.24.8.11

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

通过MMM构建MYSQL高可用集群系统

本文为南非蚂蚁的书籍<循序渐进linux-第二版>-8.4的读笔记 MMM集群套件(MYSQL主主复制管理器) MMM套件主要的功能是通过下面三个脚本实现的 1)mmm_mond 这是一个监控进程,运行在管理节点上,主要负责都所有数据库的监控工作,同时决定和处理所有节点的角色切换 2)mmm_agentd 这是一个代理进程,运行在每个MYSQL服务器上,主要完成监控的测试工作以及执行简单的远端服务设置 3)mmm_control 简单的管理脚本,用来查看和管理集群运行状态,同事管理mmm_mo

mysql高可用双主+keepalived

Mysql双主复制 实验拓扑:sql1  192.168.10.1   server id 1 vip 192.168.10.100 Sql2  192.168.10.2   server id 2 vip 192.168.10.100 客户端 192.168.10.3 Sql1配置双主 主库配置:vim /etc/my.cnf Log-bin=mysql-bin    //打开二进制日志 Server-id=1 Service mysqld start   //重启mysql进程 登录到mys

MySQL-MMM实现MySQL高可用读写分离

1.实验环境 1.1.实验拓扑 1.2.主机配置环境说明 主机名 IP地址 角色/用途 MySQL Server_ID master1 192.168.80.101 MySQL主节点,可读写操作 11 master2 192.168.80.102 MySQL备节点,可读写操作 12 slave1 192.168.80.103 MySQL从节点,仅能读 13 slave2 192.168.80.104 MySQL从节点,仅能读 14 monitor 192.168.80.105 MMM管理端 无