(1)创建用户

启动主MySQL服务器,登入主MySQL客户端,在主服务器上创建复制数据的账号并授权:

# 登录主mysql客户端
mysql> mysql -S /opt/software/mysql/3306/tmp/mysql_3306.sock -p 

mysql> grant replication slave on *.* to 'slave'@'%' identified by 'mysql@123';

创建一个MySQL用户,该用户是主服务器专门给从服务器拷贝数据用的

注意:该语句可完成授权、创建用户、修改密码操作

(2)重置主服务器状态

  • 查看主服务器状态:

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000001 |      430 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    • 默认的mysql主服务器默认初始值:
      • File:mysql-bin.000001
      • Position:154
  • 如果主服务状态不是初始状态,需要重置状态:

    reset master;
    

(3)重置从服务器状态

  • 查看从服务器状态

    # 登录从mysql
    mysql -S /opt/software/mysql/3307/tmp/mysql_3307.sock -p 
    # 查看从服务器状态
    show slave status;
    
    • 初始状态:Empty set
  • 如果从服务器不是初始状态,建议重置一下

    stop slave; 	#停止复制,相当于终止从服务器上的IO和SQL线程
    reset slave;
    
  • 设置从服务器的master,在从服务器客户端执行:

    • master_host:主服务器ip
    • master_port:主服务器端口
    • master_user,master_password:2.4.1中创建的专门执行主从复制的用户名和密码
    • master_log_file:2.4.2中查出的File值
    • master_log_pos:2.4.2中查出的Position值,如果主服务器是初始值的话,就是154
    change master to master_host='127.0.0.1',master_user='slave',
    master_port=3306,master_password='mysql@123',
    master_log_file='mysql-bin.000001',master_log_pos=154;
    
  • 在从机器上执行开始复制命令:

    start slave;
    

(4) 验证

  • 在从服务器的客户端执行以下命令:

    • \G:表示格式化输出
    show slave status \G;
    

    显示结果: 在这里插入图片描述 注意:如果 Slave_IO_Running 和 Slave_SQL_Running 均为 YES,则表示主从关系正常

  • 在主服务器上创建数据库、表、数据,然后在从服务器上查看是否已经复制

  • 查看主从复制binlog日志文件内容: 在主服务器客户端执行:

    show binlog events in 'mysql-bin.000001'\G;
    

    查看结果: 在这里插入图片描述