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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 【运维知识进阶篇】如何部署数据库主从同步?

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


主从同步基本原理

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;
目录
相关文章
|
4月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
4月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
158 0
|
8月前
|
SQL 关系型数据库 数据库
【YashanDB知识库】OM仲裁节点故障后手工切换方案和yasom仲裁重新部署后重新纳管数据库集群方案
本文介绍了主备数据库集群的部署、OM仲裁故障切换及重新纳管的全过程。首先通过解压软件包并调整安装参数完成数据库集群部署,接着说明了在OM仲裁故障时的手动切换方案,包括关闭自动切换开关、登录备节点执行切换命令。最后详细描述了搭建新的yasom仲裁节点以重新纳管数据库集群的步骤,如生成配置文件、初始化进程、执行托管命令等,确保新旧系统无缝衔接,保障数据服务稳定性。
|
8月前
|
数据库
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
|
6月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
342 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
|
8月前
|
SQL 关系型数据库 网络安全
Navicat Premium 17 最新版下载与配置:5分钟完成企业级数据库工具部署
Navicat Premium 17 是一款支持多种主流数据库(如 MySQL、Oracle、PostgreSQL 等)的多数据库管理工具,提供可视化数据建模、SQL 编辑和数据同步等功能。试用版提供 14 天全功能体验,商业版支持跨平台使用。安装环境要求 Windows 10/11 或 macOS 12.0+,最低配置为 4GB 内存。下载并解压安装包后,按步骤启动安装程序、接受许可协议、自定义安装路径并完成安装。首次运行时需激活许可证并配置数据库连接。常见问题包括无法写入注册表、试用期续费及连接数据库权限问题。高级功能涵盖 SSH 通道加速、自动化任务调度和性能调优建议。
2052 19
|
1月前
|
人工智能 运维 监控
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
运维安全还能靠“人盯人”?别闹了,聊聊自动化处理的真功夫
104 17
|
6月前
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
470 0
|
3月前
|
人工智能 运维 安全
运维老哥的救星?AI 驱动的自动化配置管理新趋势
运维老哥的救星?AI 驱动的自动化配置管理新趋势
213 11

热门文章

最新文章