虚拟机配置mysql主从复制

330 阅读3分钟

环境准备

使用的虚拟机为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)进行。解决这个问题的方法可以包括以下几个步骤:

  1. 配置 MySQL 主服务器

    • 确保 MySQL 主服务器允许使用 caching_sha2_password 身份验证插件,并且配置了 SSL/TLS 安全连接。
  2. 修改用户的身份验证插件

    • 如果可能的话,可以考虑修改连接 MySQL 主服务器的用户,将其身份验证插件更改为较旧但不需要 SSL/TLS 的插件,例如 mysql_native_password
  3. 启用 SSL/TLS 安全连接

    • 如果你的环境支持,可以配置 MySQL 主服务器和从服务器之间的 SSL/TLS 连接,以满足安全连接的要求。

下面是具体的步骤:

修改用户身份验证插件为 mysql_native_password

  1. 登录到 MySQL 主服务器

    bashCopy Code
    mysql -u root -p
    
  2. 切换到 MySQL 数据库

    sqlCopy Code
    USE mysql;
    
  3. 查看当前用户的身份验证插件

    sqlCopy Code
    SELECT user, plugin FROM mysql.user WHERE user='zsh';
    
  4. 如果 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';
    

    修改以后就不会出现这类错误了(亲测有效)