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