14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制:

14.19 InnoDB and MySQL Replication  InnoDB 和MySQL 复制:

MySQL 复制工作对于InnoDB 表和对于MyISAM表。


它是可能使用复制的方式 存储引擎在slave上和在master上的原始引擎是不一样的。


比如,你可以复制在master上的InnoDB表的修改到slave的MyISAM table on the slave.



设置一个新的slave对于master, 做一份InnoDB表空间和log files的拷贝,


以及InnoDB 表的.frm文件, 移动到slave.

如果 innodb_file_per_table 选项是启用的, 也复制.ibd文件。


做一个新的slave 在不关闭master或者基于一个存在的slave,


使用 MySQL Enterprise Backup product.




如果你能关闭master 或者一个存在的slave, 做一个InnoDB tablespaces和log files的冷备份


使用那个来设置一个slave.


事务如果在master上失败 根本不会影响复制。


MySQL 复制是基于Binary log ,MySQL 写SQL语句(修改数据)



如果一个事务失败(比如,外键约束或者回滚)时不会写到binary log,


因此不会发送到slave.


复制和级联,Cascading 操作对于InnoDB 表在master 是复制到slave只有当表共享外键关系

使用InnoDB 在master和slave上。


这是对的当你使用基于语句或者基于行的复制。


假设你已经启动复制,那么创建2个表在master使用下面的SQL语句:

CREATE TABLE fc1 (
    i INT PRIMARY KEY,
    j INT
) ENGINE = InnoDB;

CREATE TABLE fc2 (
    m INT PRIMARY KEY,
    n INT,
    FOREIGN KEY ni (n) REFERENCES fc1 (i)
        ON DELETE CASCADE
) ENGINE = InnoDB;




假设slave不支持InnoDB,如果这样的话, 那么表在slave上也会创建,

但是使用MyISAM 存储引擎,然后FOREIGN KEY被忽略。

现在我们插入一些记录到master的表上


master> INSERT INTO fc1 VALUES (1, 1), (2, 2);
Query OK, 2 rows affected (0.09 sec)
Records: 2  Duplicates: 0  Warnings: 0

master> INSERT INTO fc2 VALUES (1, 1), (2, 2), (3, 1);
Query OK, 3 rows affected (0.19 sec)
Records: 3  Duplicates: 0  Warnings: 0


在这点上,master和slave 表fc1都包含2条记录,表fc2包含3条记录:

master> SELECT * FROM fc1;
+---+------+
| i | j    |
+---+------+
| 1 |    1 |
| 2 |    2 |
+---+------+
2 rows in set (0.00 sec)

master> SELECT * FROM fc2;
+---+------+
| m | n    |
+---+------+
| 1 |    1 |
| 2 |    2 |
| 3 |    1 |
+---+------+
3 rows in set (0.00 sec)

slave> SELECT * FROM fc1;
+---+------+
| i | j    |
+---+------+
| 1 |    1 |
| 2 |    2 |
+---+------+
2 rows in set (0.00 sec)

slave> SELECT * FROM fc2;
+---+------+
| m | n    |
+---+------+
| 1 |    1 |
| 2 |    2 |
| 3 |    1 |
+---+------+
3 rows in set (0.00 sec)

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199666.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值