1.介绍
MySQL主从复制是一个异步的复制过程,
底层是基于Mysql数据库自带的二进制日志功能
。就是
一台或多台MysQL数据库(slave,即从库)从另一台MNySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致
。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
MySQL复制过程分成三步:
- master将改变记录到二进制日志(binary log)
- slave将master的binary log拷贝到它的中继日志(relay log)
-
slave重做中继日志中的事件,将改变应用到自己的数据库中
2.具体操作
首先准备两台装有mysql的OS(如果使用虚拟机,不要使用克隆之后改IP的方式,直接新建两个虚拟机)
1.配置主库Master
1.1首先修改mysql的配置文件
vim /etc/my.cnf
在[mysqld]后添加
log-bin=mysql-bin
server-id=100
log-bin=mysql-bin表示启动二进制日志,server-id=100表示唯一ID
然后wq退出保存
1.2重启mysql服务
systemctl restart mysqld
1.3登录到mysql
mysql -u root -p
登录后执行以下SQL
grant REPLICATION SLAVE on *.* to 'sirius'@'%' identified by 'Chd1998__';
注:上面SQL的作用是创建一个用户sirius,密码为Chd1998__,并且给xiaoming用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须是被master授权具有该权限的用户,才能通过该用户复制。
1.4执行
show master status;
记录结果当中的以下值,之后便不要再进行任何操作,防止结果发生改变
2.配置从库Slave
现在操作另一个mysql服务器
2.1首先修改mysql的配置文件
vim /etc/my.cnf
在[mysqld]后添加
server-id=101
2.2重启mysql服务
systemctl restart mysqld
2.3登录到mysql
mysql -u root -p
登录后执行以下SQL
change master to master_host='主库master的ip地址',master_user='sirius',master_password='Chd1998__',master_log_file='mysql-bin.000001',master_log_pos=439;
master_host为主库master的ip地址,master_user、master_password为步骤1.3当中创建的用户名和密码,master_log_file、master_log_pos为步骤1.4当中查询到的两个值
执行成功后开启slave
start slave;
2.4查看一下从库的状态
show slave status;
显示的结果可能比较混乱,我们可以将其复制到文本编辑器查看。
结果很多,但我们重点看以下两个,如果都是yes,说明配置成功
3.测试
在主数据库master创建一个databases
会发现从数据库slave也创建了一个