您的位置:首页 > 数据库 > MySQL

mysql 复制

2016-06-21 15:39 627 查看
主从可以做成 同一个共享磁盘,但是会出现共享磁盘挂掉,整个数据库就挂了
也可以做成 drbd 数据复制,自动恢复,防止脑裂

提升 slave :
1.每个可提升的 slave 必须有一个复制用户账户
2.每个可提升的 slave 运行时必须使用 log-bin 选项,即启动二进制日志
3.每个可提升的 slave 运行时必须不使用 log-slave-updates 选项

横向扩展 =》 多个 slave
其中有一个级联复制,也就是需要配置一个中级服务器(称为 relay 服务器)
如果配置一个 relay 服务器:
1.将 slave 配置成发送任何 slave 线程执行的事件,并将这些事件写入 relay 的 binlog
2.将 relay 上所有表的存储引擎都改成 BLACKHOLE 存储引擎,保留空间并提高性能
3.保证 relay 上的所有新表都使用 BLACKHOLE 引擎

首先,配置 relay 发送 slave 线程事件,向 my.cnf 中添加 log-slave-updates 选项
其次,向 my.cnf 中添加 default-storage-engine 更改默认的存储引擎

relay> show tables from windy;
relay> set SQL_LOG_BIN = 0;   关闭 binlog 日志,防止 alter table 写入日志
relay> alter table user_data engine = 'BLACKHOLE';
relay> set SQL_LOG_BIN = 1;   开启 binlog 日志

至此 relay 配置完成,通常都是 master-slave 架构,但是通过一段时间的使用 ,master 的负载增高,或者 架构需要,就得添加 relay 服务器,将 relay 服务器 连接到 master ,然后将 slave 依次切换到 relay

过滤复制事件:
master 过滤:binlog-do-db  / binlog-ignore-db
slave 过滤:replicate-do-db = db / replicate-ignore-db = db / replicate-do-table = db_name.tbl_name / replicate-wild-do-table = db_pattern.tbl_pattern / replicate-ignore-table = db_name.tbl_name / replicate-wild-ignore-table = db_pattern.tbl_pattern
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: