-- 主从复制 (将ddl和dml操作通过二进制日志传到从库服务器中,然后在从库上对日志重新执行,使得主库和从库数据保持一致)
-- master ---> slave
-- 作用 1.主库出现问题,可以快速切到从库 2.实现读写分离 3.可以在从库执行备份,避免备份期间影响主库服务
-- 主库配置
1.修改配置文件 /etc/my.cnf
#mysql服务id,保证集群环境中唯一,取值范围: 1- 2^23 - 1,默认为1
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指定不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01
2.重启服务
3.登录mysql,创建远程连接的账号,并授予主从复制的权限
#创建itcast用户,并设置密码,该用户可以在任意主机连接该mysql服务
create user 'itcast'@'%' identified with mysql_native_password by 'Root@123456';
#为'itcast'@'%'用户分配主从复制权限
grant replication slave on *.* to 'itcast'@'%';
4.通过指令,查看二进制日志坐标
show master status;
-- 从库配置
1.修改配置文件 /etc/my.cnf
#mysql服务id,保证集群环境中唯一,取值范围: 1- 2^23 - 1,默认为1
server-id=2
#是否只读,1代表只读,0代表读写
read-only=1
2.重启服务
3.登录mysql,设置主库配置
change replication source to source_host='x.x.x.x',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;
-- 上述是8.0.23中的语法,如果mysql是8.0.23之前的版本,执行如下sql:
change master to master_host='x.x.x.x',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
4.开启同步配置
start replica; # 8.0.22之后
start slave; # 8.0.22之前
5.查看主从同步状态
show replica status; # 8.0.22之后
show slave status; # 8.0.22之前