欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > MYSQL------MySQL 复制MySQL Cluster 架构

MYSQL------MySQL 复制MySQL Cluster 架构

2025/1/12 3:59:44 来源:https://blog.csdn.net/yuanbenshidiaos/article/details/144980784  浏览:    关键词:MYSQL------MySQL 复制MySQL Cluster 架构

MySQL 复制

安装配置

主服务器配置

  1. 首先,在主服务器的配置文件(my.cnfmy.ini)中添加以下基本配置:
[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
  • server-id:为服务器分配唯一的标识,主服务器通常设置为 1
  • log-bin:启用二进制日志,记录对数据库的修改操作,用于复制到从服务器。
  1. 重启主服务器使配置生效:
sudo systemctl restart mysqld

从服务器配置

  1. 在从服务器的配置文件中添加以下配置:
[mysqld]
server-id = 2
  • server-id:为从服务器分配唯一的标识,一般从服务器的 server-id 大于 1
  1. 重启从服务器:
sudo systemctl restart mysqld

主要复制启动选项

log_slave_updates

  • 功能:使从服务器将其接收到的更新操作记录到自己的二进制日志中,以便级联复制或其他需求。
  • 配置示例
[mysqld]
log_slave_updates = 1

master_connect_retry

  • 功能:当从服务器与主服务器连接失败时,设置重新连接的间隔时间(秒)。
  • 配置示例
[mysqld]
master_connect_retry = 60

read_only

  • 功能:设置从服务器为只读模式,防止在从服务器上进行写操作,保证数据一致性。
  • 配置示例
[mysqld]
read_only = 1

制定复制的数据库或者表

  • 功能:可以指定仅复制某些数据库或表,而不是全部复制。
  • 配置示例
[mysqld]
replicate-do-db = my_database
replicate-do-table = my_database.my_table
  • replicate-do-db:只复制指定的数据库。
  • replicate-do-table:只复制指定的表。

slave_skip_errors

  • 功能:让从服务器跳过某些复制错误,继续复制过程。
  • 配置示例
[mysqld]
slave_skip_errors = 1062
  • 可以使用 slave_skip_errors 跳过特定的错误码,如 1062(重复键错误)。

日常管理维护

查看从服务器的状态

  • 使用 SQL 命令查看从服务器状态
SHOW SLAVE STATUS\G
  • 该命令会输出从服务器的复制状态信息,包括 Slave_IO_StateMaster_HostMaster_Log_File 等,有助于了解复制是否正常运行,以及出现问题时的排查。

主从服务器同步维护

  • 启动复制
CHANGE MASTER TOMASTER_HOST='master_host_name',MASTER_USER='replication_user',MASTER_PASSWORD='replication_password',MASTER_LOG_FILE='recorded_log_file',MASTER_LOG_POS=recorded_log_position;
START SLAVE;
  • 解释:
    • MASTER_HOST:主服务器的主机名或 IP 地址。
    • MASTER_USERMASTER_PASSWORD:复制用户和密码。
    • MASTER_LOG_FILEMASTER_LOG_POS:从服务器开始复制的主服务器二进制日志文件和位置。

从服务器复制出错的原理

  • 常见错误原因
    • 网络问题导致从服务器与主服务器断开连接。
    • 主从服务器的数据不一致,可能是由于在从服务器上进行了未经授权的写操作。
    • 复制命令或语句在从服务器上执行失败,例如由于数据类型不匹配或约束冲突。

log event entry exceeded max_allowed_packet 的处理

  • 问题描述:当二进制日志中的事件大小超过 max_allowed_packet 参数设置的值时,会出现该错误。
  • 解决方法
    1. 在主服务器上增大 max_allowed_packet 参数:
    SET GLOBAL max_allowed_packet = 1024 * 1024 * 10;  -- 设置为 10MB
    
    1. 同时,在从服务器上也适当增大该参数。

多主复制时的自增长变量冲突问题

  • 问题描述:在多主复制环境中,不同主服务器生成的自增长 ID 可能会冲突。
  • 解决方法
    1. 使用不同的自增长步长和起始值,例如:
    -- 在主服务器 1 上
    SET @@auto_increment_increment = 2;
    SET @@auto_increment_offset = 1;
    -- 在主服务器 2 上
    SET @@auto_increment_increment = 2;
    SET @@auto_increment_offset = 2;
    
    1. 或者使用 UUID 作为唯一标识符,而不是自增长 ID

查看服务器的复制制度

  • 使用 SQL 语句查看复制信息
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
  • SHOW MASTER STATUS 显示主服务器的二进制日志信息,SHOW SLAVE STATUS 显示从服务器的复制状态。

切换主从服务器

  • 步骤
    1. 在新的主服务器上启用二进制日志和相应的复制配置。
    2. 在从服务器上重新配置复制,使用新的主服务器信息:
    STOP SLAVE;
    CHANGE MASTER TOMASTER_HOST='new_master_host',MASTER_USER='new_replication_user',MASTER_PASSWORD='new_replication_password',MASTER_LOG_FILE='new_recorded_log_file',MASTER_LOG_POS=new_recorded_log_position;
    START SLAVE;
    

总之,MySQL
复制是实现数据冗余、负载均衡和高可用性的重要手段。在使用过程中,需要合理配置复制选项,进行日常维护和状态监控,及时处理复制过程中的问题,确保主从服务器之间的数据同步正常进行。同时,根据不同的场景和需求,可以调整复制策略和解决复制中的特殊问题,如多主复制的自增长冲突等。

在这里插入图片描述

MySQL Cluster 架构

MySQL Cluster 的版本支持

  • MySQL Cluster 版本:MySQL Cluster 是 MySQL 数据库的高可用和分布式集群解决方案,不同版本提供不同的功能和性能优化。
  • 支持的特性
    • 确保选择的 MySQL Cluster 版本支持所需的功能,如多主复制、自动分片、高可用性等。
    • 不同版本可能支持不同的存储引擎,通常使用 NDB 存储引擎进行集群数据存储。

管理节点配置步骤

配置文件

  • 创建管理节点的配置文件,通常命名为 config.ini
[ndbd default]
NoOfReplicas = 2
DataMemory = 80M
IndexMemory = 18M[ndbd]
HostName = node1
NodeId = 2[ndbd]
HostName = node2
NodeId = 3[ndb_mgmd]
NodeId = 1
HostName = mgmnode
DataDir = /var/lib/mysql-cluster[mysqld]
NodeId = 50
HostName = sqlnode1[api]
NodeId = 100
  • 解释
    • [ndbd default]:设置 NDB 存储节点的默认属性,如副本数和内存使用。
    • [ndbd]:定义每个存储节点,包括主机名和节点 ID。
    • [ndb_mgmd]:管理节点的配置,指定节点 ID 和数据目录。
    • [mysqld]:SQL 节点的配置,包括节点 ID 和主机名。

启动管理节点

ndb_mgmd -f config.ini --initial
  • 解释
    • ndb_mgmd 是管理节点的启动命令。
    • -f config.ini 表示使用指定的配置文件。
    • --initial 仅在首次启动或重建集群时使用,会初始化管理节点的配置。

SQL 节点和数据节点的配置

SQL 节点配置

  • 在 SQL 节点的 my.cnfmy.ini 中添加以下配置:
[mysqld]
ndbcluster
ndb-connectstring=mgmnode
  • 解释
    • ndbcluster 表示启用 MySQL Cluster 功能。
    • ndb-connectstring 指向管理节点的主机名。

数据节点配置

  • 对于数据节点,确保 config.ini 中已正确配置存储节点信息。
  • 启动数据节点:
ndbd

开始使用 Cluster

启动 Cluster

  • 首先启动管理节点(如上述)。
  • 然后启动数据节点:
ndbd
  • 最后启动 SQL 节点:
systemctl start mysqld

Cluster 的测试

  • 连接到 SQL 节点:
mysql -u root -p
  • 执行 SQL 语句,测试集群功能,例如创建表:
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY,data VARCHAR(100)
) ENGINE=ndbcluster;
  • 解释
    • 使用 ENGINE=ndbcluster 表示该表使用 NDB 存储引擎,存储在集群中。

