这一需求在不同机器上的,
1,通过replication (master-slaves)实现了这两张表的复制功能,
2,mysql的版本是5.1.54,基于记录的复制(Row-Based Replication)。
3,但是在备库调用存储过程时出了问题,这个存储过程中使用了UUID_short()函数,在存储过程这个函数不能产生新值。
㈡ 本地sql数据库怎么与远程sql数据库同步
用数据库复制,订阅.
㈢ mysql数据库 两地 同步 怎么做
可以通过主从备份去实现,推荐看看高可用mysql这本书看看,找找相关资料,难度不到,只要你对性能要求不是太高
㈣ 4台服务器,4个网站mysql数据库,如果实时同步
查找MYSQL主从同步方案,
已经很成熟的方案了,一主,多从,主服务器负责写入,从服务器只读。
mysql主从方案主要作用:
读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
热备,slave和master的数据“准实时”同步。
准备工作。先分别安装两台MYSQL(主服务器:192.168.84.137,从服务器:192.168.84.130)
配置MASTER。找到my.cnf文件,修改:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = study #要备份的数据库
#binlog_do_db = backup #要备份的数据库
#binlog_ignore_db = test #不需要备份的数据库
其中,虽然作为主机,但server-id不是必须为1.但一般都填1
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。(最好写在从库配置)
重启master数据库,运行检查:
mysql> show master status; #检查是否以master形式启动了。
+------------------+----------+----------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+----------------------------------+------------------+
| mysql-bin.000001 | 1087 | study,backup | test
+------------------+----------+----------------------------------+------------------+
1 row in set (0.00 sec)
mysql> show variables like "%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin | ON
在master上为slave建立用户
mysql> grant replication slave on *.* to 'replication'@'192.168.84.130' identified by '123456';
这样,主机配置完毕。
配置slave
server-id = 2 #随便什么数字,多台slave注意不能为重复就可以了。
#log_bin = /var/log/mysql/mysql-bin.log #slave的binlog就没有必要再开启了。注释掉。
master-host = 192.168.84.137 #master的IP
master-user = replication #上面操作中,建立的用户名
master-password = 123456 #上面操作中,建立的密码
配置生效后,配置与master的连接:
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.84.137',
-> MASTER_USER='replication',
-> MASTER_PASSWORD='123456',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=1087;
其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息
slave:mysql> show slave status/G;
#很多很多列
======================================================================================================
到此,可以做一些检测性的东西:
有三个地址必须调试成功,
1 从库连接主库进行测试: mysql -h192.168.84.137 -ureplication -p123456 此处必须连接成功
2 show master status;必须有相关显示
3 show slave status;
必须为
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果Slave_IO_Running为No,可以考虑执行下面的语句,根据实际进行修改。
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=实际Position;
SLAVE START;
此时Slave_IO_Running应该恢复为Yes,同步进行了!
如果Slave_IO_Running仍然为No,则可以考虑重新启动mysql
==================================================================================================
接下来,将主机数据 过来
这个流程比较复杂:)各个步骤注意所在的机器
slave:mysql> stop slave; #停掉slave的复制先。
master:mysql> flush tables with read lock; #锁掉master服务器的所有表,禁止写入。
master:mysql> show master status; #还是上面的语句,查看并记录下 File mysql-bin.000002, Position 1087
+------------------+----------+----------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+----------------------------------+------------------+
| mysql-bin.000001 | 1087 | study | test |
+------------------+----------+----------------------------------+------------------+
1 row in set (0.00 sec)
chluo@master:~$ mysqlmp -uroot -pxl study > study.sql #在命令行中导出DB的数据,这里是bash操作:)
master:mysql> unlock tables; #导出完成之后,解锁。 master可以继续跑起来了。
chluo@master:~$ scp study.sql [email protected]:/ #将导出的sql传送到从服务器
chluo@slave:/$ mysql -uroot -pxl study < study.sql #在slave的命令行中导入DB的数据,这里又是bash操作:)
slave:mysql> start slave;
数据的拷贝简单来说就是主从服务器上要同步的数据库结构必须是一样的
㈤ 如何对MySQL数据库中的数据进行实时同步
如何对MySQL数据库中的数据进行实时同步
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日
志中记录的日志项,包涵数据库表中所有数据,那么, 就可以恢复本地数据库的全部数据了)。 而这个二进制日志,
如果用作远程数据库恢复,那就是replication 了。这就是使用replication 而不用sync 的原因。这也是为什么要设
置bin-log = 这个选项的原因。
㈥ 从内网mysql如何数据同步到公网mysql,求解决方案…
20M 数据 30分钟,是内网的网速慢,还是公网的网速慢,这些都不是源头解决问题
关键是如何让公网的数据库访问正常,是公网带宽不够,还是程序问题?可以做些测试。
要是数据导入的话 公网mysql允许公司出口IP权限,然后本地mysql -h 公网IP 这样导数据看看速度怎么样。
㈦ 如何将内网sql数据库中数据同步到外网mysql数据库中
首先是你外网是否能连接到内网的数据库中,如果不行,一切无效。这个最好是网管解决。
能连的话,和内网就一样连了,指定IP就行。
当年我们从深圳连香港都一样的连。
㈧ MySQL 数据库怎么同步
MySQL 数据库怎么同步
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日