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

目录

  • 一 基础环境
  • 二 实际部署
    • 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

二 实际部署

2.1 安装MySQL

  1 [root@Master ~]# yum list installed | grep mysql	#查看是否存在其他MySQL组件
2 [root@Master ~]# yum -y remove mysql-libs.x86_64 #为避免冲突引发报错,卸载已存在的组件
3 [root@Master ~]# wget http://repo.mysql.com/mysql-community-release-el6-7.noarch.rpm
4 [root@Master ~]# rpm -ivh mysql-community-release-el6-7.noarch.rpm
5 [root@Master ~]# yum install mysql-community-server -y
6 [root@Master ~]# chkconfig --list | grep mysqld #查看MySQL是否加入启动项
7 [root@Master ~]# 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
5 [root@Master ~]# vi /etc/sysconfig/selinux
6 SELINUX=disabled
 
注意:以上操作在Slave主机上也需要执行。

2.3 master my.cf配置

  1 [root@Master ~]# vi /etc/my.cnf
2 [mysqld]
3 ……
4 server-id=1 #设置主服务器master的id
5 log-bin=mysql-bin #配置二进制变更日志命名格式
 
注意:
master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:
  1 # 不同步哪些数据库
2 binlog-ignore-db = mysql
3 binlog-ignore-db = test
4 binlog-ignore-db = information_schema
5 # 只同步哪些数据库,除此之外,其他不同步
6 binlog-do-db = mysqltest
 

2.4 创建账号

  1 [root@Master ~]# mysql -uroot -p
2 Enter password:
3 mysql> grant replication slave on *.* to 'repl_user'@'172.24.8.11' identified by 'x12345678';
4 mysql> flush privileges;
5 [root@Master ~]# service mysqld restart
6 [root@Master ~]# mysql -uroot -p
7 Enter password:
8 mysql> show master status;
 
file:mysql-bin.000001
position:120

2.5 slave my.cf配置

  1 [root@Master ~]# vi /etc/my.cnf
2 [mysqld]
3 server-id=2 #设置从服务器slave的id
4 log-bin=mysql-bin #如果此slave是其他slave的master,则此项也必须开启
5 relay_log=mysql-relay-bin #配置二进制relay日志命名格式
6 log_slave_updates=1 #表示slave将复制事件写进自己的二进制日志
7 read_only=1
 

2.6 启动slave

  1 [root@Slave01 ~]# service mysqld restart
2 [root@Slave01 ~]# mysql -uroot -p
3 Enter password:
4 mysql> change master to master_host='172.24.8.10',
5 -> master_user='repl_user',
6 -> master_password='x12345678',
7 -> master_log_file='mysql-bin.000001',
8 -> master_log_pos=120;
9 mysql> show slave status\G #查看slave状态
10 ……
11 Slave_IO_State:
12 Master_Host: 172.24.8.10
13 Master_User: repl_user
14 Master_Port: 3306
15 Connect_Retry: 60
16 Master_Log_File: mysql-bin.000001
17 Read_Master_Log_Pos: 120
18 Relay_Log_File: =mysql-relay-bin.000001
19 Relay_Log_Pos: 4
20 Relay_Master_Log_File: mysql-bin.000001
21 Slave_IO_Running: No
22 Slave_SQL_Running: No
23 ……
24 Exec_Master_Log_Pos: 120
25 Relay_Log_Space: 120
26 ……
27 Seconds_Behind_Master: NULL
28 Master_SSL_Verify_Server_Cert: No
29 Master_Info_File: /var/lib/mysql/master.info
30 SQL_Delay: 0
31 SQL_Remaining_Delay: NULL
32 Slave_SQL_Running_State:
33 Master_Retry_Count: 86400
34 ……
 
提示:
Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running是No,表明slave还没有开始复制过程。

2.7 手动同步

如果Master已经存在数据,则在开启主备复制之前,需要将Master和Slave手动同步一次(/var/lib/mysql整个目录打包tar.gz),具体方法参考《004.MySQL主库手动复制至从库》。
注意:本实验都是重新安装的MySQL,可直接启动同步。

三 启动主从

3.1 Slave启动主从服务

  1 [root@Slave01 ~]# service mysqld restart
