概念:
MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。
主从复制的作用:
- 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作。
- 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
- 读写分离,使数据库能支撑更大的并发。
主从复制的原理:
- 数据库有个bin-log二进制文件,记录了所有sql语句。
- 我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
- 让其在从数据的relay-log重做日志文件中再执行一次这些sql语句即可。
主从复制配置方法:
主服务器的配置:
1、先在主服务器上去完成bin日志的开启:能够记录操作的sql语句
配置文件中写入:
server_id=5 在这个架构中必须唯一,一般是ip段的末尾那个数字
log-bin=mysql-bin 开启bin日志,默认是保存在mysql的data目录,名称类型mysql-bin.000001(0-2^32个文件)
binlog-format=mixed bin日志的记录格式:推荐使用mixed方式;分为三种
- row 基于行的记录
- statement 基于语句的记录
- mixed 自己选择上面中的任何一种记录,混合记录
2、重启mysql服务器,并登录到主服务上查看当前正在使用的bin日志文件
show master status;
文件位置 位于mysql的data目录
3、添加一个授权账号,使得到时候从服务器可以使用该账号来主服务器上读取bin日志文件。
mysql > GRANT REPLICATION SLAVE ON *.* TO copyuser@”192.168.%.%” IDENTIFIED BY ‘admin88’;
到时候从服务器就可以使用该账号去登录到主服务器上去读取bin日志文件。
从服务器的配置:
1、修改从服务器的配置文件,开启从服务器的中继日志
(mysql从服务器从主服务器上读取的bin日志,并不能直接的执行,需要先转换为本地能够理解的中继日志,然后在本地执行即可达到和主服务器上数据一致)
在配置文件中写入:
server_id =10必须在整个架构唯一
relay-log = slave10-log 开启从服务器的中继日志,日志的名称可以随意更改
2、重启mysql服务;登录到主服务器,使用在主服务上添加的那一个授权账号(copyuser)来获取主服务器上的bin日志
3、连接
mysql > CHANGE MASTER TO
MASTER_HOST=’192.168.56.10′,
MASTER_USER=’copyuser’,
MASTER_PASSWORD=’admin88′,
MASTER_LOG_FILE=’mysql-bin.000001′,
MASTER_LOG_POS=347;
解释:
MASTER_HOST 主服务器的ip地址
MASTER_USER 主服务器上添加的授权账号
MASTER_PASSWORD 主服务器上添加的授权账号的密码
MASTER_LOG_FILE 主服务器正在使用的二进制日志文件名称
MASTER_LOG_POS 主服务器日志记录的位置
3.1、连接后在从服务器查看状态
show slave status\G;
启动从服务器的功能
start slave;
再次查看状态,当看到
代表成功。
关闭从服务器
stop slave;
重置从服务器配置
reset slave;