复制的原理图 :
    image.png

    MySQL复制过程分成三步:
    1 master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
    2 slave将master的binary log events拷贝到它的中继日志(relay log);
    3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的

    复制的原则

    • 每个slave只能有一个master
    • 每个slave只能有唯一的服务ID
    • 每个master可以有多个slave

    复制的最大文件,延时


    操作: https://blog.csdn.net/weixin_43168010/article/details/108483546?utm_medium=distribute.pc_relevant.none-task-blog-title-8&spm=1001.2101.3001.4242

    **window没有my.ini文件 : 创建my.ini文件在安装目录 使用 mysqld —defaults-file=”E:\musql\my.ini” 命令然后重启服务

    1.主机配置 : 找到my.ini文件(我的linux在 etc/my.ini文件下)

    配置文件中添加以下配置:主从配置在mysqld节点下,都是小写
    server-id=1 #服务器 id ,主从机器在同一局域网内必须全局唯一,不能相同
    log-bin=mysql-bin #二进制文件存放路径,非必须,mysql8后默认存放/var/lib/mysql这里
    binlog-do-db=db1 #待同步的数据库,如果有多个以空格隔开db1 db2 db3 ….,主从复制搭建成功在创建该表
    binlog-ignore-db=mysql #不同步的数据 如果有多个以空格隔开db1 db2 db3 ….

    重启主机 : systemctl restart mysql
    检查服务的开启 : systemctl status mysql

    2.从机的配置(配置其他mysql的my.cnf文件)
    在配置文件中添加以下配置:
    server-id=2 #设置server-id,必须唯一
    relay-log=mysql-relay

    3.关闭主机从机
    systemctl stop firewalld ;

    4.在主机创建用户,检查状态
    连接上数据库 :
    创建用户 :
    CREATE USER ‘slave1’@’%’ IDENTIFIED WITH mysql_native_password BY ‘962464’;
    GRANT ALL PRIVILEGES ON . TO ‘slave1’@’%’;
    FLUSH PRIVILEGES;

    查看状态 : show master status ;
    image.png

    5.从机操作:

    change master to master_host=’192.168.31.239’,#登录之后,执行下面,ip地址是主库的ip
    master_user=’slave1’, #上面配置的账号
    master_password=’962464’, #后面为主机中创建用户的密码
    master_log_file=’binlog.000002’,master_log_pos=107;
    #log_flie主机配置中show master status中的file的字段值
    #其中master_log_pos是status中的Position字段值

    mysql> change master to master_host=’192.168.31.239’,
    -> master_user=’slave1’,
    -> master_password=’962464’,
    -> master_log_file=’mysql-bin.000002’,master_log_pos=156;

    如何重新设置主从复制:
    stop slave;
    reset master;

    启动从机服务 : start slave ;

    查看从机状态 : show slave status\G;
    注意下面的字段 : 都为Yes搭建成功

    image.png
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    要是不是有no,下面是解决办法
    https://www.cnblogs.com/l-hh/p/9922548.html

    现在主机创建库,表,添加数据,从机都能获取了


    **如果误操作,导致主从同步异常,怎么办?
    最重要的一步就是马上关闭主从同步:
    stop slave;
    再去查看一下状态
    show master status;
    接着马上做一步操作:
    change master to master_host=’’, master_user=’repl’, master_password=’’, master_log_file=’’, master_log_pos=xx,
    接着打开主从同步:
    start slave;
    然后查看是否恢复正常。