保姆级教程:MySQL配置主从数据库

MySQL配置主从数据库

原理简述:

简单来说,主从数据库就是从库读取主库的日志信息,对从库的数据进行增删改的操作,使从库的数据保持和主库一致

基本要求:

1.两个数据库版本号相同,例如:主库版本号为8.0.23,从库版本号也要使8.0.23,
2.配置主从数据库时要求主从库内数据相同,且配置时两个数据库没有增删改的操作,否则会造成数据不一致的情况

主库设置:

配置文件设置
默认的配置文件路径:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
windows系统配置文件为:my.ini
Linux系统配置文件为:my.cnf

在配置文件中修改编辑如下代码:

# MySQL服务ID,正常配置文件内默认为1,
server-id=1
# 设置是否为只读,1为只读,0为读写,有的配置文件内没有这个内容,直接写进去就行
read-only=0 
# [可选]设置不要复制的数据库
# binlog-ignore-db=information_schema,mysql,quartz
# [可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
# binlog-do-db=tokercart

之后重启MySQL服务,Windows用户可以在服务中找到MySQL服务进行重启,不嫌麻烦可以重启电脑
systemmctl restart mysqld

创建主从复制的用户,并赋予权限

新建一个用户,例如:replication ,密码:QWEqwe@123456
CREATE USER 'replication'@'%'IDENTIFIED WITH mysql_native_password BY 'QWEqwe@123456';
为用户’replication’@'%'分配主从复制权限
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

查看二进制日志坐标,并做好记录,一会需要用到

show master status;
保姆级教程:MySQL配置主从数据库_第1张图片

注意: 此时不要对主库进行任何的增删改的操作!!!

从库设置:

配置文件设置
在配置文件中修改编辑如下代码:
# MySQL服务ID,要保证整个集群环境中唯一,取值范围:1到2的32次方减1,和主库的不一样即可
server-id=2
# 设置是否为只读,1为只读,0为读写,从库一般设置为只读模式即可(仅代表普通用户只读)
read-only=1 
# 超级管理员用户只读
# super-read-only=1 
之后重启MySQL服务器

systemmctl restart mysqld

在从库中设置与主库相连接的相关配置

下面是8.0.23之前版本在从库中执行的SQL:
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx',MASTER_USER='xxx',MASTER_PASSWORD='XXX',MASTER_LOG_FILE='XXX',MASTER_LOG_POS=XXX;
MASTER_HOST 主库IP,
MASTER_USER 刚才建立的用户,
MASTER_PASSWORD 刚才建立的用户密码,
MASTER_LOG_FILE指的是二进制文件名,例如,MASTER_LOG_FILE=‘windows-bin.000185’,
MASTER_LOG_POS指的是日志位置,注意,不需要用引号,例如,MASTER_LOG_POS=3877
为确保安全,可以再次查看主库的日志坐标信息

下面是8.0.23之后版本在从库中执行的SQL:
CHANGE PEPLICATION SOURCE TO SOURCE_HOSE='xxx.xxx',SOURCE_USER='XXX',SOURCE_PASSWORD='XXX',SOURCE_LOG_FILE='XXX',SOURCE_LOG_POS=XXX;
SOURCE_LOG_FILE指的是二进制文件名,SOURCE_LOG_POS指的是日志位置

开启同步操作

在从库中执行的SQL:

start replica; # 8.0.23之后
start slave; # 8.0.23之前
查看同步状态

在从库中执行的SQL:

show replica status; # 8.0.23之后
show slave status; # 8.0.23之前

状态中显示replica_io_tunningreplica_sql_tunning都为yes,则同步开启正常(单词拼写的大小写懒得切换了,单词字母对就行)

你可能感兴趣的:(数据库操作,数据库,mysql,数据库架构)