是否有人了解 SQL Server 复制的替代方法?
我有一个场景,其中单独的数据库将共享许多复杂查询将与之匹配的相同数据。我们希望将数据库彼此分开(即不在同一个 SQL Server 上),以便我们可以确保服务器资源不是瓶颈。
哪些技术允许快速有效的数据共享,相当即时。
复制似乎是一项相当缓慢和繁琐的技术?
SQL 2012 和 2014 中是否有任何新功能可以满足这种情况?
AlwaysOn 可用性组并没有完全削减它,因为它们是只读副本。
我需要一个读/写副本,其中多个数据源相互交互
Server A Server B Server C
All have read/write transactions, all require as instant
as possible sharing of data between them of the results of the transactions.
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
我计划将数据库复制从 SQL Server 2012(发布者)运行到 SQL Server 2014(分发者和订阅者)——拉复制。
有没有人做过这种类型的跨版本复制并知道它是否有任何问题?
谢谢!
标准复制无缘无故中断。
mysql> SELECT @@version, @@version_comment;
+---------------+----------------------------------------------------------------------------+
| @@version | @@version_comment |
+---------------+----------------------------------------------------------------------------+
| 5.6.15-56-log | Percona XtraDB Cluster (GPL), Release 25.5, Revision 759, wsrep_25.5.r4061 |
+---------------+----------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'wsrep_on';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on | OFF |
+---------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
启用崩溃安全复制:
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = 1
Run Code Online (Sandbox Code Playgroud)
从站运行良好:
# mysql -e "SHOW SLAVE STATUS\G" | grep "Slave"
Slave_IO_State: Waiting for master …Run Code Online (Sandbox Code Playgroud) 我是我的雇主公司私人网站的开发人员,一个用于公司报告等的 HTML5/PHP/CSS 支持的站点。该站点托管在共享托管包上,连接到远程只读 MySQL 数据库服务器以进行身份验证和报告数据查询。此远程 DB 主要由单独的 Windows exe 使用。
远程数据库经常宕机,这当然会导致私人网站因 MySQL 连接错误而炸毁。我曾考虑将远程 DB 复制到站点的本地托管 MySQL DB 并使用本地 DB 作为站点的主要和唯一的 DB 连接。
有没有办法以一种简单而轻松的方式将远程数据库同步到站点的共享托管数据库?比如每小时更新一次?
或者是否有一个功能,该站点的托管包 MySQL DB 功能可以缓存远程 DB 数据并将其用作后备。
提前致谢。
我想在MS Windows 2008 R2下使用MySQL 5.6.14进行MySQL复制,Master和Slave的端口应该是1000(PC1上的主库,PC2上安装的从库)。
我为 master 添加了以下参数 My.ini
[mysqld]
server-id=1
log-bin=black-bin.log
datadir=d:\mysql\master\
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Run Code Online (Sandbox Code Playgroud)
然后我编辑从My.ini添加以下参数:
[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
datadir=d:\mysql\slave
Run Code Online (Sandbox Code Playgroud)
之后,我使用 root 用户登录到 Master 数据库并执行以下命令
CREATE USER repl_user@slave_ip;
GRANT REPLICATION SLAVE ON *.* TO repl_user@slave_ip IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
为了初始化复制,我登录到从数据库并执行以下命令:
CHANGE MASTER TO MASTER_HOST='maset_ip',
-> MASTER_USER='repl_user',
-> MASTER_PASSWORD='password';
start slave;
Run Code Online (Sandbox Code Playgroud)
如果 master 的端口是 3306,则复制工作正常,但如果端口更改,则它不再工作。我的问题是:如何让从设备连接到端口 1000?我尝试将以下参数添加到从属my.ini master-port=1000然后重新启动从属 SID 但它不起作用(服务未启动,错误消息:未知参数主端口)。请指教,谢谢。
我的 3 套副本集都变成了次要的,我不知道为什么。
我得到的日志是:
数据库1
2014-12-12T02:43:55.067+0000 [conn1413096] end connection
10.0.64.12:58483 (512 connections now open) 2014-12-12T02:43:55.067+0000 [initandlisten] connection accepted from
10.0.64.12:58485 #1413098 (513 connections now open) 2014-12-12T02:44:01.068+0000 [conn1413097] end connection
10.0.64.11:35195 (512 connections now open) 2014-12-12T02:44:01.069+0000 [initandlisten] connection accepted from
10.0.64.11:35197 #1413099 (513 connections now open) 2014-12-12T02:44:14.070+0000 [rsHealthPoll] couldn't connect to
10.0.64.12:27017: couldn't connect to server 10.0.64.12:27017 (10.0.64.12), connection attempt failed 2014-12-12T02:44:19.071+0000 [rsHealthPoll] couldn't connect to 10.0.64.12:27017: couldn't connect to server 10.0.64.12:27017 (10.0.64.12) failed, connection attempt failed 2014-12-12T02:44:22.072+0000 [rsHealthPoll] couldn't connect …Run Code Online (Sandbox Code Playgroud) 我被要求对一个在后端使用 postgresql 的应用程序进行逆向工程。我可以看到正在进行一些数据库复制...根据我的阅读,我*认为它被称为流复制。主服务器上的设置如下所示:
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segments = 32
Run Code Online (Sandbox Code Playgroud)
我的问题是:什么会影响在 master 上创建新记录与何时出现/复制到 slave 之间的延迟?
通过阅读手册,(http://www.postgresql.org/docs/current/static/hot-standby.html)我看到它使用的模型是“最终一致性”......该页面上的第 4 段指出:
备用服务器上的数据需要一些时间才能从主服务器到达,因此主服务器和备用服务器之间会存在可测量的延迟。因此,在主数据库和备用数据库上几乎同时运行相同的查询可能会返回不同的结果。我们说备用数据库上的数据最终与主数据库一致。
但是有没有任何模式/方法可以猜测需要多长时间?或者它真的只是随意的?
如果您能指出我正确的方向,我将不胜感激。谢谢。
我刚刚在 SQL Server 2014 上设置了非常基本的事务复制。
发行商和发行商是一回事。
我已将发布者配置为推送到订阅者,因此所有配置均在发布者上完成。
我完全按照此 Microsoft 教程中的详细说明设置了所有用户帐户。
发布服务器和订阅服务器已成功设置,并且 SQL Server 代理正在两台服务器上运行。
无论如何,当我检查发布者的状态时,我反复收到此消息:
进程无法连接到订阅者“(订阅者框)”
我已经尝试了这些建议并且无法调试它,尽管我很确定它与登录相关。
我已成功使用GTID_MODE. 它完美地工作。现在我需要在其中设置自动故障转移功能。我已经运行了以下命令。
mysqlfailover --master=root:abc@10.24.184.12:3306 --discover-slaves-login=root:abc
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果。没有列出任何奴隶。
MySQL Replication Failover Utility
Failover Mode = auto Next Interval = Tue May
Master Information
------------------
Binary Log File Position Binlog_Do_DB Binlog
mysql-bin.000016 9568
GTID Executed Set
8fe8b710-cd34-11e4-824d-fa163e52e544:1-1143
Replication Health Status
0 Rows Found.
Q-quit R-refresh H-health G-GTID Lists U-UUIDs U
Run Code Online (Sandbox Code Playgroud)
但是当我执行mysqlrplcheck和mysqlrplshow命令时,会列出从属设备。
这是正常的吗?
我已经通过本手册安装了 postgres 主节点和从节点:
在主 (10.0.0.1) 处:
sudo -u postgres initdb -D /data/postgres/main
Run Code Online (Sandbox Code Playgroud)
更改 postgresql.conf:
listen_addresses = '*'
wal_level = hot_standby
max_wal_senders = 2
logging_collector = on
max_wal_senders = 5
Run Code Online (Sandbox Code Playgroud)
将复制记录添加到 pg_hba.conf:
host replication replica 10.0.0.2/32 md5
Run Code Online (Sandbox Code Playgroud)
然后启动postgres
service postgresql start
Run Code Online (Sandbox Code Playgroud)
创建复制用户:
CREATE USER replica WITH REPLICATION ENCRYPTED PASSWORD '123456';
Run Code Online (Sandbox Code Playgroud)
并添加复制槽:
SELECT pg_create_physical_replication_slot('standby_slot');
Run Code Online (Sandbox Code Playgroud)
在从站 (10.0.0.2):
pg_basebackup -h 10.0.0.1 -U replica -D /db/postgres/main -X s -P
Run Code Online (Sandbox Code Playgroud)
在 postgresql.conf 中将状态更改为备用:
hot_standby = on
Run Code Online (Sandbox Code Playgroud)
添加recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.0.1 port=5432 …Run Code Online (Sandbox Code Playgroud) replication ×10
mysql ×4
sql-server ×3
failover ×2
postgresql ×2
mirroring ×1
mongodb ×1
permissions ×1