杉哥的个人博客

mysql的主从复制

概念:

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。

主从复制的作用:

  1. 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作。
  2. 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
  3. 读写分离,使数据库能支撑更大的并发。

主从复制的原理:

  1. 数据库有个bin-log二进制文件,记录了所有sql语句。
  2. 我们的目标就是把主数据库的bin-log文件的sql语句复制过来。
  3. 让其在从数据的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;