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

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

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


主从同步基本原理

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;
目录
相关文章
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
运维 数据可视化 关系型数据库
使用 Websoft9 运维面板部署和维护 WordPress 到底有多简单?
如何实现 WordPress 极速部署?Websoft9 通过应用商店一键安装与可视化运维管理,10 分钟完成零门槛上线。
605 1
|
11月前
|
运维 Dubbo Cloud Native
Dubbo 云原生重构出击:更快部署、更强控制台、更智能运维
Apache Dubbo 最新升级支持云原生,提供一键部署微服务集群与全新可视化控制台,提升全生命周期管理体验,助力企业高效构建云原生应用。
1533 25
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
11月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。
|
运维 安全 关系型数据库
Websoft9 运维面板,全网真正的一键部署应用
Websoft9运维面板实现应用真·一键部署,通过智能环境适配、安全架构与容器化技术,将传统数小时部署缩短至分钟级,显著提升效率与安全性。
423 5
|
运维 监控 持续交付
Websoft9 运维面板:GitOps 助力简化持续部署流程
传统部署中手动配置、脚本管理及版本回滚等问题一直困扰开发者。GitOps 通过基础设施代码化与版本化,成为持续部署新标准。Websoft9 深度融合 GitOps 理念,实现从代码提交到生产发布的自动化闭环。其核心功能包括:Git 仓库驱动配置管理(支持多分支隔离)、Argo CD 集成自动同步(灰度发布与全量更新)以及可视化监控审计(部署历史与资源变化分析)。本文结合实际操作解析其低门槛企业级部署方案。
280 0
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案

热门文章

最新文章