介绍
MySQL主从复制是一一个异步的复制过程,底层是基于Mysq1数据库自带的二进制8志功能。就是一台或多台MySQL数据库(slave, 即从库)从另一台MySQL数据库(master, 即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
MySQL复制过程分为三步:
-
master将改变记录到二进制日志(binary log)
- slave将master的binary log拷 贝到它的中继日志(relay log)
- slave重做中继日志中的事件,将改变应用到自己的数据库中
准备:两台服务器,一个主库,一个从库。
注意:以下配置都是在Linux系统中的配置。(有多台服务器,可以配置多个从库)
主库配置
- 修改mysql数据库的配置文件(/etc/my.cnf),在配置文件中添加下面代码
- log-bin=mysql-bin #启用mysql二进制日志
- server -id=100 #服务器唯一id
2.重启mysql服务
- systemctl restart mysqld
3.登录mysql数据库(主库),执行下面sql
- GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
注:上面SQL的作用是创建一个用户xiaoming,密码为Root@123456,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
4.执行下面sql,记录下结果中的File和Position的值
- show master status;
注: 上面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作
从库配置
- 修改mysql数据库的配置文件(从库) 在/etc/my.cnf下添加下面语句
- server -id=101 #服务器唯一id
2.重启mysql服务
- systemctl restart mysqld
3.登录mysql数据库(从库),执行下面语句
- change master to master_host= ' 192.168.138.100',master_ user= ' xiaoming',master_pas sword= ' Root@123456 ',master_ log_file=' mysql-bin.000001' ,master _log_ pos=439 ;|
- start slave ;
注意:master_ log_file,master _log_ pos的值为刚刚主库中查出来的值。
4.执行下面语句,查看从库数据库状态
- show slave status;
- show slave status\G;
注意:Slave_IO_Running和Slave _SQL_Running都为YES时才是配置从库成功。
如果是用多个虚拟机配置了多个从库,且多个虚拟机是复制来的,则克隆的slave从库数据库要修改uuid vim /data/mysql/auto.cnf修改完重启mysql服务