`
shiqidide
  • 浏览: 64511 次
文章分类
社区版块
存档分类
最新评论

设置mysql数据库的同步

 
阅读更多

一、准备服务器

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。

我测试设置成功的服务器:
主服务器(以下简称Master)的版本是3.23.58,
从服务器(以下简称Slave)的版本是5.0.91,这个跨度应该算比较大了吧。

Master主机名为:A(IP:192.168.0.1),
Slave 主机名为:B(IP:192.168.0.2),
2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/var/lib/mysql/ 。
默认安装的就如此。

二、设置同步Master 服务器

1、设置my.cnf

# cp /usr/share/doc/mysql-server-3.23.58/my-large.cnf /etc/my.cnf
对于my-large.cnf这个文件个人觉得只是mysql大型数据库配置的demo文件,copy该目录下的my-small.cnf应该是一样的;
因为我服务器配置比较高,看large里面参数多,省事就选他用了。
修改 my.cnf 文件:

log-bin = mysql-bin #指定生成binlog文件名
server-id = 1 #此id不可重复
binlog-do-db = news #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可
binlog-ignore-db = mysql #不需要同步的数据库名,可以设定多条
binlog-ignore-db = test #不需要同步的数据库名,可以设定多条
log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作

2、建立用户
$mysql -u root -p #进入mysql
mysql>CREATE USER TO ‘backup'@'%' DENTIFIED BY ’backuppass’; #创建备份用户backup
mysql>GRANT FILE,SELECT,RELOAD ON *.* TO ‘backup'@'%'; #设置权限
因为mysql版本太老了,所以不支持REPLICATION SLAVE,否则用下面的:
mysql>GRANT FILE,SELECT,RELOAD,REPLICATION SLAVE ON *.* TO ‘backup'@'%'; #设置权限

mysql>FLUSH PRIVILEGES ;

3、在Replication完成前,Master跟Slave的数据内容必須一致,故在备份导出数据库前先Lock成只读。
mysql > FLUSH TABLES WITH READ LOCK;

4、需要同步的news数据库导出,可以使用mysqldump或者是tar的方式压缩起來。

如果用mysqldump的方式:
$mysqldump -u root -p news > news.sql #导出数据库成文件news.sql

因为2个数据版本不一样,且存储编码不一样,我用的上面的方法。

如果用压缩方式:
cd /var/lib/mysql/ #mysql库目录
tar zcvf news.tar.gz news

5、导出数据库后,解除只读:

mysql>UNLOCK TABLES;

6、 重启mysql,前面设置的my.cnf生效;重启后,在Master服务器上的add、update、delete等操作都会记录在binlog文件中

$/etc/init.d/mysql restart 或者 service mysqld restart

7、记录复制启动断点
执行以下命令,记录从服务器开始启动复制的断点,包括日志名和偏移量。
  mysql> SHOW MASTER STATUS;
比如:
  mysql> show master status\G
     File: mysql-bin.001
     Position: 73
     Binlog_Do_DB:
Binlog_Ignore_DB:
日志文件名是:mysql-bin.001
偏移量是:73
注意,等会从服务器将从这个位置开始复制。需要记录下这2个地方。

二、设置同步Slave服务器

1. 导入数据到从服务器器:
我用的是$mysql -u root -p news < news.sql

2、如果是用压缩的办法:
传输拿到主库数据包、解包
# cd /var/lib/mysql/
# scp 192.168.0.1:/var/lib/mysql/news.tar.gz .
# tar zxvf var.tar.gz
查看修改news文件夹权限
# chown -R mysql:mysql news

3, 设置同步Slave的my.cnf
server-id = 2
# log-bin=mysql-bin #我没有用到,只需要从A同步到B即可
master-host = 192.168.0.1
master-user = backup
master-password = backuppass
master-port = 3306
#上面是前面添加的用户名和密码,下面3行是新版本的sql自带的表。
replicate-ignore-db = mysql #忽略掉的数据库
replicate-ignore-db = test #忽略掉的数据库
replicate-ignore-db = information_schema #忽略掉的数据库
replicate-do-db = news #需要备份的数据库名
replicate_do_table = news.user #需要备份的数据表名
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
#log-slave-updates #我没有用到,如果从服务器也要更新记录到二进制文件里
slave-skip-errors #是跳过错误,继续执行复制操作

设置完成后,首先检查/var/lib/mysql/目录下是否有mysql的启动关闭日志,类似的为*.info,localhost*,ib*之类的日志 信息。如果有全部删除(提示:先停止mysql服务,再删除),然后启动mysql服务。

4、验证连接MASTER
# mysql -h192.168.0.1 -ubackup -pbackuppass
主机IP、用户名、密码前面不能带有空格

5、设置Master服务器信息,让Slave知道Master的位置

以往的方式是直接在my.cnf中設定master的相關訊息;但是,這樣的方式已經改了,必须使用在 mysql下執行【CHANGE MASTER TO】的指令

在my.cnf中master是錯誤的

master-host = 192.168.0.1
master-user = backup
master-password = backuppass
master-port = 3306


slave stop;
MySQL> CHANGE MASTER TO
-> MASTER_HOST='192.168.0.1',
-> MASTER_USER='backup',
-> MASTER_PASSWORD='backuppass',
-> MASTER_LOG_FILE='mysql-bin.001',
-> MASTER_LOG_POS=73;
slave start;

6,检查同步是否成功
用show slave status;看一下从服务器的同步情况
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,那代表已经在同步 。

Seconds_Behind_Master是否为0,0就是已经同步了

出现Slave_IO_Running:NO,可能需要开启:
slave stop;
SLAVE start IO_THREAD
slave start;

另外,出现Slave_IO_Running:NO还有一个原因是slave上没有权限读master上的数据。


分享到:
评论

相关推荐

    MySql数据库同步复制

    该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。 数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(windows下为my.ini,Unix/Linux下为my.cnf)

    MySQL数据库的同步

    【MySQL数据库同步】 在当前数字化时代,MySQL数据库的同步至关重要,因为它们承载着大量关键业务数据。MySQL是一个广泛应用的开源关系型数据库管理系统,尤其在中小型企业及网站中颇为流行,因其小巧、快速、成本...

    mysql数据库同步canal框架分享PPT

    mysql数据库同步canal框架分享PPT mysql数据库同步canal框架分享PPT

    MYSQL数据库同步方案

    MYSQL数据库同步方案

    MySQL数据库两台主机同步

    MySQL数据库两台主机同步 MySQL数据库两台主机同步是指在两个主机之间实现MySQL数据库的热备,以便在任意一台机器出现故障时,只需要人工切换程序连接到另一台机器即可恢复程序的正常运行。下面是实现MySQL数据库两...

    sqlserver、mysql数据库同步备份工具

    sqlserver、mysql数据库同步备份工具及其帮助手册详解

    Informatica连接Mysql数据库案例

    2. 数据同步:实时同步 Mysql 数据库和 Oracle 数据库的数据。 3. 数据集成:集成 Mysql 数据库和 Oracle 数据库的数据,实现数据的一致性。 Informatica 连接 Mysql 数据库可以实现数据的实时同步和集成,提高数据...

    如何在两台MySQL数据库间实现同步

    做开发的时候要做MySQL的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。本文将为大家介绍如何在两台MySQL数据库间实现同步。

    同步数据,数据库同步,sql数据库同步

    同步当前数据库和服务器数据库的数据,使得两个数据库的数据一致,这个属于sql的高级应用,相信对你们都很有用处,也可以对你们的数据库能用有所提示,是一篇比较好的资料,由于该资料是本人开发的,所以希望尊重...

    sqlserver与mysql数据库同步

    sqlserver与mysql数据库同步,相关的配置,非常实用。

    数据库同步软件,可实时同步Mysql,Sqlserver数据库,支持异构数据库

    SyncNavigator是一款功能强大的数据库同步软件,适用于SQL SERVER, MySQL,具有自动/定时同步数据、无人值守、故障自动恢复、同构/异构数据库同步、断点续传和增量同步等功能,支持Windows xp以上所有操作系统,适用...

    Mysql数据库管理工具

    MySQL数据库管理系统是世界上最受欢迎的关系型数据库之一,广泛应用于各种规模的企业和项目中。为了更高效地管理和维护MySQL数据库,各种专业工具应运而生。"Mysql数据库管理工具"就是一个这样的解决方案,它专为...

    从sqlserver同步数据到Mysql数据库

    一个学习数据库很好的实例,从sqlserver同步数据到Mysql数据库。vs2010

    mysql数据库同步

    mysql数据库主从同步,做主dns和从dns同步

    两个MySQL数据库之间同步表结构及索引模式.md

    两个MySQL数据库之间同步表结构及索引模式

    mysql数据库同步配置

    MySQL 数据库同步配置是将一个 MySQL 服务器的数据实时或定期复制到另一个服务器的过程,这在分布式系统、备份策略和高可用性解决方案中非常常见。在Linux环境下,我们可以通过以下步骤实现表级同步,即只同步特定的...

    MySQL数据库的主从同步备份在windows下实现

    MySQL_数据库的主从同步备份在windows下实现

    Mysql数据库同步

    MySQL数据库同步是一种用于在多个...综上所述,MySQL数据库同步是一个涉及多个步骤的过程,包括配置文件修改、权限设置、同步启动和状态监控等。正确设置和维护主从同步是保证数据库高可用性和数据安全的重要手段。

    mysql数据库的同步问题双机热备.pdf

    MySQL 数据库同步问题双机热备 MySQL 数据库同步问题双机热备是指在两个或多个 MySQL 服务器之间实现数据同步的过程。这种同步机制可以使得多个服务器之间的数据保持一致,从而提高数据的可靠性和可用性。 在 ...

    Mysql一键数据库同步和主主同步脚本

    数据库数据同步和主主同步脚本简化了用户在配置MYSQL主主同步的操作,用户只需要执行相应的脚本,就能完成主主同步配置。 改代码解压后需要在解压目录中:执行dos2unix * 目录里有使用说明

Global site tag (gtag.js) - Google Analytics