Ⅰ 请教Mysql怎样实现双向同步
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日
志中记录的日志项,包涵数据库表中所有数据,那么, 就可以恢复本地数据库的全部数据了)。 而这个二进制日志,
如果用作远程数据库恢复,那就是replication 了。这就是使用replication 而不用sync 的原因。这也是为什么要设
置bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。下面就介绍
下怎样实现两个Mysql数据库之间的主从同步。
一、 概述
MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、
互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。
二、 环境
操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN)
Mysql版本:5.0.45-4.fc8
设备环境:PC(或者虚拟机)两台
三、 配置
数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下
为/etc/my.cnf。
3.1 设置环境:
IP的设置:
A主机 IP:10.10.0.119
Mask:255.255.0.0
B主机 IP:10.10.8.112
Mask:255.255.0.0
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态
。如果防火墙状态为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命
令来禁用或定制。
最终以两台主机可以相互ping通为佳。
3.2 配置A主(master) B从(slave)模式
3.2.1 配置A 为master
1、增加一个用户同步使用的帐号:
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权
限才可以。
2、增加一个数据库作为同步数据库:
create databbse test;
3、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
4、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id = 1 #Server标识
log-bin
binlog-do-db=test #指定需要日志的数据库
5、重起数据库服务:
service mysqld restart
查看server-id:
show variable like ‘server_id’;
Ⅱ 如何对MySQL数据库中的数据进行实时同步
前提条件
您需要在您RDS for MySQL所在的云账号下开通阿里云数据传输服务。并 点击此处
下载dts-ads-writer插件到您的一台服务器上并解压(需要该服务器可以访问互联网,建议使用阿里云ECS以最大限度保障可用性)。服务器上需要有Java
6或以上的运行环境(JRE/JDK)。
操作步骤
1. 在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和MySQL中的建议均相同;
2. 在阿里云数据传输的控制台上创建数据订阅通道,并记录这个通道的ID;
(见: https://help.aliyun.com/document_detail/dts/Getting-Started/data-subscription.html),
3. 配置dts-ads-writer/app.conf文件,配置方式如下:
所有配置均保存在app.conf中,运行前请保证配置正确;修改配置后,请重启writer
基本配置:
{
"dtsAccessId": "", // 拥有数据订阅通道的云账号的accessId, 必须配置
"dtsAccessKey": "", // 拥有数据订阅通道的云账号的accessKey, 必须配置
"dtsTunnelId": "", // 数据订阅通道的id, 必须配置; 注意是id,不是通道名称
"adsUserName": "", // 访问您的分析型数据库的用户名(accessId), 必须配置
"adsPassword": "", // 访问您的分析型数据库的密码(accessKey), 必须配置
"adsJdbcUrl": "", // 访问分析型数据库的jdbc连接串, 必须配置(格式jdbc:mysql://ip:port/dbname)
"tables": [
{
"source": {
"primaryKeys": [""] // 主键定义, 必须配置; 注意RDS和分析型数据库中的主键定义必须一致
"db": "", // 源头RDS的db名称, 必须配置
"table": "", // 源头RDS的table名称, 必须配置
"skipColumns": ["col1"] // 可选,若在此配置了RDS表某列名,则该列不会同步
},
"target": {
"table": "" // 分析型数据库表的table名称, 必须配置
},
"columnMapping": {
"": "" // rds表和ads表的列对应关系:key为rds的列名, value为分析型数据库的列名,选填,不填则按照列名一一对应
}
}
]
}
tables节点的配置示例,
表示rds_db库下的rds_table表对应ads_table表,并且rds_table表的col1列对应ads_table表的col1_ads列,
rds_table表的col2列对应ads_table表的col2_ads列
"tables": [
{
"source": {
"primaryKeys": [
"col1",
"col2"
],
"db": "rds_db",
"table": "rds_table"
},
"target": {
"table": "ads_table"
},
"columnMapping": {
"col1": "col1_ads",
"col2": "col2_ads"
}
}
]
注意事项:
1)RDS for MySQL表和分析型数据库中表的主键定义必须完全一致;如果不一致会出现数据不一致问题。如果需要调整RDS/分析型数据库表的主键,建议先停止writer进程;
2)一个插件进程中分析型数据库db只能是一个,由adsJdbcUrl指定;
3)一个插件进程只能对应一个数据订阅通道;如果更新通道中的订阅对象时,需要重启进程
4)RDS for MySQL中DDL操作不做同步处理;
5)更新app.conf需要重启插件进程才能生效;
6)如果工具出现bug或某种其它原因需要重新同步历史数据,只能回溯最近24小时的数据(在阿里云数据传输的控制台中修改消费位点);
7)插件的最大同步性能与运行插件的服务器的互联网带宽和磁盘IOPS成正比。
4. 运行dts-ads-writer/bin/startup.sh(sh bin/startup.sh);
5. 配置监控程序监控进程存活和日志中的常见错误码。
logs目录下的日志中的异常信息均以ErrorCode=XXXX ErrorMessage=XXXX形式给出,可以进行监控
Ⅲ mysql 多个库怎么实时同步
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日
志中记录的日志项,包涵数据库表中所有数据,那么, 就可以恢复本地数据库的全部数据了)。 而这个二进制日志,
如果用作远程数据库恢复,那就是replication 了。这就是使用replication 而不用sync 的原因。这也是为什么要设
Ⅳ mysql数据库表数据同步有几种方法
这一需求在不同机器上的,
1,通过replication
(master-slaves)实现了这两张表的复制功能,
2,mysql的版本是5.1.54,基于记录的复制(Row-Based
Replication)。
3,但是在备库调用存储过程时出了问题,这个存储过程中使用了UUID_short()函数,在存储过程这个函数不能产生新值。
Ⅳ 如何同步两个mysql数据库中所有的表
用数据库快照就能实现啊.
Oracle快照原理及实现总结
Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。对于中大型数据库,业务数据库里所有的数据同步到另外一个处理服务器上最佳的选择还是使用SnapShot方式,即快照的方式。
由于工作需要,今天需要将业务数据库里所有的数据同步到另外一个处理服务器上。在做方案的时候,想了很多方法,当然最快的办法还是使用物理热备的方式。
但是我个人认为如果对于中大型数据库(我们的数据库有300G左右)最佳的选择还是使用SnapShot方式,即快照的方式。
Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中。
以下是我建立的Snapshot,目的是从业务数据库上将数据Copy到处理数据库上,是不同的两个服务器之间对数据。
第一步:在处理服务器上的Oracle终端,建立database link,业务数据库服务器SID为TEST
create database link TEST_DBLINK.US.ORACLE.COM
connect to AMICOS identified by AMICOS
using 'test';
第二步:在业务数据库上对应的表建立快照日志
Create snapshot log on A_Table;
第三步:建立Snapshot 快照名称为:Test_SnapShot
Create snapshot Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
as select * from A_Table@TEST_DBLINK
说明:REFRESH是刷新方法
刷新方式有:COMPLETE和FAST两种,而START WITH是说明开始执行的时间。
Next是下次执行的时间
而AS以后是构成快照的查询方法。
相关的方法:
更改快照
ALTER SNAPSHOT Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;
手动刷新快照 在命令界面执行:
EXEC DBMS_SNAPSHOT.REFRESH('Test_SnapShot ','C');
第一个参数是要刷新的快照名
第二个参数是刷新的方式,F----FAST, C---COMPLETE
查看快照最后刷新的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES;
最后非常的方案:
1:为需要做Snapshot的表建立Snapshot日志
create snapshot log on t1 with rowid; 这里使用ROWID建立日记的参数
2:采用Fast的方式建立快照,使用rowid做为参考参数
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
最好能按照rowid来建立快照。要不然就必须要为表建立Primary Key。
Ⅵ 如何在 MySQL 数据库之间同步数据表
如何在 MySQL 数据库之间同步数据表
insert into table table1 select *from table2 where 条件 即可把table2中符合条件的语句同步到table 1中
Ⅶ 如何对MySQL数据库中的数据进行实时同步
具体操作:
1、在分析型数据库上创建目标表,数据更新类型为实时写入,字段名称和MySQL中的建议均相同;
2、在阿里云数据传输的控制台上创建数据订阅通道,并记录这个通道的ID;
注意事项:
1、RDS for MySQL表和分析型数据库中表的主键定义必须完全一致;如果不一致会出现数据不一致问题。如果需要调整RDS/分析型数据库表的主键,建议先停止writer进程;
2、一个插件进程中分析型数据库db只能是一个,由adsJdbcUrl指定;
3、一个插件进程只能对应一个数据订阅通道;如果更新通道中的订阅对象时,需要重启进程。
Ⅷ 跨国同步Mysql数据库可行吗
如果不考虑网速和数据量的话,可以。你懂得。
Ⅸ 如何配置两个MySQL数据库之间的主从同步功能
IP的设置:A主机
IP:10.10.0.119;Mask:255.255.0.0;B主机
IP:10.10.8.112;Mask:255.255.0.0
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service
iptables
status查看防火墙状态。如果防火墙状态。
为仍在运行。使用service
iptables
stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。
3.2
配置A主(master)
B从(slave)模式;3.2.1
配置A
为master。
增加一个用户同步使用的帐号:
GRANT
FILE
ON
*.*
TO
‘backup’@'10.10.8.112'
IDENTIFIED
BY
‘1234’;
GRANTREPLICATION
SLAVE
ON
*.*
TO
‘backup’@'10.10.8.112'
IDENTIFIED
BY
‘1234’。
赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION
SLAVE的权限才可以。
增加一个数据库作为同步数据库:create
database
test;
创建一个表结构:create
table
mytest
(username
varchar(20),password
varchar(20));
修改配置文件:修改A的/etc/my.cnf文件。
在my.cnf配置项中加入下面配置:
server-id
=
1
#Server标识
log-bin
binlog-do-db=test
#指定需要日志的数据库
重起数据库服务:
service
mysqld
restart
查看server-id:
show
variable
like
‘server_id’。
Ⅹ 如何配置两个MySQL数据库之间的主从同步功能
IP的设置:A主机 IP:10.10.0.119;Mask:255.255.0.0;B主机 IP:10.10.8.112;Mask:255.255.0.0
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态。
为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。
3.2 配置A主(master) B从(slave)模式;3.2.1 配置A 为master。
增加一个用户同步使用的帐号:
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’。赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
增加一个数据库作为同步数据库:create database test;
创建一个表结构:create table mytest (username varchar(20),password varchar(20));
修改配置文件:修改A的/etc/my.cnf文件。