2 [root@Slave01 ~]# mysql -uroot -p
3 Enter password:
4 mysql> start slave;
5 mysql> show slave status\G #查看slave状态
6 ……
7 Slave_IO_State: Waiting for master to send event
8 Master_Host: 172.24.8.10
9 Master_User: repl_user
10 Master_Port: 3306
11 Connect_Retry: 60
12 Master_Log_File: mysql-bin.000001
13 Read_Master_Log_Pos: 120
14 Relay_Log_File: =mysql-relay-bin.000001
15 Relay_Log_Pos: 283
16 Relay_Master_Log_File: mysql-bin.000002
17 Slave_IO_Running: YES
18 Slave_SQL_Running: YES
19 ……
20 Exec_Master_Log_Pos: 120
21 Relay_Log_Space: 120
22 ……
23 Master_Info_File: /var/lib/mysql/master.info
 
提示:
slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。

3.2 验证主从

在Master主服务器上创建库并插入相应数据:
  1 [root@Master ~]# mysql -uroot -p
2 Enter password:
3 mysql> create database mysqltest;
4 mysql> use mysqltest;
5 mysql> create table user(id int(5),name char(10));
6 mysql> insert into user values (00001,'zhangsan');
7 在Slave从服务器上进行验证:
8 [root@Master ~]# mysql -uroot -p
9 Enter password:
10 mysql> show databases;
11 mysql> select * from mysqltest.user;
 
结论:
从上图中的结果,我们可以看到mysql主从复制已经在起作用了,我们在主数据库中写入的数据已经复制到我们的从数据库中了。
提示:
若出现以下报错:
可尝试重启slave:
  1 mysql> reset slave;

MySQL高可用主从复制部署的更多相关文章

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

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

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

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

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

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 基础环境 二 新增slave2方案 2.1 方案1:-复制主库 2.2 方案2 ...

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

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

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

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

  6. MySQL高可用方案-PXC环境部署记录

    之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一.基于主从复制的高可用方案:双节点主从 + keepalived 一般来说, ...

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

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

  8. MySQL高可用架构-MHA环境部署记录

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

  9. 基于PXC的MySQL高可用环境简单部署

    PXC简介 Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法. 1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上. 2.每个节 ...

随机推荐

  1. shell脚本(11)-流程控制case

    一.case介绍 生产环境下,遇到要根据不同的状况执行不同的预案的情况,首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案 特点:根据给予的不同的代码块 二.case语法 case 变 ...

  2. C++第四十九篇 -- 将一个项目Copy到另一台电脑

    最近写项目,由于设备原因,需要将一台电脑的项目拷贝到另一台电脑上,在另一个电脑上继续编写.由于配置属性原因,最终还是在另一台电脑上创建了新项目,只是把这些cpp文件都复制过去了,然后重新部署属性. 背 ...

  3. Selenium环境搭建 - Mac电脑

    一. JDK安装 1.1.官网下载1.8版本 可参考以下链接步骤: 'https://blog.csdn.net/u014801367/article/details/86288078' 1.2.jd ...

  4. 用 5W1H 告诉你如何规划合理的测试策略

    ​​摘要:测试策略描述了测试工程的总体方法和目标.描述目前在进行哪一阶段的测试以及每个阶段内在进行的测试种类(功能测试.性能测试.覆盖测试等)以及测试人力安排等. 本文分享自华为云社区<浅谈敏捷 ...

  5. Redis挂了,流量把数据库也打挂了,怎么办?

    你好呀,我是歪歪. 是这样的,前几天有个读者给我发消息,说面试的时候遇到一个场景题: 他说他当时,一时间竟然找不到回答问题的角度,感觉自己没有回答到点子上. 我仔细想了一下,确实是感到这个问题有一丝丝 ...

  6. Java面向对象06——类与对象小结

    小结  /* 1. 类与对象    类是一个模板:抽象,对象是一个具体的实例 2. 方法    定义.调用 ​ 3. 对应的引用    引用类型: 基本类型(8)    对象是通过引用来操作的:栈-- ...

  7. 2021大厂Android面试高频100题最新汇总(附答案详解)

    前言 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是前后端.移动开发,好像都得刷题,这么多人通过刷题过了面试,说明刷题对于找工作还是有帮助的. 不过这其中有一个问题 ...

  8. Hello World!!

    已经工作了一年多,现在才开始写博客.话说,种一棵树最好的时机是十年前,其次是现在,我觉得不迟.俗话说滴水穿石,我想把一些东西,都慢慢积累起来,看见自己的成长.既方便查看,更不容易忘记.可能在网上已经有 ...

  9. Linux中配置ftp传输

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  10. 《Python Cookbook v3.0.0》Chapter1 数据结构和算法

    感谢: https://github.com/yidao620c/python3-cookbook 如有侵权,请联系我整改. 本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有 ...