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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

如果有多台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重复操作一次即可。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
29天前
|
存储 SQL 关系型数据库
创建并配置RDS实例
在阿里云上创建RDS实例涉及登录控制台、进入RDS管理页面、创建实例、选择数据库引擎和版本、配置实例规格与存储、设定网络与安全组、设置实例信息、确认订单并支付,最后初始化数据库。操作步骤可能因界面更新或数据库引擎不同略有差异。
18 1
|
30天前
|
SQL 存储 关系型数据库
MySQL的主从复制&主从同步
MySQL的主从复制&主从同步
28 0
|
11天前
|
负载均衡 容灾 关系型数据库
mysql主从复制
mysql主从复制
28 1
|
28天前
|
SQL 存储 运维
MySQL高可用性:主从复制和集群
MySQL高可用性:主从复制和集群
34 0
|
10天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
10天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
76 0
|
16天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
10天前
|
SQL 关系型数据库 MySQL
mysql主从复制
mysql主从复制
|
21天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
66 0