广告
返回顶部
首页 > 资讯 > 数据库 >如何实现MySQL数据库同步
  • 683
分享到

如何实现MySQL数据库同步

2024-04-02 19:04:59 683人浏览 独家记忆
摘要

这篇文章主要介绍了如何实现Mysql数据库同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql 的数据同步,在 Mysql 官方网站

这篇文章主要介绍了如何实现Mysql数据库同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

mysql 的数据同步,在 Mysql 官方网站文档上,叫 Replication 字面是重作的意思,意译就是同步了。其实,MySQL 的同步,并不是使用同步 sync 这个单词而是用重作 replication,很准确表明了 MySQL 数据库操作的实质,是作同样的操作,或叫重作同样的操作,以保持主数据库服务器 master 与 从属服务器 slave 之样的数据保持一致。replication 就是有重复,重作的意思。
MySQL 为了实现 replication 必须打开 bin-log 项,也是打开二进制的 MySQL 日志记录选项。
MySQL 的 bin log 二进制日志,可以记录所有影响到数据库表中存储记录内容的 sql 操作,如 insert / update / delete 操作,而不记录 select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日志中记录的日志项,包涵数据库表中所有数据,那么,就可以恢复本地数据库的全部数据了)。 而这个二进制日志,如果用作远程数据库恢复,那就是 replication 了。这就是使用 replication 而不用 sync 的原因。这也是为什么要设置 bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。
下面,我们来讲解最核心的过程:
首先,你应该有两个或两个以上的 MySQL 数据库服务器,版本最好是在 3.3 以上 (当然,两个服务器不一定是两台机器,一台机器上安装两个 MySQL 服务是可以的,同时,如果你对 MySQL replication 原理十分精通的话,你甚至可以在一个 MySQL 服务的两个不同数据库 database 之间作同步,看有没有需要了)说明: 这两个服务器一般设置一个为主服务器,或叫源服务器, master mySQL Server, 另一台或其他多台就是 replication slave 同步从服务器了。一台 slave 与多台 slave 设置方法是一样的,这样你就可以作类似数据库集群了。
设置可访问 MySQL 帐号,操作以英文为准。
MySQL 帐号一般设置为限定 IP 访问,以保障安全
MySQL 帐号一般在 master 与 slave 设置为相同帐号,同时是远程可访问
特别注意,如果你用 linux / Unix 操作系统,那一定要注意一下防火墙 firewall 有没有限制 MySQL 远程访问,如果是,最好是打开远程访问端口,并作好访问 IP 限制
由于 my.cnf 中要明文存储 MySQL 帐号密码,请注意保护 my.cnf 不让其他用户访问到(看来要向 MySQL 说明下以后用密码存 passwd)。
第三步,当然是设置两个服务器要同步的数据库为同样的数据库了。
这里有一些技巧,包括 mysql 的 sql 指令说明下。
方法之一,就是英文说明中说的,先定数据库读写功能 ( 其实最好是停止 mysqld 服务,再作备份) 然后用 tar 备份数据库目录,转到 slave 服务器相同数据目录中。
方法之二,使用 mysql studio 这样的实用工具,直接使用 mysql studio 的 backup database 工具把数据库同步
以上两种方法都是 master 数据库中有不少数据记录,按上两 种方法得到 master 与 slave 有相同数据库与数据记录。 而第三种方法,则是适合于新建数据库的情况,特别适合于 master 与 slave 在 my.cnf 已经设置好 replication 关系 (但 未指定 database 同步数据库 ) 的情况: 这就是使用 mysql 的 sql 语句 load table from master 与 load data from master;
load table from master 可以从 master 数据库把表结构复制到 slave 数据库中,这样可以建立同步的表。
load data from master 是从 master 数据库把数据导入到 slave 数据表中,条件是 master 从一开始安装运行就使用了 bin-log 参数而保存有二进制日志
接下来就是配置 master 与 slave 的 my.cnf 文件,使得 replcation 能有合适的启动参数以支持数据同步
技巧: 如果你使用 win2k 的 mysql 那么,你可以 mysql.com 出的官方 mysql administrator 实用程序,直接在 mysql administrator 中即可配置 master 与 slave ,同时也可以配置 query-cache 。
在 master 的 my.cnf(如果是 win32 那就是 my.ini)增加
[mysqld]
log-bin =
server-id=1
注意,上面的 log-bin = 中的 等号 = 是不可少的。
在 slave 的 my.cnf 修改
[mysqld]
server-id=2 # 如果有多个 slave 就改为不重复的 id 就好,在mysql 4.1 中,这个已经取消了
master-host=10.10.10.22
master-user=backup #同步用户帐号
master-passWord=1234
master-port=3306
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=test # 告诉slave只做 test 数据库的更新
bin-log =
 
 
 
