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. 配置原主节点作为新的从节点
