1. 首页 > 国产数据库教程 > GoldenDB教程 > 正文

GoldenDB教程FG015-GoldenDB集群主从

内容简介

本教程详细介绍GoldenDB数据库的集群主从架构,帮助读者了解集群主从的设计原理和实现方法。风哥教程参考GoldenDB官方文档集群主从相关内容。

学习交流加群风哥微信: itpux-com

目录大纲

Part01-基础概念与理论知识

1.1 集群主从概述

集群主从是一种数据库高可用性架构,通过将数据从主节点复制到从节点,实现数据冗余和故障转移。GoldenDB的集群主从架构支持自动故障转移,确保系统的高可用性和数据一致性。

更多视频教程www.fgedu.net.cn

1.2 集群主从架构

GoldenDB的集群主从架构包括:

  • 主节点(Master):负责处理写操作,将数据变更复制到从节点
  • 从节点(Slave):负责处理读操作,从主节点复制数据
  • 复制机制:通过二进制日志(binlog)进行数据复制
  • 故障转移机制:当主节点故障时,自动将从节点提升为新的主节点

1.3 集群主从特点

GoldenDB集群主从的特点包括:

  • 高可用性:当主节点故障时,自动故障转移,确保系统持续可用
  • 负载均衡:将读操作分散到从节点,提高系统性能
  • 数据冗余:数据在多个节点上有副本,提高数据安全性
  • 可扩展性:可以通过添加从节点来扩展系统的读能力
  • 一致性:确保主从节点之间的数据一致性

风哥提示:集群主从是数据库高可用性的重要解决方案,适用于对可用性要求较高的生产环境。

Part02-集群主从配置

2.1 主从复制配置

主从复制配置的步骤:

# 主节点配置

# 修改主节点配置文件 /goldendb/app/my.cnf

[mysqld]

server-id = 1

log-bin = /goldendb/fgdata/binlog/binlog

binlog-format = ROW

sync-binlog = 1

gtid-mode = ON

enforce-gtid-consistency = ON

# 重启主节点

systemctl restart goldendb

# 创建复制用户

/goldendb/app/bin/goldendb-cli create user ‘repl’@’%’ identified by ‘repl@123’;

/goldendb/app/bin/goldendb-cli grant replication slave on *.* to ‘repl’@’%’;

# 查看主节点状态

/goldendb/app/bin/goldendb-cli show master status;

+——————+———-+————–+——————+——————-+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+——————+———-+————–+——————+——————-+

| binlog.000001 | 12345 | | | 1-1000 |

+——————+———-+————–+——————+——————-+

# 从节点配置

# 修改从节点配置文件 /goldendb/app/my.cnf

[mysqld]

server-id = 2

relay-log = /goldendb/fgdata/relaylog/relaylog

read-only = ON

gtid-mode = ON

enforce-gtid-consistency = ON

# 重启从节点

systemctl restart goldendb

# 配置从节点

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.10′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

# 启动从节点复制

/goldendb/app/bin/goldendb-cli start slave;

# 查看从节点状态

/goldendb/app/bin/goldendb-cli show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.10

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: binlog.000001

Read_Master_Log_Pos: 12345

Relay_Log_File: relaylog.000001

Relay_Log_Pos: 12345

Relay_Master_Log_File: binlog.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 12345

Relay_Log_Space: 12345

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 12345678-1234-1234-1234-1234567890ab

Master_Info_File: /goldendb/fgdata/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 1-1000

Executed_Gtid_Set: 1-1000

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

Master_public_key_path:

Get_master_public_key: 0

Network_Namespace:

1 row in set (0.00 sec)

2.2 主从切换配置

主从切换配置的步骤:

# 手动切换主从

# 在主节点上执行

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli reset master;

# 在从节点上执行

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli reset master;

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.11′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

/goldendb/app/bin/goldendb-cli start slave;

2.3 主从监控配置

主从监控配置的步骤:

# 配置监控脚本

#!/bin/bash

# monitor_replication.sh

# from:www.itpux.com.qq113257174.wx:itpux-com

