MySQL8 主从配置

MySQL8 主从配置,MySQL8教程,介绍 MySQL8 主从配置和示例等。

【全栈教程】:https://try8.cn/article
教程目录:
教程内容:
最近更新:2023-04-17

一、MySQL8 主从配置介绍

将一台 MySQL 主服务器(或源服务器)的数据复制到另外一台或多台 MySQL 从服务器(或副本服务器)上称为主从复制。通过修改变量或 MySQL8 配置文件,您可以轻松实现复制全部或部分库表。


1.1、主从配置作用

您可以通过主从配置来解决很多不同的问题,包括性能、备份问题,或为减轻系统故障等。

  • 通过读写分离,分散单机或源服务器负载;
  • 在副本服务器上进行安全备份、实施数据分析等;
  • 实现远程数据分发,而无需提供源服务器权限。


二、MySQL8 主从配置详细教程

主从服务器都必须配置唯一的服务器ID、专用的用户和登录凭据,准备复制的数据库表等。


2.1、主服务器配置

要将主服务器使用基于二进制文件的复制,必须确保开启二进制日志,并建立唯一的服务器ID。MySQL8 默认的服务器ID是1,你可以通过修改 server_id 来动态修改该值。


设置服务器ID:

#查看当前主服务器ID
show variables like 'server_id'; 
# 设置主服务器ID
set global server_id = 1;


启用二进制日志:

# 查看二进制日志状态
show variables like 'log_bin'; 
# 通过修改 mysql 配置文件来启用二进制日志
log-bin=/data/mysql/bin/master


2.2、从服务器配置

每一个从服务器也必须设置一个唯一的服务器ID,可以由系统变量指定或者直接修改配置文件,从服务器ID必须唯一且不能和主服务器ID相同。

# 通过系统变量设置从服务器ID
set global server_id = 11;
# 通过配置文件设置从服务器ID
[mysqld]
server-id=11


关于从服务器二进制日志:一般从服务器是不需要设置二进制日志的,但是从服务器二进制日志也是默认启用的,从服务器的二进制日志主要是为了数据备份和崩溃恢复等作用。


2.3、创建专用账号

每一个从服务器都需要使用 MySQL 用户名和密码连接到主服务器,因此主服务器必须有一个账号可供从服务器连接。您可以选择为每一个从服务器创建不同的账号,或为每一个从服务器使用相同的账号。

# 在主服务器上执行创建和授权命令
create user 'try8_slave'@'192.168.0.11' identified by 'try8_password';
grant replication slave on *.* to 'try8_slave'@'192.168.0.11';


2.4、获取复制坐标

从服务器在指定的点开始复制过程,首先要拿到主服务器二进制日志的当前坐标。


首先,设置主服务器为只读状态:

flush tables with read lock;


然后,查看主服务器当前二进制日志文件名和位置:

show master status;


小提示:其中 File 显示日志文件的名称,Position 显示文件的位置ID,先记录 File 和 Position 的值,稍后使用。


2.5、从服务器连接

假设上述准备工作已完成,且主从服务器上都有相同的数据库,那么现在就可以在从服务器上建立连接进行自动复制了。在 MySQL 8.0.23 之前 使用 change master to 语句,最新版本使用change replication source to 语句。

# 老版本
change master to
    master_host='192.168.0.1',
    master_user='try8_slave',
    master_password='try8_password',
    master_log_file='master.000001',
    master_log_pos=1;
  
# 新版本
change replication source to
    source_host='192.168.0.1',
    source_user='try8_slave',
    source_password='try8_password',
    source_log_file='master.000001',
    source_log_pos=1;


检测从服务器的状态:

show slave status


三、MySQL8 主从配置完整示例

本教程示例中,192.168.0.1 为主服务器 IP 地址, 192.168.0.11 为从服务器 IP 地址,如需创建一主多从方式,只需要重复步骤创建类似 192.168.0.12、192.168.0.13... 等 IP 地址。


3.1、MySQL8 主数据库

首先,打开主数据库 MySQL8 配置文件:

vim /etc/my.cnf
或:vim /etc/mysql/my.cnf
或:vim /etc/mysql/conf.d/mysqld.cnf


添加主数据库配置示例:

[mysqld]
log-bin=/data/mysql/bin/master
server-id=1
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=try8


然后,添加主数据库账号示例:

# 进入 MySQL 控制台
mysql -uroot -p
# 账号创建和授权命令
create user 'try8_slave'@'192.168.0.11' identified by 'try8_password';
grant replication slave on *.* to 'try8_slave'@'192.168.0.11';
# 刷新权限,或者重启 MySQL 服务器
flush privileges;
systemctl restart mysql;
# 记录字段 File 和 Position,稍后使用
show master status;


3.2、MySQL8 从数据库

首先,打开从数据库 MySQL8 配置文件:

vim /etc/my.cnf
或:vim /etc/mysql/my.cnf
或:vim /etc/mysql/conf.d/mysqld.cnf


添加从数据库配置示例:

[mysqld]
log-bin=/data/mysql/bin/master
server-id=11
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=try8


然后,处理从数据库权限:

# 进入 MySQL 控制台
mysql -uroot -p
# 刷新权限,或者重启 MySQL 服务器
flush privileges;
systemctl restart mysql;
# 停止监听服务
stop slave;
# 开启复制连接命令
# 老版本
change master to
    master_host='192.168.0.1',
    master_user='try8_slave',
    master_password='try8_password',
    master_log_file='master.000001',
    master_log_pos=1;
  
# 新版本
change replication source to
    source_host='192.168.0.1',
    source_user='try8_slave',
    source_password='try8_password',
    source_log_file='master.000001',
    source_log_pos=1;
# 启动监听服务
start slave;


最后,检测从服务器的状态:

show slave status


3.3、MySQL8 主从配置检测

MySQL8 主从配置完成以后,您可以通过简单的更新语句测试是否复制成功,如果复制失败,请仔细核对如上每一步。

# 登录主库更新指定表数据
update try8_dev set try8_name='已更新' where try8_id=1;
# 登录从库查看对应更新数据
select * from try8_dev where try8_id=1;


四、MySQL8 主从配置 总结

MySQL8教程 - MySQL8 主从配置,介绍 MySQL 和 MySQL8 数据库,从MySQL8 主从配置简单介绍开始,逐步到 MySQL8 主从配置详细示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。


《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。