环境准备
使用的虚拟机为centos 7
这边建议直接将一台虚拟机克隆(注意被克隆的虚拟机要关机)省的重新下载mysql,
克隆后需要修改几个配置,不然两台台虚拟机啥都一样了
1.修改Mac地址
打开vm中克隆的虚拟机设置(确保另一台虚拟机关机)->
在设置中网络适配器打开高级选项Mac地址生成一个新的
2.hostname
修改主机名,防止和另一台同名
vi /etc/hostname
修改其中的localhost变为自定义的
3.ip地址和uuid修改
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改其中的ipaddr和uuid,修改其中一个或多个数字字母就行(ip只能修改最后三位数)
注意: bootproto=static
同样也要修改mysql的uuid
先在mysql中生成一个uuid
select uuid;
然后在配置文件中修改
vim /var/lib/mysql/auto.cnf
最后重启mysql服务
systemctl restart mysqld
同样也要重新加载一下linux
主从复制配置
主库
首先修改一下master配置文件
vim /etc/my.cnf
添加
server-id=1
log_bin=mysql_bin
注意其中id不能和从库一样要保持唯一性
然后创建一个用于远程连接的用户,并赋予权限
1.创建用户并设置密码
CREATE USER '用户名'@'%' IDENTIFIED BY 'Root@***';
2.赋予权限
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%'
然后重启数据库
从库
同样也要修改slave配置
vim /etc/my.cnf
添加
server-id=2
然后重启服务
注意:要将两台服务器的防火墙关闭
systemctl disable firewalld
在主库中mysql查看master状态
show master status;
在从库mysql中输入:
关闭slave服务
stop slave
连接主库
change master to
master_host='主库ip',
master_user='用户名',
master_password='1密码',
master_log_file='上面图片中的file值',
master_log_pos=上图中position;
重启slave服务
start slave;
//如果报错执行下面sql
reset slave;
最后查看连接状态
show slave status\G;
出现以下字段才是连接成功
slave_io_running :YES
slave_sql_running: YEs
如果出现状态为connecting字段,检查其他字段是否有error出现 也可以ping ip 检查网络连通性(前提是前面内容配置修改了)
如果出现:
Last_IO_Error: error connecting to master 'zsh@192.168.237.130:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
这个错误通常出现是因为 MySQL 的连接所使用的身份验证插件为 caching_sha2_password,而连接需要通过安全连接(SSL/TLS)进行。解决这个问题的方法可以包括以下几个步骤:
-
配置 MySQL 主服务器:
- 确保 MySQL 主服务器允许使用
caching_sha2_password身份验证插件,并且配置了 SSL/TLS 安全连接。
- 确保 MySQL 主服务器允许使用
-
修改用户的身份验证插件:
- 如果可能的话,可以考虑修改连接 MySQL 主服务器的用户,将其身份验证插件更改为较旧但不需要 SSL/TLS 的插件,例如
mysql_native_password。
- 如果可能的话,可以考虑修改连接 MySQL 主服务器的用户,将其身份验证插件更改为较旧但不需要 SSL/TLS 的插件,例如
-
启用 SSL/TLS 安全连接:
- 如果你的环境支持,可以配置 MySQL 主服务器和从服务器之间的 SSL/TLS 连接,以满足安全连接的要求。
下面是具体的步骤:
修改用户身份验证插件为 mysql_native_password
-
登录到 MySQL 主服务器:
bashCopy Code mysql -u root -p -
切换到 MySQL 数据库:
sqlCopy Code USE mysql; -
查看当前用户的身份验证插件:
sqlCopy Code SELECT user, plugin FROM mysql.user WHERE user='zsh'; -
如果 zsh 用户的插件是
caching_sha2_password,则修改为mysql_native_password:sqlCopy Code ALTER USER 'zsh'@'192.168.237.130' IDENTIFIED WITH mysql_native_password BY 'your_password_here';修改以后就不会出现这类错误了(亲测有效)