1. 原理:
    2. 实现整个主从复制,需要由sever服务器上的IO进程和Sql进程共同完成.
    3. 要实现主从复制,首先必须打开Master端的binary logbin-log)功能,因为MySQL主从复制过程实际上就是SlaveMaster端获取相应的二进制日志,然后再在自己slave端完全按照顺序执行日志中所记录的各种操作。
    4. ===========================================
    5. 1. 在主库上把数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
    6. 2. 从库I/O线程将主库上的日志复制到自己的中继日志(Relay Log)中。
    7. 3. 从库SQL线程读取中继日志中的事件,将其执行到从数据库之上。
    8. ===========================================
    9. master 负责写 -----A
    10. slave relay-log -----B
    11. I/O 负责通信读取binlog日志
    12. SQL 负责写数据
    1. 主机器
    2. 进入MySQL配文件开log日志文件
    3. vim /etc/my.cnf
    4. [mysqld] #在这个标签添加如下代码
    5. server-id=1 #设置一个ID主从不能相同
    6. log-bin = mylog #开启日志文件
    7. 主数据库创一个用户允许所有用户允许其他人登录:
    8. grant replication slave,reload,super on *.* to 'tom'@'%' identified by 'Tom@1234';
    9. flush privileges #刷新配置
    10. show master status\G #查看bin-log信息
    11. 从机器
    12. vim /etc/my.cnf
    13. [mysqld] #在这个标签添加如下代码
    14. server-id=1 #设置一个ID主从不能相同
    15. master-info-repository=TABLE
    16. relay-log-info-repository=TABLE
    17. 进入MySQL执行sql语句:
    18. \e #进入编辑器在里面可以些入长命令
    19. chnage master to
    20. master_hosts='master', #要写域名 要提前配置解析 不然无法使用域名
    21. master_user='tom', #通过指定用户连接进入数据库
    22. master_password='Tom@1234', #连接用户的密码
    23. master_log_file='mylog.000001', #bin-log日志
    24. master_log_pos=154; #连接起始位置
    25. start slave; #启动slave进程
    26. show slave status\G #查看I/o进程和SQL进程是否显示yes
    1. 主机器
    2. vim /etc/my.cnf
    3. [mysqld]
    4. server-id=1
    5. log-bin=mylog
    6. gtid_mode = ON
    7. enforce_gtid_consistency=1
    8. systemctl ratart mysqld #重启MySQL
    9. 进入数据库创建连接用户:
    10. grant replication slave,reload,super on *.* to 'tom'@'%' identified by 'Tom@1234';
    11. 从机器
    12. vim /etc/my.cnf
    13. server-id=2
    14. gtid_mode = ON
    15. enforce_gtid_consistency=1
    16. master-info-repository=TABLE
    17. relay-log-info-repository=TABLE
    18. systemctl restart mysqld #重启mysql
    19. 进入MySQL数据库:
    20. \e
    21. change master to
    22. master_hosts='192.168.118.211',
    23. master_user='tom',
    24. master_password='Tom@1234',
    25. master_auto_position=1;
    26. ;
    27. 成功后执行启动slave进程
    28. start slave #启动所有slave进程
    29. show slave status; #查看所有进程
    30. ------------------------------------------------------------------
    31. 下面配置适用多slave进程使用:
    32. start slave for change 'master1' #启动指定一个信道使用
    33. reset slave #重置全部slave
    34. reset slave for change 'master1' #重置指定一个
    35. stop slave #停止全部slave