mysql主从复制

发布时间 2023-04-19 16:53:50作者: 手可摘星陈1024

数据库主从复制的概述和原理这里就不做描述了,这里最重要的就是一个binlog日志,有兴趣的可以去了解,以下着重讲解如何搭建:

1、准备工作

准备两台服务器环境,安装好mysql服务

192.168.80.131  主库
192.168.80.132  从库

开放两台服务器的3306端口(或者关闭防火墙服务)

查看机器中mysql服务的状态:systemctl  status  mysqld

2、主库的配置

修改my.cnf配置文件 ,在linux环境中 位置在 /etc/my.cnf,在windows环境中位置在安装目录下

#mysql的服务id,要保证在整个集群中唯一,取值范围在 1 ~ 2^32-1,默认为1
server-id=1

#配置是否只读,1为只读,0代表可读可写
read-only=0

#指定不需要同步的数据库
#binlog-ignor-db=mysql

#指定同步的数据库
#binlog-do-db=db01

重启mysql服务
systemctl  restart  mysqld

 

登录mysql,创建一个远程连接的账号,并赋以主从复制的权限(用于从库去连接主库)

#创建一个用户chencan,%代表允许该用户在任意主机上来访问当前服务器,密码是Abcd1234@
create  user  'chencan'@'%'  identified  with mysql_native_password  BY  'Abcd1234@'

#赋予chencan用户主从复制的权限
grant  replication  slave  on  *.*  to  'chencan'@‘%’

 

#查看二进制日志坐标

show  master  status

file  ->  代表binlog日志写到了哪个文件中
position -> 日志写到了日志文件的哪个位置

 

3、从库的配置

修改从库的配置文件

#mysql的服务id,要保证在整个集群中唯一,取值范围在 1 ~ 2^32-1,默认为1(注意不能和主库一样)
server-id=1

#配置是否只读,1为只读(对普通用户,超级管理员还是可读可写的),0代表可读可写
read-only=1

#设置超级管理员是否只读,1为只读,0代表可读可写
super-read-only=1
#重启mysql服务 systemctl restart mysqld

 

登录mysql,设置主库的配置

#mysql8.0.23以及之后版本的语法
CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.80.131',SOURCE_USER='chencan',SOURCE_PASSWORD=‘Abcd1234@’, SOURCE_LOG_FILE='xxx',SOURCE_LOG_POS=xxx;

#mysql8.0.23以前的语法
CHANGE MASTER TO MASTER_HOST='192.168.80.131',MASTER_USER='chencan',MASTER_PASSWORD=‘Abcd1234@’, MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxx;

 

8.0.23以及之后的参数名 含义 8.0.23之前的参数名
SOURCE_HOST 主库的ip地址 MASTER_HOST
SOURCE_USER 连接主库的用户名 MASTER_USER
SOURCE_PASSWORD 连接主库的密码 MASTER_PASSWORD
SOURCE_LOG_FILE 主库中binlog日志文件名 MASTER_LOG_FILE
SOURCE_LOG_POS 主库中binlog日志文件的开始位置 MASTER_LOG_POS
 

开启同步操作

start  replica;    8.0.23之后
start  slave;      8.0.23之前

 

查看主从同步状态

show  replica  status\G;   8.0.23之后
show  slave  status\G;     8.0.23之前

如果:

Replica_Io_Running: YES
Replica_Sql_Running:Yes

则主从同步开启成功