我已将我的从属设置为不复制“mysql”数据库,如此处所述 SHOW SLAVE STATUS\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 1660
Relay_Log_File: mysql-relay-bin.000004
Relay_Log_Pos: 478
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
**Replicate_Ignore_DB: mysql**
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1660
Relay_Log_Space: 633
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Run Code Online (Sandbox Code Playgroud)
现在,如果我去主服务器和问题上GRANT和FLUSH PRIVILEGES:
GRANT SELECT ON *.* TO `foo`@`localhost` IDENTIFIED BY 'bar';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
然后我回到从服务器并发出:
SHOW GRANTS FOR `foo`@`localhost`; …Run Code Online (Sandbox Code Playgroud) 我只想捕获 Slave_IO_Running 和 Slave_SQL_Running 列值的状态/结果,我将使用它们集成到我们的应用程序中。
有没有办法只获取这些字段的值,而不是获取 SHOW SLAVE STATUS 的所有字段的值。
我的操作系统是windows。
我正在使用 MySQL 5.0.24
我们在一个 SQL Server 2005 实例上有两个数据库,它们之间有事务复制(3 个表作为文章)。该服务器同时充当发布者和分发者。
然后服务器上的 RAID 失败。然而,我们设法.mdf在崩溃之前分离并复制了几乎所有文件。
系统恢复后,我们重新安装了SQL Server,恢复了系统数据库(master、model、msdb)并将.mdf文件放在相同的路径下。于是开始了。
问题出现在复制中。在本地发布文件夹是空的,虽然本地订阅文件夹包含有问题的订阅。当我尝试添加新出版物时,我得到了:
新发布向导在检索发布名称时遇到一个或多个错误。
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
无效的对象名称“dbo.syspublications”。(Microsoft SQL Server,错误:208)
我决定尝试删除左订阅(最终我设法)并禁用服务器上的发布和分发,这给了我:
SQL Server 无法禁用“someserver”上的发布和分发。
无效的对象名称“dbo.syssubscriptions”。EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK …
replication sql-server-2005 sql-server transactional-replication
我不是一个“合格的”DBA,但是是的,我负责我们在社交应用程序中使用的我自己的数据库。
出于显而易见的原因,我最近在我的数据库上实施了主/从复制。
我想知道的是 MySQL 复制是否会破坏我的数据库的性能,因为对于在我的主数据库上写入的每个用户都会在从数据库上创建一个额外的写入(我可能在这里错了)。
我的奴隶和主人之间没有滞后。因此,复制几乎是瞬间完成的。
我已经创建了一个 mysql 主从配置,一切看起来都很好。“显示主人状态;” 从站上没有显示任何错误。这是输出
Slave_IO_State: Waiting for master to send event
Master_Host: 109.123.100.58
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 106
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 106
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Run Code Online (Sandbox Code Playgroud)
然而,当主服务器发生变化时,从服务器上的复制似乎没有发生
在主人上。显示主状态
+------------------+----------+--------------+-------------------------+
| File | Position | Binlog_Do_DB | …Run Code Online (Sandbox Code Playgroud) 我们已经使用 SQL Server Replication 很长时间了,但遇到了一些问题,有时我们需要重新初始化订阅以解决一些问题,而有时我们需要破坏整个复制结构并重新重建它!
我们主要担心的是,一旦我们遇到复制问题,几乎所有时间的简单解决方案都是重新初始化我们的业务需求不接受的复制。
现在我们正准备发布一个新的大项目,我们正在尝试寻找用于 SQL Server 复制的 3rd 方软件。
我们的设置包括分布在分支机构(不同国家/地区)的服务器 + 移动客户端(具有本地 SQL Server 数据库的笔记本电脑),我们需要在所有这些之间复制数据并提供文章过滤功能。
有人可以为我们建议一些替代解决方案吗?
今天,我们的主 mysql db 服务器和两个复制服务器之间的复制下降了。我在这里有一个很久以前写的程序,我不确定这是解决这个问题的最快方法。我想与您分享该程序,如果您能提出您的想法,甚至告诉我如何更快地完成,我将不胜感激。
At the master:
RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
And copy the values of the result of the last command somewhere.
Wihtout closing the connection to the client (because it would release the read lock) issue the command to get a dump of the master:
mysqldump mysq
Now you can release the lock, even if the dump hasn't end. To do it perform the following command in the mysql client:
UNLOCK TABLES; …Run Code Online (Sandbox Code Playgroud) 我试图了解何时/何地使用中继日志是有益的。根据文档,作为 I/O 线程的结果,mysql 从 master 的二进制日志中捕获和写入事件。然后,SQL 线程执行从中继日志中的语句。
目前,我在从站上禁用了中继日志,但它没有影响复制。它仍然表现良好。
如果复制需要 SQL 线程从中继日志中读取语句以便执行它们,为什么它在没有中继日志的情况下仍然可以工作?
谢谢
我们在 AWS 上有一个主/单个流副本 Postgres 9.3 db。负载并不是特别高 - 这是一个开发/登台环境。(生产显示了类似的指标)。重点是 Cloudwatch 中显示的“ReplicaLag”在白天在 0 到 200 秒之间剧烈振荡。我已将 max_wal_senders 从 5 更改为 10,没有任何更改。
有什么诊断建议吗?

(这是一个 t2.small master 和 t2.small replica,但是生产实例很大,并且表现出同样的问题。CPU < 2%,连接 < 60,iops 仅约 5-15 计数/秒)。
在我的本地机器上,我刚刚升级到最新的 postgres.app 以获得版本 10。在此之前,我在 9.6 数据库上运行 pg_dumpall,然后在安装版本 10 后,我执行脚本以重新创建数据库、用户、等等...我还在从 dumpall 运行脚本并更新了一些日志记录设置后将 wal_level 更改为逻辑级别。
我首先在dot数据库中创建了一个订阅(作为超级用户)
bill=# \connect dot;
You are now connected to database "dot" as user "bill".
dot=# create publication foo for table dot.item;
CREATE PUBLICATION
Run Code Online (Sandbox Code Playgroud)
item 表中大约有 39k 行,所以同步数据应该不会花那么长时间。
接下来,我创建了一个新数据库dot2,该dot数据库由与该数据库相同的用户拥有,并在与dot数据库中存在的架构相同的模式中创建了一个空项目表,然后我尝试订阅另一个数据库中的发布(也作为超级用户)。
bill=# \connect dot2;
You are now connected to database "dot2" as user "bill".
dot2=# create subscription bar connection 'host=localhost port=5432 dbname=dot connect_timeout=10' PUBLICATION foo;
Run Code Online (Sandbox Code Playgroud)
然而,这只是挂起。它不会返回。
在我的日志中,我看到的只是这个......
2017-11-26 21:36:52.828 EST bill@dot2 54567 …Run Code Online (Sandbox Code Playgroud) replication ×10
mysql ×6
postgresql ×2
sql-server ×2
aws ×1
mysql-5.5 ×1
mysqldump ×1
performance ×1