检查 master 与 slave 配置状态,使用 show master status; 与 show slave status; 这两个 SQL 指令即可在 master 与 slave 查看配置状态。这里有两个状态变量十分重要
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73  | test   | manual,mysql  |
+---------------+----------+--------------+------------------+
注意 File 是 mysql-bin.003 而 position 是 73
这个文件是对 test 这个 数据库的二进制日志记录,记录数据变化的当前记录条数是 73
前面我们说过,二进制日志记录着某个数据库所有数据记录变化的 sql 操作语句,如 insert / update / delete 等,正是因为如此,在 slave 同步 mysql 数据库操作时,其实是读取master 中这个 mysql-bin.003 二进制日志中的 sql 操作,同在 slave 中执行这些 sql 操作,所以,同步成功有以下几个条件:
master 与 slave 有相同的数据库表结构,最好 database name 也一样(可以设置为不一样的 database name)
master 与 slave 有相同的初始数据记录,保证同步操作开始后两者数据一致
master 必须使用 bin-log 二进制日志记录(推荐 slave 也使用 bin-log)
slave 是从 master 的 bin-log 是读取 sql 记录来同步,所以,从哪一条 log 开始读取很重要(下面的第 7 条操作,就是保证 slave 能与 master 保持相同的记录读取,并读取正确的 bin-log 日志文件)
在 slave 执行下面 sql 操作
mysql> CHANGE MASTER TO
->  MASTER_HOST=master_host_name,
->  MASTER_USER=replication_user_name,
->  MASTER_PASSWORD=replication_password,
->  MASTER_LOG_FILE=recorded_log_file_name,
->  MASTER_LOG_POS=recorded_log_position;    
这里,把 上面的 redcorded_log_file_name 改为 mysql-bin.003 而 recorded_log_position 改为 73 (特别注意,这是关系关键)。
linux 下的 mysql 与 win2k 下的 MySQL 作 replication 会有什么技巧:
注意  下有大小写区分,而 win2k 下没有。所以最好使用 mysqldump 方法来让两个初始化同步,而不能使用 tar 方式直接 copy 数据库表文件。使用  studio 来作 database backup 也不错
注意 win2k 下的 mysql 配置文件是 c:my.ini。你可以使用 mysql administrator 0.9 这个图型界面的实用工具来设置。
如果 win2k 下的 mysql 为 master , 一定要注意 show master status 中显示出来的结果。
win2k 下的 mysql 为 slave 时,注意不要把同步时间周期设置太长。
实战
环境配置
操作系统:linux
MySQL:5.14
主服务器A IP:192.168.1.2(假设)
从服务器B IP:192.168.1.3(假设)
同步数据库: test(用于测试,两台服务器初始数据一致) 
主服务器(master)设置
新建一个用于备份的用户(直接用root用户也可以):
GRANT FILE ON *.* TO  IDENTIFIED BY ‘123456’;

编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:
server-id=1
#设置服务器id,主从服务器要不同
log-bin=mysqllog
#启用二进制变更日志(即把所有对数据进行操作的SQL命令以二进制格式记入日志)
#其中mysqllog是日志文件的名称,日志的文件名是mysqllog.n,其中n是一个6位数字的整数。
binlog-do-db=test
#指定需要启用二进制变更日志的数据库"test"
binlog-ignore-db = mysql
#指定不需要启用二进制变更日志的数据库"mysql"

重启mysqld服务,可以用mysql命令:SHOW MASTER STATUS;查看“启用二进制变更日志”情况 
从服务器(slave)设置
编辑“/etc/my.cnf”(不同服务器可能路径不同)文件,在该文件添加以下内容:

server-id=2
#设置服务器id,主从服务器要不同
replicate-do-db=test
#指定需要从master同步过来的数据库"test"
replicate-ignore-db = mysql
#指定不需要从master同步过来的数据库"mysql"

#设置master服务器的IP地址、登陆用户、密码、端口
master-host=192.168.1.2
master-user=backup
master-password=123456
master-port=3306

master-connect-retry=60
#连接master服务器失败后重试的延迟时间
slave-skip-errors=all
#跳过所有错误继续执行同步工作
log-slave-updates
#启用从属服务器上的日志同步功能 
注意:如果从服务器上存在master.info文件(如:/var/lib/mysql/master.info),要使以上配置选项生效,在重启mysqld服务前必须删除该文件。
重启mysqld服务,可以用mysql命令:SHOW SLAVE STATUS;查看同步情况
从数据库的相关命令:
slave st; slave start ; 开始停止从数据库。
show slave statusG; 显示从库正读取哪一个主数据库二进制日志 
成功完成以上配置后,在主服务器A的test库里添加数据或删除数据,在从服务器B的test库里马上也能看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。

感谢你能够认真阅读完这篇文章,希望小编分享的“如何实现MySQL数据库同步”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: 如何实现MySQL数据库同步

