我有一个主数据库,其中已经有一些数据。master 数据库中的表包括 MyISAM 和 InnoDB 引擎。现在我想使用mysqldump来转储我的从 MySQL 服务器的初始数据。我应该传递给 mysqldump 的参数是什么?目前我使用的是下面列出的。
mysqldump --host=localhost --user=root --password=pa4word --single-transaction --lock-all-tables --master-data=1 mydb > result.sql
Run Code Online (Sandbox Code Playgroud)
这个命令可以吗?我不知道这是否适合我的环境(MyISAM 和 InnoDB 引擎表在一个数据库中)。
谢谢,
我在主/从配置模式下运行 mysql 服务器。有多个从主从复制。它们工作正常并且它们的复制状态受到监控。
其中一名奴隶为特殊目的服务。开发人员给了我一组要在从属 A 上复制的从属数据库上运行的更新查询。
他们正在更新数据库表中的旧记录(修改大量记录的列数据)。
问题
我白痴重新引导用作MySQL从一台机器,而无需运行STOP SLAVE,FLUSH TABLES第一。
我原以为 MySQL 会在机器重启期间自动处理所有这些,但显然它没有,至少在我使用的配置中没有,因为 SLAVE 没有启动备份。
mysqld确实启动了,但日志中有一条错误消息,表明从属部分由于重复的主键问题而停止。这意味着它正在尝试插入已经添加的数据。
以下是mysql日志中产生的错误:
120104 11:07:54 [Warning] Slave: Duplicate entry '94459' for key 'PRIMARY' Error_code: 1062
120104 11:07:54 [ERROR] Error running query, slave SQL thread aborted.
Fix the problem, and restart the slave SQL thread with "SLAVE START".
We stopped at log 'mysql1-bin.000362' position 3384732
Run Code Online (Sandbox Code Playgroud)
如何确定进程需要从主二进制日志中的哪个位置开始运行CHANGE MASTER语句?我知道我可能会使用 跳过日志条目,sql_slave_skip_counter但不知道要跳过多少,我需要一个一个地进行,这可能需要一整天。
出于某种原因,我的 PostgreSQL 从站不再流式复制主站上的更改。之前可以用,有段时间了,最近发现slave的数据库内容很旧,slave的日志文件有错误,分别是“无效幻数0000 ”和“乱序时间线ID 1(之后2) ”。
你知道我该如何解决这个问题吗?或者为什么会发生?
详情如下。
日志文件错误消息:(在从站上,pg_log/postgresql-Sat.log)
LOG: entering standby mode
LOG: redo starts at 0/1C78848
LOG: consistent recovery state reached at 0/1C7FA30
LOG: database system is ready to accept read only connections
LOG: invalid magic number 0000 in log file 0, segment 1, offset 14942208
LOG: streaming replication successfully connected to primary
LOG: out-of-sequence timeline ID 1 (after 2) in log file 0, segment 1, offset 0
FATAL: terminating walreceiver process due to administrator …Run Code Online (Sandbox Code Playgroud) 众所周知,从 MySQL 5.1.12 到 MySQL 5.1.28 的默认混合模式复制。然而,这被恢复了,并且在当前时刻,基于语句的复制是默认的。
在声明默认基于语句的复制中,Oracle声称这只是因为混合模式复制构成了一种行为改变,可能会引起一些用户不知道。(另请参阅Bug 39812。)然而,MySQL 5.1 有许多行为变化,因为混合基复制的好处如此明显(我相信每个 DBA 都遇到过复制失败的情况,因为用户提交了一个查询没有正确复制并导致他们的数据库出现分歧),这似乎不是一个特别有力的理由。
有一些人抱怨混合复制“可以提供两全其美,但需要测试”,但我们已经在 MySQL 5.1.61 上,人们希望现在所有错误都已解决。所以这让我们很困惑。为什么混合模式复制不是默认的?
我正在尝试设置多主类型的复制,每个主都有一个使用 Tungsten 的附加从。例如,假设我有 4 台主机(A、B、C、D),主机 A 和 C 是主机,B 是 A 的从属,D 是 C 的从属。
使用我当前的配置,我将向 A 添加数据。这被复制到它的从属 B 和另一个主 C 没有问题。我将数据添加到 C 时也会发生同样的情况,它的从站 D 得到更新,另一个主站 A 得到更新。问题是当 A 更新时,D 将看不到更改。我不希望 A 更新 D,而是让 D 从 C 获取所有更新,这也会让 B 从 A 获取所有更新。
这是我一直在研究的配置脚本。
MASTER1='master1-ca' #<-- 'A' from example
MASTER2='master2-va' #<-- 'C' from example
SLAVE1='slave1-ca' #<-- 'B' from example
SLAVE2='slave2-va' #<-- 'D' from example
./tools/tpm configure defaults \
--reset \
--replication-user=tungsten \
--replication-password=password \
--home-directory=/home/tungsten/PCS_DB \
--datasource-mysql-conf=/etc/mysql/my.cnf \
$( cat ./cookbook/security.options …Run Code Online (Sandbox Code Playgroud) 我有一个系统将一个数据库复制到四个从服务器。时不时地,当流量很高时,一个或多个从服务器遇到重复插入错误并且从服务器停止运行。
发生这种情况时,我有两个选择 - 我可以SET GLOBAL SQL_SLAVE_SKIP_COUNTER或者我可以删除从属设备中的违规行。两者似乎都可以工作,我的逻辑说,如果发生了一些事情导致了这个问题,那么从站中的数据可能已损坏。鉴于这只能发生在 INSERT 上,通过删除该行,我保证一旦复制恢复,从属数据将与主数据相匹配。通过跳过,如果该行的数据在从站中损坏,它将保持损坏状态。
我错过了什么吗?
此外,鉴于这在两个特定表上每几个月发生一次,是否有任何理由我不应该自动执行在遇到此错误时触发的过程,删除从属中的该行并重新启动从属?
编辑:我相信 MySQL 5.5.29 和语句复制。
我发现我可以skip-errors=1062在中设置,my.cnf但我需要知道发生错误时该行会发生什么。它会被悄悄丢弃吗?或者那个配置选项相当于STOP SLAVE;SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
在 MySQL 中,master 什么时候向 slaves 发送查询?
这是我试图理解的一个特定场景。
我看到可能发生的四种情况:
^C给从站。^C给从站,并将查询传递给从站。其中哪一项是实际发生的?
重复标题:MySQL 复制工作正常,但 mytop 仍然显示一个线程“等待主发送事件”。这几天一直这样,现在是280000秒。但是复制就好了。
我可以看到另一个正在执行复制工作的线程,现在它位于“从属已读取所有中继日志;正在等待从属 I/O 线程对其进行更新”但它一直在运行查询,我可以验证从站只是通过查看数据是最新的。
我可以终止这个进程吗?
我最近不得不重新设置复制,这涉及创建一个新的复制用户,所以我不确定这是否是导致这个“幽灵复制过程”的原因。