目录
1.介绍
MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的二进制日志功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
MySQL复制过程分成三步:
2.配置
配置的前提条件:至少提前准备好两台服务器,分别安装Mysql并启动服务成功,例如:
主库Master 192.168.140.129
从库Slave 192.168.140.128
(1)配置-主库master
第一步:修改Mysql数据库的配置文件/etc/my.cnf
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=100 #[必须]服务器唯一ID
第二步:重启Mysql服务
systemctl restart mysqld
第三步:登录Mysql数据库,执行下面SQL
GRANT REPLICATION SLAVE ON *.* to 'xujiu'@'%' identified by 'Root@123456';
注:上面SQL的作用是创建一个用户xujiu,密码为Root@123456,并且给xujiu用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
第四步:登录Mysql数据库,执行下面SQL,记录下结果中File和Position的值
show master status;
注:此时主库就不要进行其他mysql的相关操作了。否则结果中File和Position的值会发生变化。
(2)配置-从库slave
第一步:修改Mysql数据库的配置文件/etc/my.cnf
[mysqld]
server-id=101 #[必须]服务器唯一ID(主从不一致)
第二步:重启Mysql服务
systemctl restart mysqld
第三步:登录Mysql数据库,执行下面SQL
stop slave;
change master to master_host='192.168.140.129',master_user='xujiu',master_password='Root@123456',
master_log_file='mysql-bin.XXXXX',master_log_pos=XXX;
start slave;
注1:红色部分根据自己情况修改。分别为:主库所在ip,用户xujiu,密码……,File,Position。
注2:无法启动ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository时,请尝试:
reset slave;
start slave;
注3:克隆的Linux需要修改mysql数据库的UUID
vim /var/lib/mysql/auto.cnf //修改数据库UUID
[auto]
server-uuid=0cff2f53-feb0-11ec-aa50-000c29b27415 //自行修改,我是改的末尾一位数
第四步:执行下面SQL,查看从数据库的状态
show slave status\G;
出现下面的两个Yes即成功了。
或者show slave status(推荐用上面的加上 \G)
3.简单测试
主库新建数据库
成功同步!👏