Mysql Server1作为MASTER运行.
Mysql Server2作为SLAVE运行.
现在,DB复制正在从MASTER发生到SLAVE.
Server2从网络中删除并在1天后重新连接.在此之后,主站和从站中的数据库不匹配.
如何在恢复从Master到Slave的DB后再次重新同步DB也无法解决问题?
我正在做一个处理结构化文档数据库的项目.我有一个类别树(约1000个类别,每个级别最多约50个类别),每个类别包含数千个(最多,比方说,~10000)结构化文档.每个文档都是几千字节的数据,采用某种结构化形式(我更喜欢YAML,但它也可能是JSON或XML).
该系统的用户可以进行多种操作:
当然,传统的解决方案是使用某种文档数据库(例如CouchDB或Mongo)来解决这个问题 - 然而,这个版本控制(历史)的东西诱惑我一个疯狂的想法 - 为什么我不应该使用git存储库作为一个这个应用程序的数据库后端?
乍一看,它可以像这样解决:
这个解决方案还有其他常见的陷阱吗?有没有人试图实现这样的后端(即任何流行的框架 - RoR,node.js,Django,CakePHP)?这个解决方案是否会对性能或可靠性产生任何影响 - 即它是否证明git比传统数据库解决方案慢得多,或者存在任何可扩展性/可靠性缺陷?我认为推送/拉取彼此存储库的这类服务器集群应该相当强大和可靠.
基本上,告诉我,如果这个解决方案将工作和为什么它会或不会做?
database git database-replication database-performance document-database
任何人都可以告诉我更多关于PostgreSQL中物理复制和逻辑复制之间的区别吗?
要设置副本集,我在3个单独的终端选项卡中运行:
$ sudo mongod --replSet rs0 --dbpath /data/mining --port 27017
$ sudo mongod --replSet rs0 --dbpath /data/mining2 --port 27018
$ sudo mongod --replSet rs0 --dbpath /data/mining3 --port 27019
Run Code Online (Sandbox Code Playgroud)
然后,我在Mongo shell中配置了复制并验证它是否有效:
> var rsconf = {
_id: "rs0",
members: [
{
_id: 0,
host: 'localhost:27017'
},
{
_id: 1,
host: 'localhost:27018'
},
{
_id: 2,
host: 'localhost:27019'
}
]
};
> rs.initiate(rsconf);
{
"info": "Config now saved locally. Should come online in about a minute.",
"ok": 1
}
// Some time …Run Code Online (Sandbox Code Playgroud) 这是一个相关的问题.
即使我没有安装SQL Server复制,为什么会出现此错误?最奇怪的是,当我运行修复程序时
sp_configure 'max text repl size', 2147483647
Go
RECONFIGURE
GO
Run Code Online (Sandbox Code Playgroud)
它工作,我不再得到这个错误
MySQL复制因最后一个错误而中断
Last_Errno:1580 Last_Error:错误'如果在查询时启用了日志记录,则无法'更改'日志表.默认数据库:'mysql'.
似乎这是运行版本5.1.61的mysql_upgrade的错误我发现了一些错误报告,但是一旦在主服务器上执行了升级,就找不到如何解决这种情况.
有任何想法吗?
参考:http : //bugs.mysql.com/bug.php? id = 39133 http://bugs.mysql.com/bug.php?id=43579 http://bugs.mysql.com/bug.php? ID = 46638
我设置了具有身份验证的副本集.我用过这个教程.我设置了密钥文件,管理员用户和其他用户.一切正常 - 匿名访问被禁用,我可以登录
$ mongo
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
rs0:PRIMARY> use admin
switched to db admin
rs0:PRIMARY> db.auth("USERNAME","PASSWORD")
1
rs0:PRIMARY>
Run Code Online (Sandbox Code Playgroud)
使用我创建的用户凭据.
但我无法从命令行登录
$ mongo -u 'USERNAME' -p 'PASSWORD'
MongoDB shell version: 2.6.1
connecting to: test
2014-05-18T14:23:47.324+0200 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at src/mongo/shell/db.js:1210
exception: login failed
Run Code Online (Sandbox Code Playgroud)
使用相同的凭据.我没有在文档中找到任何有用的信息,或者在SO上找到.
有没有人有一个很好的建议,我应该使用什么数据库,以实现跨可变数量的目标复制?我有一个Raspberry Pi服务器的网状网络,每个服务器都可以包含一个数据库.我希望通过网络复制每个数据库的内容,但我不能保证在任何时间点可用的节点.
大多数nosql数据库(例如CouchDB,Cassandra)似乎只支持配置中定义的目标.
所以(假设nosql是最好的数据库选项); 是否有一个nosql数据库可以复制到可变数量的目标?
我知道COLUMNS_UPDATED,我需要一些快速的快捷方式(如果有人做了,我已经制作了一个,但如果有人可以节省我的时间,我会恭维它)
我需要基本上只有更新列值的XML,我需要这个用于复制目的.
SELECT*FROM inserted为我提供了每一列,但我只需要更新的列.
像下面这样......
CREATE TRIGGER DBCustomers_Insert
ON DBCustomers
AFTER UPDATE
AS
BEGIN
DECLARE @sql as NVARCHAR(1024);
SET @sql = 'SELECT ';
I NEED HELP FOR FOLLOWING LINE ...., I can manually write every column, but I need
an automated routin which can work regardless of column specification
for each column, if its modified append $sql = ',' + columnname...
SET @sql = $sql + ' FROM inserted FOR XML RAW';
DECLARE @x as XML;
SET @x …Run Code Online (Sandbox Code Playgroud) 我试图找出,乐观并发控制(OCC)和多版本并发控制(MVCC)之间的区别是什么?
到目前为止,我知道两者都基于版本检查更新.
在OCC中,我读到了没有获取读取访问锁定的事务,只读取了后续更新,如果版本增加且版本检查失败,则更新将失败.在这种情况下,事务将被回滚.
在MVCC中,它基本相同,不是吗?区别在哪里?
database ×4
mongodb ×2
mysql ×2
replication ×2
concurrency ×1
git ×1
nosql ×1
postgresql ×1
sql ×1
sql-server ×1
sql-update ×1
triggers ×1