centos7下配置mysql5.7.24主从复制
前置条件
准备两台服务器(可以是虚拟机),系统为centos7
此处演示的两台服务器:192.168.8.134、192.168.8.135
第一步:安装mysql5.7.24
先在两台服务器上安装mysql5.7.24,安装可参考:
安装成功后,启动mysql。如果是虚拟机的话,在一台安装好之后,可以使用克隆功能,克隆后的虚拟机也会有安装好的mysql。
第二步:配置主从复制
配置之前,先在两台服务器上开启mysql。
master:192.168.8.134
slave: 192.168.8.135
配置master
创建一个名为repl的用户
CREATE USER repl IDENTIFIED BY 'L2019Mysql@';
授权slave数据库REPLICATION 权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'L2019Mysql@';
授权slave服务器可以通过repl用户可以远程访问master,来读取binlog中数据,实现数据同步。
修改my.cnf配置文件
sudo vim /etc/my.cnf
在/etc/my.cnf的[mysqld]下加入如下配置:
# 启用二进制日志文件
log-bin=mysql-bin
# 服务器唯一ID
server-id=1
log-bin: 开启binlog
server-id:指定服务器id(唯一,不能与slave服务器server-id相同)
重启mysql
sudo systemctl restart mysqld
查看master二进制文件名称和偏移量
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
此处二进制文件名称为:mysql-bin.000002,偏移量为:154
配置slave
修改my.cnf配置文件
sudo vim /etc/my.cnf
在/etc/my.cnf的[mysqld]下加入如下配置:
# 服务器唯一ID
server-id=2
# 开启中继日志
relay-log=slave-relay-bin
# 开启中继日志索引
relay-log-index=slave-relay-bin.index
# 设置只读
read_only=1
此处设置只读是因为,在主从复制的情况下,通常数据写入master,从slave中读取数据。
重启mysql
sudo systemctl restart mysqld
建立同步连接
CHANGE MASTER TO master_host = '192.168.8.134',
master_port = 3306,
master_user = 'repl',
master_password = 'L2019Mysql@',
master_log_file = 'mysql-bin.000002',
master_log_pos = 154;
master_host: master服务器ip
master_port: master上mysql服务端口
master_user: 配置master时创建的repl用户
master_password: master上repl用户密码
master_log_file: 配置master第5步查询到的二进制日志文件名称
master_log_pos: 配置master第5步查询到的偏移量
启动slave
start slave;
查看slave状态
show slave status \G
此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

测试
在master上新建一个名为test的数据库
create database test;
在slave上查看
show databases;
可以看到test数据库已经同步到slave上了

可能出现的错误
- [ERROR] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593
我在查看slave状态时,发现 Slave_IO_Running: No
查看日志
tail -f /var/log/mysqld.log
发现上面的错误。
原因:我在master: 192.168.8.134 上安装好mysql之后,使用克隆功能,创建了slave:192.168.8.135,导致master和slave上的server-uuid相同。
在master和slave上分别查看server-uuid
sudo cat /var/lib/mysql/auto.cnf
发现值都是:server-uuid=a1ae101b-13e3-11e9-8f07-000c29b2fc93
解决方法:
先重命名slave上的auto.cnf
sudo mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bk
然后重启slave上的mysql
sudo systemctl restart mysqld
查看slave状态
show slave status \G
此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

参考资料
centos7下配置mysql5.7.24主从复制的更多相关文章
- centos7下安装mysql5.7.24
第一步:下载rpm包 sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-rel ...
- Centos7 下配置mysql5.6主从复制实例(一主两从)
标签:mysql 数据库 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://8941355.blog.51cto.com/89313 ...
- SVN CentOS7 下配置svn的安装及基础配置介绍
CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一. 实践环境 CentOS 7操作系统(CentO ...
- Eclipse 下配置MySql5.6的连接池,使用Tomcat7.0
目前找到的最简单的配置方法. 1.首先在eclipse中创建一个Dynamical Web Application,在WebContent文件夹下的META-INF文件夹中创建新的名为conten ...
- Linux(CentOS7)下配置多个tomcat
记录 Linux(CentOS7) 下配置多个 tomcat 的操作过程. 一.下载tomcat 前提:安装配置好jdk环境,未配置可参考Linux(CentOS7)下安装jdk1.8. 从 tomc ...
- centos7中安装mysql5.6版本 + 主从复制
centos安装5.6版本:CentOS7下使用YUM安装MySQL5.6 主从复制:Mysql主从复制与读写分离原理及配置教程 主从复制问题及配置 卸载和安装5.7版本:CentOS 7 安装与卸载 ...
- CentOS7编译安装MySQL5.7.24
目录 安装依赖 安装boost 编译安装MySQL 配置 登录MySQL,修改密码 安装依赖 (1)cmake是新版MySQL的编译工具 sudo yum install gcc gcc-c++ pc ...
- Centos7 安装配置mysql5.6
Centos7下完美安装并配置mysql5.6 Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想用mysql的人来说并不是一个好消息. 最近我搜罗了网上各种安装教程,各 ...
- 日常工作问题解决:centos7下配置网卡以及查询网卡UUID
目录 1.配置网卡 1.1 网卡查看命令:ifconfig -a 1.2 网卡配置文件说明 1.3 重启网络服务 2.查看确认网卡UUID 2.1 网卡配置文件正常时 2.2 网卡配置文件不可用或者配 ...
随机推荐
- lambda(匿名函数)---基于python
在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? 下面就上面的问题进行一下解答. 1.lambda是什么? ...
- VR产业链全景图
- 软件工程第八周PSP
1.本周PSP 2.本周进度条 代码行数 0 博文字数 356 知识点 无 3.时间分配饼状图 4.折线图
- 《linux内核分析》 第二周
20135130 王川东 计算机三个“法宝”:存储程序计算机.函数调用堆栈和中断机制 深入理解函数调用堆栈: 堆栈是C语言运行时必须的一个记录调用路径和参数的空间: 作用包括: 函数调用框架: 保存参 ...
- J2EE Oa项目上传服务器出现的乱码解决过程
(= =)搞了许久觉得有必要记下来.. 由于我本地的mysql都设置好了,但是服务器的又不能去改它 毕竟还有其他人要用- -: 所以只能是我建的时候去设置一下了, 首先先建数据库 ,表;; creat ...
- Spring管理过滤器:org.springframework.web.filter.DelegatingFilterProxy
配置web.xml <filter> <filter-name>springSecurityFilterChain</filter-name> ...
- JAVA方法的重载(overload)和覆盖(override)
方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...
- AVAudioPlayer播放音乐
1:首先创建一个新的项目,继承自UIViewController 2:导入框架AVFoundation.framework 右键工程名,在Build Phases的Link Binary With L ...
- freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)
exists:由空值测试运算符的引入,它被废弃了. exp1?exists 和 exp1??是一样的, ( exp1)?exists 和(exp1)??也是一样的. if_exists:由默认值运算符 ...
- oracle package pragma SERIALLY_REUSABLE(编译指示 告诉PL/SQL 的运行时引擎,在数据引用之时不要保持包级数据。)
当包第一次被动调用时,将进行初始化:比如将包从硬盘上调到内存中来,放到系统全局工作区的共享缓冲池中,包的运行状态则被放到用户全局区的会话中存储区中,因此可以保证每个调用包的会话都拥有包的运行副本,当会 ...