目录
- 一、前言
- 二、主从复制原理
- 三、环境
- 配置主数据库
- 配置从数据库
- 可能出现的错误
- 参考资料
一、前言
本文主要介绍如何配置Mysql数据库主从配置,并简要介绍主从复制原理。
使用了虚拟机上的服务器两台来配置一主一从,如果需要配置一主多从,配置方法是一样的.
二、主从复制原理
主从复制实现的效果在于,Slave数据库读取Master数据库的log,log记录了Master数据库的修改情况,从而Slave根据log,去在Slave数据库做同样的操作。
具体来说,这个log叫binlog(二进制log),可以简单理解为它保存的就是主结点的执行SQL语句,但其实还存储了该执行SQL语句的反向操作,例如主结点插入一条数据,实际上保存了删除这条数据的SQL,从而方便回滚。
主从复制过程中主要包含三个线程:
- Binlog线程,负责将主库的SQL修改放到二进制日志文件中
- I/O线程,负责把二进制日志读取到从库服务器
- SQL线程,负责把I/O线程读取来的文件,转换读取到从库中
三、环境
Centos7 服务器两台
- 192,168.56.80
- 192.168.56.85
配置主数据库
使用命令配置 vi /etc/my.cnf
在[mysqld]下面加
log-bin=mysql-bin
server-id=1
在mysql命令行执行
CREATE USER 'repl'@'192.168.56.%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.56.%';
FLUSH PRIVILEGES;
使用show master status
查看两个参数,这里先注意一下
配置从数据库
第1步:编辑/etc/my.cnf文件,设置server-id
[mysqld]
server-id=2
这里一定要确定主从数据库的server-id 不同
第2步:在mysql终端设置如下
change master to master_host='192.168.56.80', master_user='repl', master_password='123456', master_log_file='mysql-bin.000002', master_log_pos=877;
第3步:查看从数据库状态
使用 show slave master命令查看
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.80
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000004
Read_Master_Log_Pos: 340
Relay_Log_File: 3e0b89196ec5-relay-bin.000007
Relay_Log_Pos: 548
Relay_Master_Log_File: binlog.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...................
.................
如果 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes都是yes的话,就说明没问题。
在主数据库中,进行修改
查看从数据库
可以看到,从数据库也同时进行了更新.
可能出现的错误
如果有不是yes的,请检查后面的字段,看看是否有error信息,我遇到了如下两个:
Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these
参考资料