mysql同步数据

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
一, cluster 模式配置


数据库同步复制功能的设置都在 mysql 的设置文件中体现。主要工作原理为 slave 端记录并且执行 master 端的操作日志 .mysql 的配置文件( Linux 下为 /etc/my.cnf

1
、实施环境:
  操作系统: 2 linux AS 4, 完全安装 .
    
    A ip:192.168.1.240  (主数据库)
    B ip:192.168.1.247  (从数据库)


2
、配置方法

(1) 主从模式 [Master->Slave] A->B


A 中配置:

 
#service mysql start
#/usr/local/mysql/bin/mysql –u root -p123456


增加一个用户做为同步的用户帐号:


Mysql>GRANT REPLICATION SLAVE ON *.* TO lixin@'192.168.1.247' IDENTIFIED BY '123456';

 
//lixin 是同步账号, 123456 是同步密码

增加一个数据库作为同步数据库:

Mysql>create database backup;


B 上配置:


#service mysql start
#
/usr/local/mysql/bin/mysql –u root -p123456

增加一个用户最为同步的用户帐号:

Mysql> GRANT REPLICATION SLAVE ON *.* TO lixin@'192.168.1.240' IDENTIFIED BY '123456';

 
//lixin 是同步账号, 123456 是同步密码

增加一个数据库作为同步数据库:

Mysql>create database backup;

关闭 MYSQL  数据库


(2)  配置 Master Slave 参数



1. 修改 A mysql my.cnf 文件。

#vi /etc/my.cnf

server-id=1
binlog-do-db=backup                 
此处数据库名为要数据同步的数据库

log_err=my-err.log                     同步错误日志
max_binlog_size=104857600   配置完后重起数据库服务

show master status  命令看日志情况。

mysql> show master status;

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000008 |      106 | backup       |                  | 
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

2. 修改 B  mysql my.cnf 文件。

#vi /etc/my.cnf

server-id=2
master-host=192.168.1.240   
//maste 主机 IP
master-user=lixin                  //lixin 是同步账号
master-password=123456     
//123456 是同步密码
master-port=3306                //master 主机的数据库端口
master-connect-retry=60       //设置心跳时间 ( 库同步间隔 )
replicate-do-db=backup        // 同步的数据库名


3、 启动数据库和数据复制


启动 SLAVE 从数据库:


#service mysql start
#
/usr/local/mysql/bin/mysql –u root -p123456

Mysql> stop  slave ;      # 暂停 slave master 同步数据 .


启动 MASTER 从数据库:


# service mysqld start
#  /usr/local/mysql/bin/mysql –u root -p123456


回到 SLAVE 从数据库终端:


Mysql>start slave


设置完成,启动成功:此处最好重启 mysql 服务

#service mysql restart 

: 有时候会启动失败 , 可采用下面启动方法
#/usr/local/mysql/bin/mysqladmin  –u root shutdown #
关闭数据库
#/usr/local/mysql/bin/mysqld_safe &                       #
启动数据库

查看是否启动同步复制线程:

Mysql>show slave status\G;

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.240
                  Master_User: lixin
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 106
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: backup
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 106
              Relay_Log_Space: 410
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)

注意:slave_IO进程及slave_SQL进程都必须正常运行,在状态输出重表现为:   Slave_IO_Running: Yes  Slave_SQL_Running: Yes 否则都是不正确的状态(如一个值Yes,另外一个是NO则不行).

如果不同步的解决办法 :

master 执行

mysql>stop slave;
Mysql>show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
mysql-bin.000008 |       106 | backup       |                  | 
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

注意 master 中显示的记录点位置和正在记录的日志文件名 , slave 中执行 :

mysql>  change master to master_host=’192.168.1.240‘, master_user=‘lixin’, master_password=‘123456’, master_log_file=‘ mysql-bin.000008 ’, master_log_pos=106;
Mysql>exit

#service mysql restart      # 重启 master slave mysql

未成功的话执行 :

#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &

4、进行测试同步是否成功

在A服务器创建表

mysql>use backup;
mysql>create table lixin(name char(4));


然后在B服务器查看表有没有同步过来 如果过来就表示同步成功,否则就是失败了。



二.双机热备配置

配置双机方法其实就是在上述的 cluster 基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:
   
   A ip:192.168.1.240
  B ip:192.168.1.247

在确定 cluster 模式配置成功后 , 关闭 master A )数据库:

#service mysql stop

#vi /etc/my.cnf

在配置文件中加入:

master-host=192.168.1.247     # 设置主机 IP 地址(从数据库ip)
master-user=lixin                   #
设置主机同步库用户名
master-password=123456
     # 设置主机同步库密码
replicate-do-db=backup           #
设置主要同步数据库
master-connect-retry=60         #
设置心跳时间 ( 库同步间隔 )
log_err=my-err.log                  #
同步错误日志

完成后保存退出 . 启动 :
  
#service mysql start
# /usr/local/mysql/bin/mysql –u root -p123456

配置 slave(B) /etc/my.cnf, 加入以下内容 :