Cluster 的关闭

  • 关闭 SQL 节点:
systemctl stop mysqld
  • 关闭数据节点:
ndbd --shutdown
  • 关闭管理节点:
ndb_mgmd --shutdown

维护 Cluster

数据备份

  • 使用 mysqldump 进行逻辑备份:
mysqldump -u root -p --all-databases > cluster_backup.sql
  • 对于 NDB 存储引擎,也可以使用 ndb_restore 进行物理备份。

数据恢复

  • 对于逻辑备份,使用 mysql 命令恢复:
mysql -u root -p < cluster_backup.sql
  • 对于物理备份,使用 ndb_restore 恢复到集群:
ndb_restore -c mgmnode -m -r -n 1 -b backup_dir

日志管理

  • 管理节点日志:查看 ndb_$NodeId_cluster.log 文件。
  • SQL 节点日志:查看 MySQL 服务器的常规日志文件,如 /var/log/mysql/error.log/var/log/mysql/query.log

小结

  • MySQL Cluster 提供了高可用、分布式的数据库解决方案。
  • 配置时需要仔细设置管理节点、SQL 节点和数据节点的配置文件。
  • 启动和关闭集群时要遵循一定的顺序,确保数据一致性。
  • 维护集群涉及数据备份和恢复,以及日志管理。
  • 在使用 MySQL Cluster 时,需要考虑性能、高可用性和可扩展性,根据业务需求调整配置,解决可能出现的性能和管理问题。 ```

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com