MySQL 主从复制步骤,版本5.7

本文详细介绍了如何配置MySQL主从同步,包括修改主服务器和从服务器的MySQL配置,设置权限,调整复制参数,以及处理可能出现的错误。重点涉及了二进制日志、server_id和验证密码策略等关键配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.修改主服务器mysql配置

首先修改主服务器权限

如果执行下面的语句返回 ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

可以先执行 show variables like 'validate_password%';

如果返回 Empty set

在mysql命令行中执行  install plugin validate_password soname 'validate_password.so'; 就行了


set global validate_password_policy=0;
set global validate_password_length=1;
 
 
# 修改远程权限
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
 
# 刷新权限
flush privileges;
# 打开配置文件
vi /etc/my.cnf


# 修改配置文件 mysqld模块中如下配置
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制日志格式,有row/statement/mixed三种格式,row把改变的内容复制过来 而不是把命令在从服务器上执行一遍 , statement是主服务器上执行的sql语句  在从服务器上执行同样的语句 ,mixed是默认采用基于语句的我无法精确的复制时 就会采用基于行的复制 . . .   mysql默认采用语句的复制 , 效率比较高
server-id=1        #要求各服务器的id必须不一样
binlog-do-db=msb   #同步的数据库名称 , 不是所有数据库都复制可以不指定

重启主服务器mysql后执行 show master status

2. 修改从服务器配置

首先创建database , 名字为msb(主服务器同步同名)

配置从服务器登录主服务器的账号权限


set global validate_password_policy=0;
set global validate_password_length=1;
 
 
# 修改复制权限
grant replication slave on *.* to 'root'@'%' identified by '123456';
 
# 刷新权限
flush privileges;

 修改从服务器配置/etc/my.cnf

#mysqld模块中添加配置
log-bin=master-bin #二进制文件名称
binlog-format=ROW  #二进制文件格式
server-id=2        #服务器id ,不可重复

重启从服务器后命令行登录

连接主服务器

#连接主服务器
主服务器查看配置  show master status;


change master to master_host='192.168.149.140',master_user='root',master_password='123456',master_port=3306,master_log_file='mysql-bin.000009',master_log_pos=154;


master_host        主服务器地址
master_user        主服务器用户
master_password    主服务器密码
master_port        主服务器端口
master_log_file    主服务器文件名
master_log_pos     主服务器文件位置


也可以在数据库中添加配置文件
server_id = 2
log-bin = /usr/local/mysql/log/solve-bin.log
master-host = 192.168.149.140
master-user = root
master-pass = 123456
master-port = 3306
master-connect-retry = 60
#启动slave

start slave;

#查看slave状态 (这里注意没有分号)

show slave status\G

主要查看slave_io_running 和 slave_sql_running

如果这两个有任何一个不是 yes , 可以在/var/log/mysqld.log  或者show slave status\G中查看

报错信息 每次都需要stop slave 重新执行

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it)

在mysql命令行中查询  
show variables like 'server_id';


 如果主从数据库是一致的,配置文件没有生效, 可以运行   但是会重启失效
set global server_id=3 

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.


可以运行 下句 , 看下主从数据库是一样的值吗 , 是一样的就找到问题了
show variables like 'server_uuid';

其他问题自行百度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗先生的PHP记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值