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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 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
目录
相关文章
|
21天前
|
存储 监控 安全
数据库多实例的部署与配置方法
【10月更文挑战第23天】数据库多实例的部署和配置需要综合考虑多个因素,包括硬件资源、软件设置、性能优化、安全保障等。通过合理的部署和配置,可以充分发挥多实例的优势,提高数据库系统的运行效率和可靠性。在实际操作中,要不断总结经验,根据实际情况进行调整和优化,以适应不断变化的业务需求。
|
16天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
20天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
60 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
17天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
26天前
|
算法 大数据 数据库
云计算与大数据平台的数据库迁移与同步
本文详细介绍了云计算与大数据平台的数据库迁移与同步的核心概念、算法原理、具体操作步骤、数学模型公式、代码实例及未来发展趋势与挑战。涵盖全量与增量迁移、一致性与异步复制等内容,旨在帮助读者全面了解并应对相关技术挑战。
33 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
59 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
140 1
|
1月前
|
关系型数据库 MySQL 数据库
如何使用Docker部署MySQL数据库?
【10月更文挑战第1天】如何使用Docker部署MySQL数据库?
166 0
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
24 1
|
11天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
26 4