描述:
- master将改变记录到自己的二进制日志binlog中
- slave的I/O线程读取binlog中的内容到自己的中继日志中
- slave的SQL线程读取并解析中继日志,然后应用到自己的数据库中
实践
-
准备两台虚拟机,安装好mysql;主库IP:192.168.217.146,从库IP:192.168.217.149
-
修改主库配置:在/etc/my.cnf中加入log-bin=mysql-bin和server-id=100
-
重启主库服务,systemctl restart mysqld
-
登录MySQL,执行sql:(创建一个用户xiaoming,密码,给该用户授权REPLICATION SLAVE权限。常用于建立复制时需要用到的用户权限,slave必须被master授权具有该权限的用户,才能通过该用户复制)
create user slave@'%' identified by '123456';
grant all privileges on *.* to 'slave'@'%' with grant option;
flush privileges;
-
执行SQL:show master status;查看主库状态,显示File即二进制文件名和position
-
配置从库:修改/etc/my.cnf,添加server-id=101
-
重启从库服务,systemctl restart mysqld
-
登录从库,执行sql:(注意master_log_file和master_log_pos对应上主库的)
-
stop slave; change master to master_host='192.168.217.146',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=439; start slave;
-
-
执行SQL:show slave status;查看从库状态,显示数据(Relay_Log_Pos,Relay_Master_Log_File,Slave_IO_Running,Slave_SQL-Running等信息)