你能帮我理解为什么我在完全重新同步后在从服务器上收到“主键的重复条目”。
基本上'mysqldump'几乎整晚都在运行,然后恢复过程花了几个小时,所以当我启动slave时,它比master慢了~63874秒。
从服务器是只读的(read_only)并且在重新同步过程中没有任何写入,所以我不明白为什么会有重复的密钥。
二进制日志格式在 master 上设置为 MIXED。
用于备份数据库的命令:
mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2
Run Code Online (Sandbox Code Playgroud)
从站仅从主站(db -> db_backup)复制一个数据库,并使用以下选项:
replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup
Run Code Online (Sandbox Code Playgroud) 我们有一个非常强大的服务器:HP ProLiant DL360p Gen8, 2xIntel Xeon E5-2630 2.30GHz, 128GB of RAM
.
整个数据集应该适合内存:
mysql> SELECT FLOOR(SUM(DATA_LENGTH+INDEX_LENGTH)/POWER(1024,2)) 'Total Size (MB)', FLOOR(SUM(DATA_LENGTH)/POWER(1024,2)) 'Data Size (Data_length in MB)', FLOOR(SUM(INDEX_LENGTH)/POWER(1024,2)) 'Index Size (Index_length in MB)' FROM information_schema.TABLES;
+-----------------+-------------------------------+---------------------------------+
| Total Size (MB) | Data Size (Data_length in MB) | Index Size (Index_length in MB) |
+-----------------+-------------------------------+---------------------------------+
| 110559 | 62464 | 48095 |
+-----------------+-------------------------------+---------------------------------+
1 row in set (1.64 sec)
Run Code Online (Sandbox Code Playgroud)
-innodb_buffer_pool_size
是 100GB
mysql> SELECT (@@innodb_buffer_pool_size / POWER(1024,3)) AS "innodb_buffer_pool_size in GB"; …
Run Code Online (Sandbox Code Playgroud) 标准复制无缘无故中断。
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) MySQL是否使用事务forDROP DATABASE...
语句(所有表都使用InnoDB引擎)?
基本上我想知道如果我DROP DATABASE...
在查询运行时终止查询是否会丢失任何数据?
我已经用表对此进行了测试并且它有效,但我没有足够大的数据库来测试它:
mysql> SELECT COUNT(*) FROM t1;
+----------+
| COUNT(*) |
+----------+
| 10000000 |
+----------+
1 row in set (8.57 sec)
mysql> DELETE FROM t1;
Run Code Online (Sandbox Code Playgroud)
另一个 MySQL 会话:
mysql> SHOW PROCESSLIST;
+-----+------+-----------+------+---------+------+----------+-------------------+-----------+---------------+
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
+-----+------+-----------+------+---------+------+----------+-------------------+-----------+---------------+
| 211 | root | localhost | test | Query | 0 | init | SHOW PROCESSLIST | …
Run Code Online (Sandbox Code Playgroud)