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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【运维知识进阶篇】如何部署数据库主从同步?

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


主从同步基本原理

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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
2月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
47 4
|
2月前
|
监控 Java 应用服务中间件
达梦数据库DEM监控部署教程分享
达梦数据库DEM监控部署教程分享
57 2
|
20天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
27 3
|
2月前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
54 1
|
2月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
48 0
|
2月前
|
运维 安全 网络安全
自动化运维:使用Python脚本实现批量部署
【8月更文挑战第2天】在现代IT基础设施管理中,自动化运维成为提升效率、减少人为错误的关键。本文将通过一个实际的Python脚本示例,展示如何实现服务器的批量部署,包括环境准备、代码实现及执行过程。文章旨在为运维工程师提供一种简化日常任务的方法,同时强调安全性和可维护性的重要性。
|
2月前
|
运维 安全 测试技术
自动化运维的利剑:Ansible在企业级部署中的应用与挑战
本文深入探讨了Ansible,这一领先的IT自动化工具,如何在企业级部署中扮演关键角色。我们将通过实际案例分析,揭示Ansible在简化配置管理、加速应用部署和提高运维效率方面的优势。同时,文章也将不回避Ansible实施过程中可能遇到的技术挑战与限制,并提供针对性的解决策略。阅读本文后,您将获得一个全面的视角,理解Ansible在现代企业运维中不可或缺的地位,以及如何克服其面临的主要问题。
59 1
|
2月前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理在DI节点同步到OceanBase数据库时,出现SQLException: Not supported feature or function
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之在部署PolarDB-Kubernetes时,如何设置数据库密码
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
下一篇
无影云桌面