MYSQL主从配置详细

主从原理

这个是网上的主从流程图
主从思维导图



LINUX安装MySQL

下载软件

wget https://repo.mysql.com/mysql-community-release-el6.rpm

安装

yum localinstall mysql80-community-release-el7-1.noarch.rpm

yum install mysql-community-server

开机启动、守护进程

systemctl enable mysqld

systemctl daemon-reload

启动

systemctl start mysqld


MySQL设置密码,我是不知道密码,所以进入安全模式直接重置了密码

mysqld_safe --user=mysql --skip-grant-tables;

update user set password=password("你的密码") where user="root";

flush privileges;


主从配置文件(配置文件默认是/etc/my.cnf)

[mysqld]
## 唯一

server-id=100  

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin


给权限用于主从同步数据

CREATE USER 'slave'@'%' IDENTIFIED BY '@#$Rfg345634523rft4fa';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

%:所有服务器都能使用这个用户(也可指定IP)


[mysqld]
## 唯一(不要与主的重复了)

server-id=101  

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

log-bin=mysql-slave-bin   

## relay_log配置中继日志

relay_log=edu-mysql-relay-bin  


change master to master_host='IP', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 1, master_connect_retry=30;


start slave;

show slave status \G;

master_host :Master的地址
master_port:Master的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒


遇到的坑

master_log_pos这个参数刚开始配置的时候一定要是1

按照网上配置的时候

从的线程IO没有同步,于是我查看日志的错误

就是因为master_log_pos这个参数配置过大找不到所致

stop slave;

重新执行

change master to master_host='IP', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 1, master_connect_retry=30;

配置成功

此文章部分参考小熊我不要了的文章感谢!!

发布于 2020-07-16 14:26