我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

MySQL主从复制架构设置步骤详解

来源:网络 更新时间:2024-08-17 09:34:12

在进行MySQL主从复制架构设置之前,需要准备3、4、5台虚拟机,并在每台虚拟机上安装MySQL 8.0。

主从架构通常包括“一主多从”和“级联复制”两种模式。它们都依赖于binlog日志文件进行同步,其中binlog日志记录DDL和部分DDL语句。在同步过程中,从库将重新执行这些语句以实现主从同步。

步骤1:

首先,需要配置主/从服务器的 server_id 。如果不清楚MySQL服务器的 server_id ,可以使用命令: SHOW VARIABLES LIKE 'server_id'; 来查询。值得注意的是, server_id 的值并没有严格的规定,只需要确保全局唯一即可。默认情况下, server_id 的值为1。

对于Debian服务器,编辑命令如下:nano /etc/mysql/my.conf,并加入以下节点。假设主库设置为1,从库设置为2,保存后重启数据库:
systemctl restart mysql

[mysqld]
server-id=1 #主库配置加入
[mysqld]
server-id=2 #从库配置加入

步骤2(非必要):

在主机上执行 show master status; 命令以显示最新的日志文件和当前位置。

File表示当前正在写入的二进制日志文件名。Position表示当前二进制日志文件的偏移量,即下一个要写入的位置。Binlog_Do_DB表示主服务器上配置的需要记录到二进制日志中的数据库。Binlog_Ignore_DB表示主服务器上配置的不需要记录到二进制日志中的数据库。Executed_Gtid_Set在GTID模式下,该属性表示已经执行过的全局事务标识符的集合。

步骤3:

在从服务器上连接主服务器进行主从同步,执行以下代码:

CHANGE REPLICATION SOURCE to
SOURCE_HOST='192.168.3.107',
SOURCE_USER='root',
SOURCE_PASSWORD='1234',
SOURCE_LOG_FILE='binlog.000009',
SOURCE_LOG_POS=0;

其中,SOURCE_HOST表示主库的连接地址,SOURCE_USER表示账号,SOURCE_PASSWORD表示密码,SOURCE_LOG_FILE表示主库当前的二进制文件名,SOURCE_LOG_POS表示当前二进制日志文件的偏移量。

执行完上述步骤后,可以通过 show REPLICA status; 命令查看复制集群状态。通过 start REPLICA; stop REPLICA; RESET REPLICA ALL; 命令可以启动、暂停或删除集群。

通过设置SOURCE_HOST地址连接主库或从库,就可以轻松实现一主多从或一主一从一从的链式架构。

GTID模式(推荐)

MySQL主从复制中提供了一种GTID模式。使用 SHOW GLOBAL VARIABLES LIKE 'gtid_mode'; 命令查看GTID模式的状态。GTID是一种新的日志格式,每个事务都有一个唯一的GTID,保证了事务在整个复制拓扑中的唯一性。与传统日志格式相比,GTID是以事务为单位,而传统日志是基于日志位置。

执行 RESET MASTER; 命令可以重置主库的binlog日志。需要注意的是,一旦重置了日志,将丢失所有的日志数据,新的日志将从00001开始。编辑 nano /etc/mysql/my.cnf 文件,按1-5的顺序对各个数据库的 server_id 进行配置,主库和从库都需要进行配置。

[mysqld]
server-id=1
gtid_mode=on
enforce_gtid_consistency=true

其中,gtid_mode表示开启GTID模式,enforce_gtid_consistency表示强制GTID一致性,有助于提高数据的可靠性和一致性,防止数据丢失或损坏。

从库执行以下代码:

CHANGE REPLICATION SOURCE to 
SOURCE_HOST='192.168.3.107',
SOURCE_USER='root',
SOURCE_PASSWORD='123',
SOURCE_AUTO_POSITION=1;

可以发现,此时不再需要填写SOURCE_LOG_FILE和SOURCE_LOG_POS,因为GTID的一个好处是自动定位日志文件和位置,减少了配置的复杂性。其它的集群管理与传统的命令一致。

#主库常用命令
show master status  #查看主库状态
reset master;       #重置主库binlog日志

#从库常用命令
show replica status;    #查看从库状态
start replica;          #开始同步
stop replica;           #暂停同步
reset replica all;      #重置(删除)全部同步
select * from performance_schema.replication_applier_status_by_worker; #查看同步线程的信息(主要用于查看具体报错信息)

#其它
show variables like 'server_id';         #查看server_id
show global variables like 'gtid_mode';  #查看gtid状态