主节点配置
主机配置文件
主要配置有以下
server-id=1 #服务器id (主从必须不一样)
log-bin=mysql-bin # 打开日志(主机需要打开),这个mysql-bin 可自定义,也可加上路径
binlog-do-db=dblog #要给从机同步的库
binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
expire_logs_days=3 # 自动清理 3 天前的log文件 可根据需要修改
下面是我用的配置
## 检测 binLog开启情况
show variables like "%log_bin%";
从节点配置
server-id=2 #服务器id (主从必须不一样)
从节点配置 只要保证和主节点的ID不一致即可。如果从节点还是需要被复制到二级从节点。则需要打开从节点的
log-bin=mysql-bin
``
## 同步账户权限配置
因为从复制主,需要登录主节点的Mysql服务器上。故需要在主节点中,添加一个从节点的只读账号。这里面有很多坑。
```shell
# 主配置:增加从机复制账户并授权,以便从机远程登录过来复制 binlog
create user 'replicationUsername'@'%' identified by 'Passwd';
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'replicationUsername'@'%' WITH GRANT OPTION;
在主配置完账号之后,查看一下主节点日志写的状态
show master status;
可以看到主节点写到了 mysql-bin.000002 的第156个节点, 正在记录Binlog_Do_DB的数据库是dblog
所以我们此刻要做的是,让从节点此时对齐主节点的这个位置 此时不要主节点进行进任何操作
进入到slave从节点
将刚才记录的主节点的binlog位置信息记录进行一个对齐
CHANGE MASTER TO
MASTER_HOST='121.10.10.1',
MASTER_PORT=33068,我修改了默认端口
MASTER_USER='dev',
MASTER_PASSWORD='dev',
MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=156;
从节点的启动
#启动从节点
start slave;
#关闭从节点
stop slave;
# 查看从节点的状态
show slave status G;
注意:在CHANGE MASTER 的时候 必须要先stop slave
这个图片有延迟 , master_log_pos 又有写入 所以不是156了。
主要遇到问题:
- 用户权限问题,配置好之后,需要用show slave status G; 命令 多观察几次装填
查看
上面IO双OK ,下面IO 容易出现用户权限不足的问题。 用户权限不足就用上面方法重新创建一个新权限。 - 用户密码设置强度的问题。 默认密码强度高,自己用上面设置用户密码,肯定会告诉你强度不够,这时候需要
show variables like "%password%";
set global validate_password_policy='LOW';(需要注意mysql5.7以前还是以后这个参数是有变化的validate_password.policy)
FLUSH privileges