一、主从复制原理
MySQL主从复制主要包含三个线程(Log Dump Thread、IO Thread、SQL Thread)和两个日志(Bin log、Relay log),Master的数据库变更会写到binlog中,binlog内容会通过Log Dump Thread线程发送给从节点,从节点的IO Thread线程读取到内容后会将内容写到Relay Log中,然后通过SQL Thread线程读取Relay Log并以SQL形式在Slave数据库执行。
主节点内容变更会写到binlog日志文件中;主节点log dump thread发送增量binlog到从节点,从节点通过IO Thread将内容写道Relay log中;从节点SQL Thread线程读取Relay log更新的内容,然后以SQL形式在从节点数据库中重新执行一次。
二、Master节点配置
2.1、开启binlog日志
在/etc/f中添加如下配置,配置完需重启MySQL服务。
# master info
# 设置server_id,同一局域网中需要唯一
server_id=1001
#二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=30
# binlog文件名称
log-bin=mysql-bin
# 指定需要同步的数据库名称
# binlog_do_db=test
#指定不需要同步的数据库名称
binlog-ignore-db=mysql
#设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
#设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
2.2、创建连接主库使用的账号
在master数据库中创建slave连接master使用的用户,用户创建完后需登录一次,否则导致从库一直处理connecting状态。
# 创建连接主库的账号
create user 'slave'@'192.168.1.100' identified by 'Slave@123';
# 授权账号权限
grant replication slave on *.* to 'slave'@'%';
# 刷新权限
flush privileges;
# 用户创建成功后需登录一次,否则可能导致从库一直connecting状态
quit;
mysql -uslave -p
三、 binlog信息查询
查看binlog日志名称及偏移量:show master status\g;
查看master中binlog状态,log_bin=ON代表已打开,OFF则关闭
三、Slave节点配置
3.1、从节点配置
在/etc/f中添加如下配置,配置完同样需重启MySQL服务。
# slave info
# 设置server_id,同一局域网中需要唯一
server_id=1002
# relay_log配置中继日志
relay_log=mysql-relay-bin
# slave设置为只读(具有super权限的用户除外)
read_only=1
3.2、配置Master相关信息
1、配置主库相关信息
#master_host:主节点ip
#master_user:主节点用户名(拥有replication slave权限的用户)
#master_port:用户对应的密码
#master_log_file:binlog文件名称(在主库中通过“show master status\g;”查看)
#master_log_pos:偏移量(在主库中通过“show master status\g;”查看)
#master_connect_retry:重试时间
change master to master_host='192.168.0.109',
master_user='slave',
master_password='Slave@123',
master_port=3306,
master_log_file='mysql-bin.000003',
master_log_pos=157,
master_connect_retry=30;
2、启动从库
start slave;
3.3、验证
通过show slave status \G;查询,如果Slave_IO_Running和Slave_SQL_Running状态都为Yes即代表配置成功。