我们正在实施在 MySQL 上运行的新 CMS (Drupal 6.x)。我们有两个数据中心——主要的和次要的——它们之间的延迟是已知的。我们不确定我们将运行哪个版本的 MySQL……社区或企业,但这是一个待定的时间。看起来我们将运行 InnoDB 引擎,操作系统将是 RedHat EL 5.5 主服务器将处于活动状态,而辅助服务器将处于被动或热备用状态。
我想在 MySQL 中跨两个数据中心实现复制、高可用性和自动故障转移。
在故障转移到辅助服务器后,当我们故障恢复到主服务器时,我们希望将数据从辅助数据库快速完整地同步到主数据库,以便我们可以继续提供来自主服务器的内容。
我很想知道可以使用哪些技术/工具/最佳实践来解决/解决这些问题。此外,任何陷阱或啊哈时刻也将不胜感激。我已经阅读了 MySQL 复制、集群和一些 3rd 方工具,如 Tungsten 和 Dolphinics,但我不确定什么是最好的行动方案。
感谢您的时间!
知识管理
我在 Slave 上收到错误消息:
无法在表 mydatabasename.atable 上执行 Write_rows 事件;密钥“PRIMARY”的重复条目“174465”,错误代码:1062;处理程序错误 HA_ERR_FOUND_DUPP_KEY; 事件的主日志 mysql-bin.000004, end_log_pos 60121977
由于我直接从 master 获取更新,所以为什么会发生这种情况。
我们如何以有效的方式处理这个问题,以便从站上没有数据丢失。我不想再次设置整个复制以保持数据完整性。
谢谢..!
阅读了Using Replication for Scale-Out,我如何将不同的查询路由到不同的服务器,例如,SELECT我想路由到从服务器和NON-SELECT主服务器。我假设作为负载均衡器我可以使用haproxy,但我没有发现可以在haproxy级别上区分查询?另外,假设有人直接到达了master,master如何识别这是SELECT查询和显示发送到slave,或loadbalancer。
我们最近对我们的基础设施进行了一些更改,现在我无法保持 MySQL 复制运行。奴隶抱怨二进制日志损坏,重置它无济于事。我一直在我的主日志中看到这样的条目:
二进制日志' WFxKTRNJAAAAPwAAAKY/YwAAABsAAAAAAAEACHdlYmVkaTMwAA1QYXJ0bmVyQ29uZmlnAAQICA8P BC0AYwAA WFxKTRhJAAAAXAAAAAAJAYwAAABsAAAAAAAEABP//8BoSAAAAAAAAAAggMAAAAAAAAJUEFDS0NPVU5U Azc3MfAaEgAAAAAAAIIDAAAAAAAACVBBQ0tDT1VOVAM3NzI= '/*!*/;
在从属日志中,这只是作为“未知事件”出现,并且复制在该位置失败。
这是我给主人的 my.cnf:
[mysqld] datadir=/data/mysql-data 套接字=/tmp/mysql.sock 用户=mysql 日志错误=/var/log/mysqld.log binlog-do-db = db1 binlog-do-db = db2 binlog-do-db = db3 binlog-do-db = db4 binlog_format = '混合' log-bin = /data/mysql-binlogs/mysql-bin.log 服务器 ID=73 报告主机=thisserver.mydomain.com 线程缓存大小 = 30 key_buffer_size = 700M myisam_sort_buffer_size = 300M table_cache = 256 sort_buffer_size = 4M read_buffer_size = 1M innodb_data_home_dir = /data/mysql-data/ innodb_data_file_path = InnoDB:100M:autoextend 设置变量 = innodb_buffer_pool_size=500M 设置变量 = innodb_additional_mem_pool_size=10M 设置变量 = max_connections=500 innodb_log_group_home_dir = /data/mysql-data 设置变量 = innodb_log_file_size=20M 设置变量 = innodb_log_buffer_size=8M …
这是场景:
有两台机器运行 CentOS 6.2 - machine0 和 machine1
两者都安装了 PostgreSQL 9.1。
其中一个应该是活动的,作为主系统,并通过异步流复制另一台机器,备用系统应该将更改从主系统复制到数据库。
假设开始时machine0是master,machine1是standby。
如果 master(比如 machine0)失败(这里的失败意味着 postgresql 服务器崩溃),standby 应该从 master 接管并成为新的 master。
machine1,新的 master 处理所有数据库操作,当 machine0 中的 postgresql 服务器重新联机时,它应该成为备用服务器,从与 machine1 失去联系的点开始同步,并将所有更改复制到数据库并保持备用模式。
当机器 1 失败时,整个循环重复。
当备用服务器出现故障并重新上线时,它应该开始从主服务器读取数据并同步数据。
我很困惑我需要使用什么工具来设置它,因为我知道 PostgreSQL 默认不带有故障转移。
如果有人可以将我链接到描述如何做我正在尝试的主题/页面,我将非常感激。
我一直在研究 SQL Server 2012 的新功能,以及它如何帮助我目前的情况。
目前,我们使用 SQL Server 2008 R2,并通过事务复制将两个 OLTP 服务器的数据库复制到单个报告服务器。然后我们使用这些复制的 DB 进行报告。
我对 SQL Server 2012 和可用性组是否可以取代它感兴趣 - 所以我会使用新的可用性组而不是事务复制,并将两个 OLTP 服务器的数据库镜像到报告服务器 - 报告将能够访问只读副本。
我不确定这是否会奏效,甚至根本不会。
我想摆脱复制,因为它会导致我的部署策略出现问题(使用 VSDBCMD.exe)。我还想避免大型数据库上的复制重新初始化延迟。
有没有人有任何好的例子或经验?是否可以按照较低版本中的正常镜像将多个服务器的可读副本镜像到单个服务器?
这最初是在这里问的:https : //stackoverflow.com/questions/10415225/mirroring-and-availability-groups-in-sql2012对不起,我认为我还不能迁移问题。
replication sql-server sql-server-2012 high-availability availability-groups
我想在 master 上使用 InnoDB,因为它的事务能力,但 MyISAM 在 slaves 上使用全文搜索能力。这可能吗?
我们的 SQL Sever 2008 应用程序数据库从服务器 A 复制到服务器 B(推送复制)。我们使用服务器 B 上的副本(我们称之为 database_b)来创建报告并运行其他查询,以便我们的报告不会干扰应用程序。目前,我们利用低效的视图在 database_b 中跨多个表组合数据,以便为我们的报告编写者(具有基本 SQL 技能)简化报告编写。
99.9% 的数据库活动是 INSERTS,所以我们正在探索一种用我们可以优化的表替换低效视图的方法。这是一个简化的示例:
有一个appointment表和一个location(查找)表。每次安排新约会时,都会向appointment表中添加一行。每次这个 INSERT 发生时,我想把appointment_id它和它对应的位置名称(location_id从两个表连接)插入到一个报告表中。
我已经通过服务器 B 上 database_b 中的约会表上的触发器完成了此操作。
我的问题是 - 鉴于 database_b 是复制副本,是否有任何特殊考虑?我是否需要担心失败的触发器会破坏整个(推送)复制过程?还有什么我想念的吗?
不幸的是,在我们的开发环境中很难对此进行测试,因此我没有机会进行大量的反复试验。
我们在一个 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 复制是否会破坏我的数据库的性能,因为对于在我的主数据库上写入的每个用户都会在从数据库上创建一个额外的写入(我可能在这里错了)。
我的奴隶和主人之间没有滞后。因此,复制几乎是瞬间完成的。
replication ×10
mysql ×6
sql-server ×3
architecture ×1
clustering ×1
failover ×1
innodb ×1
myisam ×1
performance ×1
postgresql ×1
scalability ×1
trigger ×1