本文链接: https://www.lsjlt.com/news/71452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现MySQL数据库同步
    这篇文章主要介绍了如何实现MySQL数据库同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL 的数据同步,在 MySQL 官方网站...
    99+
    2022-10-19
  • MySQL数据库实现主主同步
    前言 MySQL主主同步实际上是在主从同步的基础上将从数据库也提升成主数据库,让它们可以互相读写数据库,从数据库变成主数据库;主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程,只要对...
    99+
    2023-09-08
    mysql 数据库 服务器
  • 不同云服务器如何实现mysql数据库同步
    下文给大家带来关于不同云服务器如何实现mysql数据库同步,感兴趣的话就一起来看看这篇文章吧,相信看完不同云服务器如何实现mysql数据库同步对大家多少有点帮助吧。目标:A云服务器上自建的数据库同步到B云服...
    99+
    2022-10-18
  • Mysql数据库中怎么实现数据同步
    Mysql数据库中怎么实现数据同步,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 安装配置两台服务器,分别安装好Mysql,都安装在 /u...
    99+
    2022-10-18
  • MySQL数据库中怎么实现同步
    本篇文章给大家分享的是有关MySQL数据库中怎么实现同步,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1.修改 master 端的my.c...
    99+
    2022-10-18
  • MySQL同步数据Replication如何实现
    今天小编给大家分享一下MySQL同步数据Replication如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MySQ...
    99+
    2023-07-05
  • 基于Canal实现MySQL 8.0 数据库数据同步
    前言 服务器说明 主机名称操作系统说明192.168.11.82Ubuntu 22.04主库所在服务器192.168.11.28Oracle Linux Server 8.7从库所在服务器 版本说明 ...
    99+
    2023-10-25
    数据库 mysql 服务器
  • MySQL中怎么实现多库数据同步
    本篇文章为大家展示了MySQL中怎么实现多库数据同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、建立测试环境CREATE table mother(id in...
    99+
    2022-10-18
  • canal如何实现mysql的数据同步
    这篇文章将为大家详细讲解有关canal如何实现mysql的数据同步,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。canal是什么?canal [kə'næl],译...
    99+
    2022-10-18
  • 如何进行mysql数据库主从同步中数据库同步配置
    这篇文章给大家介绍如何进行mysql数据库主从同步中数据库同步配置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的...
    99+
    2022-10-18
  • Canal中怎么实现MySQL数据库实时数据同步
    这期内容当中小编将会给大家带来有关Canal中怎么实现MySQL数据库实时数据同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.1 canal介绍Canal是一个基于...
    99+
    2022-10-18
  • MySQL数据库中怎么实现异构数据同步
    本篇文章为大家展示了MySQL数据库中怎么实现异构数据同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在实现levelDB挂载成MySQL引擎时,发现在实际存储是...
    99+
    2022-10-18
  • MYSQL数据库主从同步设置的实现步骤
    目录为什么要主从同步?主从同步的原理MYSQL数据库进行主从同步创建两个MYSQL数据库初始化,安装主机数据库配置从机测试主从同步为什么要主从同步? 1、读写分离 主从同步分为一个主...
    99+
    2022-11-13
  • MySQL数据库主从同步的实现方法
    这篇文章主要讲解了MySQL数据库主从同步的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。安装环境说明系统环境:[root@~]# cat /etc/redhat-re...
    99+
    2022-10-18
  • Mysql 中怎么实现主从数据库同步
    这篇文章给大家介绍Mysql 中怎么实现主从数据库同步,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、主服务器1.1、创建一个复制用户,具有replication slave 权限。...
    99+
    2022-10-18
  • python如何实现不同数据库间数据同步功能
    这篇文章主要为大家展示了python如何实现不同数据库间数据同步功能,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“python如何实现不同数据库间数据同步功能”这篇文章吧。python是什么意思P...
    99+
    2023-06-06
  • Win系统下MYSQL主从数据库同步设置实现数据同步更新
    这篇文章主要讲解了“Win系统下MYSQL主从数据库同步设置实现数据同步更新”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Win系统下MYSQL主从数据库同...
    99+
    2022-10-18
  • Canal+Kafka实现Mysql数据同步
    Canal介绍 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 canal是应阿里巴巴...
    99+
    2023-09-05
    kafka mysql 分布式
  • MySQL同步数据Replication的实现步骤
    目录一、同步复制数据基本原理二、同步数据示例1、修改主从mysql配置文件2、主机建立同步账号,并查看主库状态信息3、从机同步配置4、查看同步配置效果MySQL提供了Replication功能,可以实现将一个数据库的数据...
    99+
    2023-03-24
    MySQL同步数据Replication MySQL Replication同步
  • 阿里云MySQL数据库实时同步
    在当今的信息时代,数据是企业的生命线,而数据库则是数据存储和管理的关键。如何保证数据库数据的安全、稳定和实时性,成为企业面临的重要问题。而阿里云的MySQL数据库实时同步服务,正好解决了这个问题。 一、问题提出随着企业的业务不断扩大,数据量...
    99+
    2023-10-29
    阿里 实时 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作