# web: `http://www.fgedu.net.cn`

# 检查从节点状态

SLAVE_STATUS=$(/goldendb/app/bin/goldendb-cli -e “show slave status\G” | grep -E “Slave_IO_Running|Slave_SQL_Running”)

if echo “$SLAVE_STATUS” | grep -q “Yes” && echo “$SLAVE_STATUS” | grep -q “Yes”; then

echo “Replication is running normally”

else

echo “Replication is not running”

# 发送告警

echo “Replication error on $(hostname)” | mail -s “Replication Alert” admin@fgedu.net.cn

fi

# 添加到定时任务

crontab -e

*/5 * * * * /goldendb/app/scripts/monitor_replication.sh >> /goldendb/app/logs/monitor_replication.log 2>&1

学习交流加群风哥QQ113257174

Part03-集群主从管理

3.1 主从状态管理

主从状态管理的操作:

# 查看主节点状态

/goldendb/app/bin/goldendb-cli show master status;

+——————+———-+————–+——————+——————-+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+——————+———-+————–+——————+——————-+

| binlog.000001 | 12345 | | | 1-1000 |

+——————+———-+————–+——————+——————-+

# 查看从节点状态

/goldendb/app/bin/goldendb-cli show slave status\G;

# 停止从节点复制

/goldendb/app/bin/goldendb-cli stop slave;

# 启动从节点复制

/goldendb/app/bin/goldendb-cli start slave;

# 重置从节点

/goldendb/app/bin/goldendb-cli reset slave;

3.2 主从故障处理

主从故障处理的操作:

# 处理从节点复制错误

# 查看错误信息

/goldendb/app/bin/goldendb-cli show slave status\G | grep -E “Last_IO_Error|Last_SQL_Error”;

# 跳过错误

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli set global sql_slave_skip_counter = 1;

/goldendb/app/bin/goldendb-cli start slave;

# 处理主节点故障

# 在从节点上提升为主节点

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli reset master;

# 重新配置其他从节点

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.11′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

/goldendb/app/bin/goldendb-cli start slave;

3.3 主从性能优化

主从性能优化的操作:

# 优化主节点配置

# 修改主节点配置文件 /goldendb/app/my.cnf

[mysqld]

innodb_flush_log_at_trx_commit = 1

sync_binlog = 1

binlog_group_commit_sync_delay = 100

binlog_group_commit_sync_no_delay_count = 10

# 优化从节点配置

# 修改从节点配置文件 /goldendb/app/my.cnf

[mysqld]

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 4

slave_preserve_commit_order = 1

relay_log_recovery = 1

更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 集群主从部署实战

集群主从部署的实战操作:

# 部署主节点

# 安装GoldenDB

tar -zxvf GoldenDB-8.0.0-linux-x86_64.tar.gz -C /goldendb/

cd /goldendb/GoldenDB-8.0.0-linux-x86_64/

./setup.sh –install

# 配置主节点

vi /goldendb/app/my.cnf

[mysqld]

server-id = 1

log-bin = /goldendb/fgdata/binlog/binlog

binlog-format = ROW

sync-binlog = 1

gtid-mode = ON

enforce-gtid-consistency = ON

# 启动主节点

systemctl start goldendb

# 创建复制用户

/goldendb/app/bin/goldendb-cli create user ‘repl’@’%’ identified by ‘repl@123’;

/goldendb/app/bin/goldendb-cli grant replication slave on *.* to ‘repl’@’%’;

# 部署从节点

# 安装GoldenDB

tar -zxvf GoldenDB-8.0.0-linux-x86_64.tar.gz -C /goldendb/

cd /goldendb/GoldenDB-8.0.0-linux-x86_64/

./setup.sh –install

# 配置从节点

vi /goldendb/app/my.cnf

[mysqld]

server-id = 2

relay-log = /goldendb/fgdata/relaylog/relaylog

read-only = ON

gtid-mode = ON

enforce-gtid-consistency = ON

# 启动从节点

systemctl start goldendb

