文章目录
1. 在 hadoop103 节点安装mysql
2. mysql 基于 binlog 的主从复制原理
- Master 将操作记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events)。
- Slave 通过 I/O Thread 异步将 Master 的 binary log events 拷贝到它的中继日志(relay log)。
- Slave 执行中继日志中的事件,匹配自己的配置将需要执行的数据,在 Slave 服务器上执行一遍,从而达到复制数据的目的。
3. 主从复制配置
我们选择 hadoop102 节点为主,hadoop103节点为从。
找到 my.cnf
[dwjf321@hadoop102 software]$ locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
3.1 Master 配置
-
创建主从复制用户
create user m2ssync identified by '123456';
-
给新用户赋权
grant replication slave on *.* to 'm2ssync'@'%' identified by '123456';
-
配置
my.cnf
指定服务ID
[dwjf321@hadoop102 software]$ sudo vim /etc/my.cnf server-id=102 log-bin=mysql-bin
-
查看 Master 状态
show master status;
3.2 Slave 配置
-
配置
my.cnf
指定服务器 ID,指定同步的 binlog 存储位置
[dwjf321@hadoop103 software]$ sudo vim /etc/my.cnf server-id=103 read_only=1
-
接入 slave 的 mysql 服务
配置:
-- 设置跳过报错 set global SQL_SLAVE_SKIP_COUNTER=1; change master to master_host='hadoop102', master_port=3306, master_user='m2ssync', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=2903;
-
启动 slave
start slave;
3.2 主从同步异常处理
-
停止 slave
stop slave;
-
查看 master status
刷新日志
flush logs;
查看状态
show master status;
-
修改 slave 的 change
change master to master_host='hadoop102', master_port=3306, master_user='m2ssync', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=2904;
-
启动 slave
start slave;
3.3 异常处理
MySQL主从复制,启动slave时报错Slave failed to initialize relay log info structure from the repository
-
停止 slave
-
执行 reset slave
reset slave;
slave reset 执行候做了这样几件事:
- 删除slave_master_info ,slave_relay_log_info两个表中数据;
- 删除所有relay log文件,并重新创建新的relay log文件;
- 不会改变gtid_executed 或者 gtid_purged的值
-
执行
change master to master_host='hadoop102', master_port=3306, master_user='m2ssync', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=2904;
-
启动 slave
start slave;