介绍
mysql 的主从复制是一个异步的过程, 底层是基于mysql 数据库的自带的二进制日志的功能, 就是一台可多台 mysql 数据库(slave 即从库)从另一台mysql 数据库(master 即主库)进行日志的复制,然后再解析日志,并应用到自身,最终实现主库,从库的数据一致。
说明一下上图的流程
master(主库) 数据发生变化, 写入日志,记录执行的sql , slave(从库)有一个专门的 I/O 进程, 负责读取主库的日志变化, 并把日志的变化拷贝到从库的二进制日志中。 在从库中有另外一个进程,读取本地的二进制日志,并把日志中的改变数据的操作进行执行
准备工作
我打算 226 为主库, 227 为从库
首先, 在226 数据库中做主库配置
找到主库的 my.cnf 配置文件
在其中加入
【mysqld】
log-bin=mysql-bin # 这一句是启用二进制日志
server-id=226 # 这一句是便于主,从之间的服务器 ID (唯一)
重启mysql 服务
在主库上新建一个用户, 用于从库访问时,使用的用户名密码
GRANT REPLICATION SLAVE ON *.* to ‘huangjunhui’@‘%’ identified by ‘Huang@123456’;
新建了一个 huangjunhui的用户 密码是Huang@123456, 用来给从库访问时, 做身分认定的
Your password does not satisfy the current policy requirements 设置密码的时候要注意密码策略
在主库中输入命令 show master status
执行之后, 暂时不要对主库再操作, 因为 等下从库设置是会用到这两个数据, 如果此时改变主库的数据, 这两个值也会发生变化。
从库的设置
在 /etc/my.cnf 中添加 server-id=227 就可以了
设置完成后重启 mysql 服务
mysql_38">在从库的mysql上输入以下命令
change master to master_host=‘192.168.1.226’, master_user=‘huangjunhui’, master_password=‘Huang@123456’, master_log_file=‘mysql-bin.000001’,master_log_pos=442;
///
start slave;
//
以上命令完成这后, 我们的主从复制就配置完成了
我们可以通过在 从库上的命令来查看, 配置的情况