在学习之前,我们首先要学会在Linux系统安装MySQL,还没安装成功的同学可以点连接进去学习,纯干货哦!——>Linux安装MySQL5.7——避开所有坑!
( 注意:一个主库可以有多个从库)
1、master将改变 记录到二进制日志(binary log)
2、slave 将 master 的 binary log 拷贝到它的中继日志(relay log)
3、slave重做中继日志中的事件,将改变应用到自己的数据库中
提前准备好两台服务器,分别安装MySql并启动成功
1、进入其中一台服务器中的MySQL,将此库作为Master主库来配置,修改MySQL的配置问文件
增加两行设置,开启MySQL的二进制日志功能,设置服务器的唯一标识(前面也提到过,一个主库可能对应多个从库,为了区分开来,把每个从库的id设置唯一)。保存并退出。
2、重启数据库
3、先刷新一下权限表。把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。
mysql> flush privileges;
4、登录你的作为主库使用的Linux中的MySQL后:输入下面命令:
MySQL8之前的数据库版本使用这个命令
mysql> grant replication slave on*.*to'user1'@'%'identified by 'user1@123456';
MySQL8及之后的数据库版本使用这两个命令
- mysql> create user user1 identified with 'mysql_native_password' by 'user1@123456';
- mysql> grant replication slave on*.*to user1;
(上面的SQL用于创建一个用户user1,密码为user1@123456,并给user1用户授予replication slave权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权,具有该权限的用户才能通过该用户复制。说白了user1就是个工具人,用来提供建立主从复制的权限)
5、执行下面SQL,记录下结果中的File和Position的值
- //查看主库的状态
- show master status
注:上面的操作执行完毕后就不在主库中执行其他操作了,因为我们执行其他操作的时候,结果中的File和Position的值会变化,现在从库的这个文件名和position在从库中会使用到。
---------------------------------------------------------------------------------------------------------------------------------
6、配置作为从库的服务器中的 my.cnf文件,加入服务器唯一ID
server-id=101 #服务器唯一id
7、重启MySQL服务器,让配置文件生效
service mysql restart
8、登录MySQL数据库,执行下面的SQL
- mysql> change master to master_host='192.168.80.100',master_user='user1',master_password='user1@123456',master_log_file='mysql-bin.000010',master_log_pos=154;
-
- #启动slave线程(底层就是一个IO_THREAD)
- mysql> start slave
简单说一下这句SQL:
(这一步报错的同学可以先尝试stop slave 这个命令,关闭此线程再执行)
9、执行完之后,所有配置均已完成,但是为了保险起见,我们在从库上面执行一下这句SQL
mysql> show slave status\G;
重点看一下圈出来的三条,若跟上图一样的话,说明你已成功开启两库的主从复制!
(若你的结果是下面的,不要灰心,说明你的3306端口处于关闭状态,往下看步骤,打开就ok了)
主库也要去开启一下3306端口,步骤同上,第六步输入的SQL为:
show master status;
最后再从步骤8往下进行就可以了,注意主库执行完上面的SQL之后,返回的结果要在步骤8中用到哦!
呕心沥血干了两天,踩过N多个坑最终完成了这篇文章和一些踩坑的文章,您要觉得这篇文章写的还不错的话,点个赞呗!