#vi /etc/my.cnf

binlog-do-db=backup
log-bin=my_log

重启 mysql 服务 :

#Service mysql restart

A 执行 :

Mysql>start slave;
Mysql>show slave status\G;
------------+
| Waiting for master to send event | 192.168.0.112 | backup     |     3306 |         60 | my_log.000024   |             79 | l2-relay-bin.000010 |         4 | my_log.000024       | Yes         | Yes           | backup       |               |             |                 |                 |                   |       0 |         |         0 |             79 |           4 | None         |           |         0 | No           |             |             |           |             |           |             2741 |

B 执行 :;

mysql> show master status;
+---------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| my_log.000024 |     79 | backup     |             |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

对比以上信息 , 日志记录文件名 , 同步数词库名和日志记录点 , 如果无误代表现在 SvrB 已经可以做为 A master 运行 . 但它本身也同时在做为 A slave 来运行 .
A 执行 :

Mysql>show master status;
+--------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mylog.000009 |     4 | backup     |             |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)

B 执行
mysql> show slave status;
-------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.111 | backup     |     3306 |         60 | mylog.000009   |             4 | l1-relay-bin.000003 |       313 | mylog.000009       | Yes         | Yes           | backup       |               |             |                 |                 |                   |       0 |         |         0 |             4 |         313 | None         |           |         0 | No           |             |             |           |             |           |             3575 |
+----------------------------------+---------------+-------------+-------------+
1 row in set (0.00 sec)

对比以上 A和 B 中的主机 ip, 同步数词库 , 同步日志文件名 , 同步日志记录点 . 确认无误后完成 .
注意:在对 mysql 进行配置后, master var/lib/mysql/ 下生成的 master.info 内容可能会不正确。可能会导致的错误是在将 SvrA 配置成 slave 时执行 slave start 出现大概意思为 :“ 本机未配置成 slave 服务器 , 请更改 config 文件或者执行 change master to 命令 …” 的提示 , 解决办法为 :
#Vi /var/lib/mysql/master.info
14
mylog.000007   ###
同步后要记录的日志文件
79         ###
日志记录点
192.168.0.111   ###
主机 IP
Backup       ###
同步数据库
123456       ###
同步数据库密码
3306       ###
同步端口
60         ###
心跳时间(同步间隔)
0
核对以上信息是否配置正确 , 为了更真实的测试同步准确性 , 建议在库中导入数据进行测试 . 以上 mysql cluster 模式和双机热备模式配置基本完成 .


本文转自wiliiwin 51CTO博客,原文链接:http://blog.51cto.com/wiliiwin/199216
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16小时前
|
自然语言处理 监控 关系型数据库
mysql造数据占用临时表空间
【5月更文挑战第20天】MySQL在处理复杂查询时可能使用临时表,可能导致性能下降。临时表用于排序、分组和连接操作。常见问题包括内存限制、未优化的查询、数据类型不当和临时表清理。避免过度占用的策略包括优化查询、调整系统参数、优化数据类型和事务管理。使用并行查询、分区表和监控工具也能帮助管理临时表空间。通过智能问答工具如通义灵码,可实时续写SQL和获取优化建议。注意监控`Created_tmp_tables`和`Created_tmp_disk_tables`以了解临时表使用状况。
54 5
|
2天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之用CTAS从mysql同步数据到hologres,改了字段长度,报错提示需要全部重新同步如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
44 8
|
2天前
|
SQL 资源调度 关系型数据库
实时计算 Flink版产品使用合集之在抓取 MySQL binlog 数据时,datetime 字段会被自动转换为时间戳形式如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
10 2
|
3天前
|
关系型数据库 MySQL OLAP
实时计算 Flink版产品使用合集之可以支持 MySQL 数据源的增量同步到 Hudi 吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
24 4
|
3天前
|
关系型数据库 MySQL API
实时计算 Flink版产品使用合集之可以通过mysql-cdc动态监听MySQL数据库的数据变动吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
26 0
|
3天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用合集之2.2.1版本同步mysql数据写入doris2.0 ,同步完了之后增量的数据延迟能达到20分钟甚至一直不写入如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
|
3天前
|
关系型数据库 MySQL 数据处理
实时计算 Flink版产品使用合集之在同步MySQL的时候卡在某个binlog文件处如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
实时计算 Flink版产品使用合集之在同步MySQL的时候卡在某个binlog文件处如何解决
|
3天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用合集之Flink CDC 2.3.0和Flink 1.17,无法从MySQL数据库中抽取数据,是什么原因导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
19 1
|
3天前
|
关系型数据库 MySQL 数据处理
实时计算 Flink版产品使用合集之如果在 MySQL 表中为某个字段设置了默认值,并且在插入数据时指定了该字段为 NULL,那么 MySQL 是否会使用默认值来填充这个字段
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
18 0
|
3天前
|
关系型数据库 MySQL Java
实时计算 Flink版产品使用合集之mysql通过flink cdc同步数据,有没有办法所有表共用一个dump线程
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0