Spring Cloud 微服务系列文章,点击上方合集↑
1. 开头
在生产环境中,为了应对大量的读写请求并减轻数据库的负载压力,常常会使用MySQL主从同步来实现读写分离的架构。通过这种架构,主数据库负责处理写操作,而从数据库则专注于处理读操作,达到了在提高性能的同时保证了数据的高可用性。
主从同步的实现原理主要依赖于MySQL的二进制日志binlog
功能。当在主数据库上进行写操作时,MySQL会将这些操作记录下来并保存为二进制文件。从数据库会持续监测主数据库上的二进制日志,实时读取并执行这些日志中的操作,从而保持与主数据库的数据一致性。
2. 主数据库(master)
2.1 my.cnf配置文件
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
character_set_server=utf8mb4
server-id
配置数据库的id,主数据库配置为1log-bin=mysql-bin
开启二进制记录binlog-ignore-db
配置不需要同步的数据库
2.2 查看binlog信息
SHOW MASTER STATUS
命令用于查看MySQL主服务器当前正在使用的二进制日志文件的文件名和偏移量信息。
mysql -uroot -p
show master status
binlog
文件名File mysql-bin.000003
和偏移量Position 188
记一下,后面slave需要用。
3. 从数据库(slave)
3.1 my.cnf配置文件
[mysqld]
server-id=2
read_only=1
server-id
配置数据库的id,从数据库配置为2read_only=1
只读模式
3.2 配置同步参数
进入mysql命令控制台
mysql -uroot -p
CHANGE MASTER TO MASTER_HOST='192.168.31.163',\
MASTER_PORT=3312,\
MASTER_USER='root',\
MASTER_PASSWORD='123456',\
MASTER_LOG_FILE='mysql-bin.000003',\
MASTER_LOG_POS=188
3.3 开启主从同步
在从服务器上执行以下命令,启动主从同步:
START SLAVE;
可以使用以下命令检查主从复制的状态:
SHOW SLAVE STATUS\G
- 查看输出中
Slave_IO_Running
和Slave_SQL_Running
的值。如果这些状态为yes
,则表示主从同步已成功建立。
用Navicat等数据库工具去测试一下,master更新数据立马被同步到slave。
4. 结尾
本文我们学习了如何配置和管理MySQL主从同步,实现了在生产环境中的读写分离和高可用性。实际情况下:写数据库只有一个,读数据库会有多个,是一主多从的架构。
Spring Cloud 微服务系列 完整的代码在仓库的sourcecode/spring-cloud-demo
目录下。
gitee(推荐):https://gitee.com/cunzaizhe/xiaohuge-blog
github:https://github.com/tigerleeli/xiaohuge-blog
关注微信公众号:“小虎哥的技术博客”,让我们一起成为更优秀的程序员❤️!