【运维知识进阶篇】如何部署数据库主从同步?

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDSClaw,2核4GB
RDS AI 助手,专业版
简介: 【运维知识进阶篇】如何部署数据库主从同步?

主从复制是指将一个数据库服务器的数据通过网络连接到其他几个数据库服务器,然后在这些服务器上创建一个和主服务器数据完全相同的拷贝。当主服务器中的数据发生改变时,这些改变会异步地传播到其他从服务器上,从而实现主从服务器之间的数据同步。本篇文章给大家介绍如何实现数据库的主从同步。


主从同步基本原理

1、主服务器记录二进制日志(binlog),将所有对数据的修改(包括更新、删除、插入等)都记录在二进制日志中。

2、从服务器建立到主服务器的连接,并请求复制主服务器的二进制日志。主服务器收到请求后开始将新产生的二进制日志发送给从服务器。

3、从服务器读取主服务器的二进制日志,并解析其中的SQL语句;将这些SQL语句在自身执行,保持与主服务器数据的一致性。

在这整个过程中,主服务器产生的数据更改通过其提交给的二进制日志,被从服务器获取并解析成 SQL 语句来同步到每个从服务器的数据库中。从而达到了主库与备库的数据同步,实现高可用的应用服务。

实现流程

1、修改配置文件

主从都需要修改,主的server_id最小

1. [root@DB01 ~]# cat /etc/my.cnf.d/server.cnf
2. ......
3. [mysqld]
4. log_bin=mysql-bin
5. binlog_ignore_db=mysql
6. server_id=1
7. ......
8. 
9. [root@DB02 ~]# cat /etc/my.cnf.d/server.cnf 
10. ......
11. [mysqld]
12. log_bin=mysql-bin
13. binlog_ignore_db=mysql
14. server_id=2
15. ......

2、将主数据库数据发送给从数据库

172.16.1.52为从数据库内网服务器

1. [root@DB01 ~]# mysqldump -uroot --all-databases > all.sql
2. [root@DB01 ~]# ls
3. all.sql
4. [root@DB01 ~]# scp all.sql 172.16.1.52:/root/
5. 
6. [root@DB02 ~]# mysql -uroot < all.sql

3、重启数据库

1. [root@DB01 ~]# systemctl restart mariadb
2. [root@DB02 ~]# systemctl restart mariadb

4、主数据库进行如下配置

注意密码替换,172.16.1.52为从数据库内网服务器

1. mysql -uroot -pxxx -e "grant all privileges on *.* to ls@'%' identified by 'sss';"
2. #xxx为数据库密码,sss为全局用户密码
3. mysql -uroot -pxxx -e "grant replication slave on *.* to 'user'@'172.16.1.52' identified by 'sss';"
4. #xxx为数据库密码,user为给52授权的账户名,sss为给52授权的密码
5. mysql -uroot -pxxx -e "flush privileges;"
6. #xxx为数据库密码

5、从数据库进行如下配置

xxx为从数据库密码,qqq为主数据库密码,注意密码替换,172.16.1.51为主数据库内网服务器

1. mysql -uroot -pxxx -e "change master to master_host='172.16.1.51',master_user='user',master_password='sss';"
2. #xxx为数据库密码,user为51授权给52的用户名,sss为51授权给52的密码
3. mysql -uroot -pxxx -e "flush privileges;"
4. #xxx为数据库密码
5. mysql -uroot -pxxx -e "start slave;"
6. #xxx为数据库密码
7. mysql -uroot -pxxx -e "show slave status\G;"
8. #xxx为数据库密码
9. ......
10.              Slave_IO_Running: Yes
11.             Slave_SQL_Running: Yes
12. ......

6、测试数据库主从同步

主数据库创建数据库,检查从数据库是否显示

1. [root@DB01 ~]# mysql -uroot -pxxx
2. Welcome to the MariaDB monitor.  Commands end with ; or \g.
3. Your MariaDB connection id is 19
4. Server version: 5.5.68-MariaDB MariaDB Server
5. 
6. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
7. 
8. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
9. 
10. MariaDB [(none)]> show databases;
11. +--------------------+
12. | Database           |
13. +--------------------+
14. | information_schema |
15. | mysql              |
16. | performance_schema |
17. | test               |
18. +--------------------+
19. 4 rows in set (0.00 sec)
20. MariaDB [(none)]> create database hehe;    #创建
21. Query OK, 1 row affected (0.00 sec)
22. 
23. MariaDB [(none)]>
24. 
25. [root@DB02 ~]# mysql -uroot -pxxx
26. Welcome to the MariaDB monitor.  Commands end with ; or \g.
27. Your MariaDB connection id is 9
28. Server version: 5.5.68-MariaDB MariaDB Server
29. 
30. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
31. 
32. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
33. 
34. MariaDB [(none)]> show databases;    
35. +--------------------+
36. | Database           |
37. +--------------------+
38. | information_schema |
39. | mysql              |
40. | performance_schema |
41. | test               |
42. +--------------------+
43. 4 rows in set (0.00 sec)
44. 
45. MariaDB [(none)]> show databases;    #主数据库创建后从数据库也显示
46. +--------------------+
47. | Database           |
48. +--------------------+
49. | information_schema |
50. | hehe               |
51. | mysql              |
52. | performance_schema |
53. | test               |
54. +--------------------+
55. 5 rows in set (0.00 sec)
56. 
57. MariaDB [(none)]>

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
9月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
9月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本文探讨了大模型与MySQL数据库运维结合所带来的变革,介绍了构建结构化运维知识库、选择合适的大模型、设计Prompt调用策略、开发MCP Server以及建立监控优化闭环等关键步骤。通过将自然语言处理能力与数据库运维相结合,实现了故障智能诊断、SQL自动优化等功能,显著提升了MySQL运维效率和准确性。
875 18
|
9月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
338 0
|
10月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
8月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
963 25
|
10月前
|
运维 监控 关系型数据库
AI 时代的 MySQL 数据库运维解决方案
本方案将大模型与MySQL运维深度融合,构建智能诊断、SQL优化与知识更新的自动化系统。通过知识库建设、大模型调用策略、MCP Server开发及监控闭环设计,全面提升数据库运维效率与准确性,实现从人工经验到智能决策的跃迁。
1053 27
|
9月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
419 4

热门文章

最新文章

下一篇
开通oss服务