Mac与Linux虚拟机配置mysql主从复制

Mac上的Mysql为主库,Linux为从库配置

Mac上的配置:

  • 1、打开终端,输入 vim /etc/my.cnf 修改Mysql配置文件,配置开启二进制日志
    log-bin=mysql-bin
    server-id=(设置服务器唯一ID,可以自定义,保证与其他服务器不一样即可)
  • 2、重新启动Mysql
    启动MySQL服务 mysql.server start
    
    停止MySQL服务 mysql.server stop
    
    重启MySQL服务 mysql.server restart

  • 3、登录主库Mysql,执行下面sql
登录Mysql:mysql -u root -p
执行sql:GRANT REPLICATION SLAVE ON *.* to ‘username’@‘%’ identifiled by ‘password’;

上面sql的作用是创建一个用户username,密码为password,并且给username用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才可以通过该用户复制。

  • 4、登录Mysql数据库,执行 show master status; 记录下结果中File和Position的值

上面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作。因为执行操作显示出来的master状态里的file和position会发生变化。

 

Linux上的配置

  • 1、 输入 vim /etc/my.cnf 修改Mysql配置文件,配置开启二进制日志
  • 2、重启Mysql
systemctl restart mysqld
  •  3、登录数据库,执行下面sql
    change master to 
    master_host=‘主库的ip地址’,
    master_user='之前设置master时的username’,
    master_password='之前设置master时的password’,
    master_log_file='查看master状态时的file名’,
    master_log_pos='查看master状态时的position’;
    

    这里的主库因为是Mac,所以需要填写Mac的ip,Mac的ip查看方式为 系统偏好设置>网络>高级>TCP/IP>IPv4地址

  •  

    执行完上面sql之后,输入 start slave;开始主从复制 

  • 4、登录从库Mysql,执行下面SQL,查看从数据库的状态
    show slave status\G;

    遇到的问题:

  • slave_SQL_Running:no

解决办法:

  1. 在Linux虚拟机从库里登录状态输入stop slave
  2. 在Mac主库里重新输入show master status; 获取新的File和Position
  3. 重新输入新的File和Position
    change master to
    master_host=‘master数据库的ip地址’,
    master_user='之前设置master时的username’,
    master_password='之前设置master时的password’,
    master_log_file='查看master状态时的file名’,
    master_log_pos='查看master状态时的position’;
  4. start slave;

本人只遇到上面这一个问题,还有可能遇到Slave_IO_Running=no的问题,可以参考这位的回答

mysql实现主从复制/主从同步_@阿清的博客-CSDN博客_mysql 主从同步复制


版权声明:本文为weixin_68588547原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。