# 配置主从复制

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.10′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

/goldendb/app/bin/goldendb-cli start slave;

# 验证主从复制

/goldendb/app/bin/goldendb-cli show slave status\G;

4.2 主从切换实战

主从切换的实战操作:

# 手动主从切换

# 1. 检查从节点状态

/goldendb/app/bin/goldendb-cli show slave status\G | grep -E “Slave_IO_Running|Slave_SQL_Running|Seconds_Behind_Master”;

# 2. 停止主节点写操作

/goldendb/app/bin/goldendb-cli flush tables with read lock;

# 3. 等待从节点同步完成

/goldendb/app/bin/goldendb-cli show slave status\G | grep Seconds_Behind_Master;

# 4. 在从节点上停止复制并提升为主节点

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli reset master;

# 5. 在原主节点上释放读锁

/goldendb/app/bin/goldendb-cli unlock tables;

# 6. 配置原主节点作为新的从节点

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.11′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

/goldendb/app/bin/goldendb-cli start slave;

4.3 主从故障处理实战

主从故障处理的实战操作:

# 处理从节点复制中断

# 查看错误信息

/goldendb/app/bin/goldendb-cli show slave status\G | grep -E “Last_IO_Error|Last_SQL_Error”;

# 处理IO错误

# 检查网络连接

ping 192.168.1.10

# 检查主节点状态

systemctl status goldendb

# 重启从节点复制

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli start slave;

# 处理SQL错误

# 跳过错误

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli set global sql_slave_skip_counter = 1;

/goldendb/app/bin/goldendb-cli start slave;

# 处理主节点故障

# 1. 检查主节点状态

ping 192.168.1.10

systemctl status goldendb

# 2. 在从节点上提升为主节点

/goldendb/app/bin/goldendb-cli stop slave;

/goldendb/app/bin/goldendb-cli reset master;

# 3. 配置应用连接到新的主节点

# 修改应用配置文件中的数据库连接信息

# 4. 修复原主节点

# 修复硬件故障或软件问题

systemctl start goldendb

# 5. 配置原主节点作为新的从节点

/goldendb/app/bin/goldendb-cli change master to \

master_host=’192.168.1.11′, \

master_port=3306, \

master_user=’repl’, \

master_password=’repl@123′, \

master_auto_position=1;

/goldendb/app/bin/goldendb-cli start slave;

from GoldenDB视频:www.itpux.com

Part05-风哥经验总结与分享

5.1 集群主从最佳实践

集群主从的最佳实践建议:

  • 合理配置主从复制:使用GTID复制,确保数据一致性
  • 监控主从状态:建立完善的监控机制,及时发现复制问题
  • 定期备份:即使有主从复制,也要定期备份数据
  • 测试故障转移:定期测试故障转移流程,确保在实际故障时能够快速恢复
  • 优化性能:根据实际情况优化主从复制性能
  • 安全性:限制复制用户的权限,使用安全的密码

5.2 常见问题与解决方案

集群主从常见问题及解决方案:

  • 复制延迟:优化网络连接,增加从节点资源,使用并行复制
  • 复制中断:检查网络连接,修复SQL错误,重启复制
  • 主节点故障:快速提升从节点为主节点,确保业务连续性
  • 数据不一致:使用GTID复制,定期检查数据一致性
  • 性能问题:优化主节点配置,使用从节点分担读负载

5.3 学习建议与职业发展

学习GoldenDB集群主从的建议:

  • 深入理解主从复制的原理和机制
  • 掌握主从配置和管理的方法
  • 熟悉故障转移和故障处理的流程
  • 积累实际项目中的集群主从部署和管理经验
  • 关注官方文档和技术社区,了解最新的集群主从技术

职业发展建议:

  • 初级DBA:掌握基本的主从配置和管理
  • 中级DBA:熟悉主从故障处理和性能优化
  • 高级DBA:精通大规模集群的设计和管理

风哥提示:集群主从是数据库高可用性的重要解决方案,掌握集群主从技术对于保证数据库系统的稳定运行至关重要。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息