mysql数据库数据同步/主从复制的配置方法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

如果有多台mysql数据库服务器需要需要做数据同步,或者读写分离的时候。就需要做一个数据库的主从复制,操作起来也比较简单。
如下:
主服务器x.x.x.233
从服务器x.x.x.234

首先需要在主数据库配置一下my.cnf
开启binlog增加serverid
server-id                       = 1
log-bin                        = bin-log

重启服务后生效

登陆数据库

1 #mysql -uroot -p

创建一个用户台tmpcopy,密码为mysq,并授权这个用户可以从x.x.x.234这个IP以replication的权限登陆

1 mysq> update mysql.user set user='tmpcopy' where password=password("mysql");
2 Query OK, 1 row affected (0.48 sec)
3 Rows matched: 1  Changed: 1  Warnings: 0
4  
5 mysq> flush privileges;
6 Query OK, 0 rows affected (0.03 sec)
7  
8 mysq> grant replication slave on *.* to tmpcopy@x.x.x.234 identified by 'mysql';
9 Query OK, 0 rows affected (0.06 sec)

锁住主服务器的数据写入(防止下面记录bonlog的位置后,产生新的数据)

1 mysql>flush tables with read lock;

然后查看一下主服务器的状态

1 mysq> show master status;
2 +----------------+----------+--------------+------------------+
3 | File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
4 +----------------+----------+--------------+------------------+
5 | bin-log.000001 |    41582 |              |                  |
6 +----------------+----------+--------------+------------------+

当前的binlog文件是bin-log.000001,位置是41582

这时候需要手工做一次同步,让主服务器和从服务器数据保持一致。
复制datadir或者从主服务器mysqldump导出sql文件再导入从服务器,这里不再累赘。

同步后目前两台服务器数据是一致的
然后配置一下从服务器的my.cnf
增加server-id=2
然后重启服务,登陆
切换从服务器的master,并配置当前数据所处的binlog文件以及位置

1 mysq> change master to master_host='x.x.x.1',master_user='tmpcopy',master_password='mysql',master_log_file='bin-log.000001',master_log_pos=41582;
2 Query OK, 0 rows affected (0.01 sec)

启动主从

1 mysq> start slave;
2 Query OK, 0 rows affected (0.00 sec)

查看一下从服务器的状态

01 mysq> show slave status\G
02 *************************** 1. row ***************************
03 Slave_IO_State: Waiting for master to send event
04 Master_Host: x.x.x.233
05 Master_User: tmpcopy
06 Master_Port: 3306
07 Connect_Retry: 60
08 Master_Log_File: bin-log.000001
09 Read_Master_Log_Pos: 98925
10 Relay_Log_File: mysqld-relay-bin.000002
11 Relay_Log_Pos: 57594
12 Relay_Master_Log_File: bin-log.000001
13 Slave_IO_Running: Yes
14 Slave_SQL_Running: Yes
15 Replicate_Do_DB:
16 Replicate_Ignore_DB:
17 Replicate_Do_Table:
18 Replicate_Ignore_Table:
19 Replicate_Wild_Do_Table:
20 Replicate_Wild_Ignore_Table:
21 Last_Errno: 0
22 Last_Error:
23 Skip_Counter: 0
24 Exec_Master_Log_Pos: 98925
25 Relay_Log_Space: 57751
26 Until_Condition: None
27 Until_Log_File:
28 Until_Log_Pos: 0
29 Master_SSL_Allowed: No
30 Master_SSL_CA_File:
31 Master_SSL_CA_Path:
32 Master_SSL_Cert:
33 Master_SSL_Cipher:
34 Master_SSL_Key:
35 Seconds_Behind_Master: 0
36 Master_SSL_Verify_Server_Cert: No
37 Last_IO_Errno: 0
38 Last_IO_Error:
39 Last_SQL_Errno: 0
40 Last_SQL_Error:
41 Replicate_Ignore_Server_Ids:
42 Master_Server_Id: 1
43 1 row in set (0.01 sec)

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个状态运行了就已经配置完成了

测试一下:
创建数据库testdb

1 mysq> create database testdb;
2 Query OK, 1 row affected (0.00 sec)

选择数据库testdb并创建表test_tables以及两个字段id和test

1 mysq> use testdb;
2 Database changed
3 mysq> create table test_table (id int(3),test char (10));
4 Query OK, 0 rows affected (0.01 sec)

插入数据

1 mysq> insert test_table values('1','test-data');
2 Query OK, 1 row affected (0.01 sec)

我们再到从服务器看一下:

01 mysq> show databases;
02 +--------------------+
03 | Database           |
04 +--------------------+
05 | test               |
06 | testdb             |
07 | txt                |
08 +--------------------+
09 15 rows in set (0.08 sec)mysq> use testdb;
10 Database changed
11 mysq> select * from test_table;
12 +------+-----------+
13 | id   | test      |
14 +------+-----------+
15 |    1 | test-data |
16 +------+-----------+
17 1 row in set (0.00 sec)
18  
19 mysq>

新创建的数据库,表,表内的数据都已经同步了。
主从复制完成

如果需要一主多从,从服务器的配置再到别的服务器上配置一个不通的server-id重复操作一次即可。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
消息中间件 资源调度 关系型数据库
如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理
本文介绍了如何在Flink on YARN环境中配置Debezium CDC 3.0,以实现实时捕获数据库变更事件并将其传输到Flink进行处理。主要内容包括安装Debezium、配置Kafka Connect、创建Flink任务以及启动任务的具体步骤,为构建实时数据管道提供了详细指导。
34 9
|
11天前
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
26 3
|
15天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
17天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
38 2
|
18天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
18天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
61 2
|
7天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
23 1
|
9天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
24 4
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
82 1

热门文章

最新文章