1、理论部分
1.1、One Master-Muti Slave
工作原理:
一台到多台Slave
缺陷:
I/O压力集中在Master上
1.2、M-S-S
工作原理:
1)使用一台Slave作为中继,分担Master的压力。
2)中继SLave上需要开启二级制日志,并配置log-slave-updates。
1.3、M-M
工作原理:
相互负载均衡
缺点:
破坏了事物的隔离性何数据一致性(不建议使用)
1.4、M-M-M
工作原理:
通过Monitor监控其他三台机器运行
DML发送到其中一台机器,其他三台循环同步
缺点:
1)传递多级别延迟问题。
2)monitor维护增加复杂度。
1.5、One Slave-Muti Master
工作原理:
优点:
1)数据自动化整合
2)节省成本
缺点:
1)对库和表修改比较多
2)对运行过M-S来说风险比较高
2、实验部分
2.1、实验环境
mysql主服务器(master):
ipaddress=10.168.0.103
hostname=sql-m
mysql中继从服务器(relay-slave):
ipaddress=10.168.0.104
hostname=sql-s
mysql从服务器(slave):
ipaddress=10.168.0.105
hostname=sql-s-s
2.2、实验步骤
以下实验以“mysql replication(主从复制)(一)MS模式”为基础,如果你做如下测试,请先参阅如下链接:
http://cmdschool.blog.51cto.com/2420395/1696474
以上slave机器初始化设置同理请参考“mysql replication(主从复制)(一)MS模式”,以下不在详述。
2.2.1、step1
In Relay-Slave
配置server-id,标识服务器。
vim编辑/etc/my.cnf
实验一基础上增加如下参数:
log-bin log-slave-updates binlog-format=row
最后必须包含以下参数:
[mysqld] server-id=2 log-bin log-slave-updates binlog-format=row
配置效果:
配置完成后重启服务:
/etc/init.d/mysqld restart
2.2.2、step2
In Slave
配置server-id,标识服务器。
vim编辑/etc/my.cnf
增加如下参数:
server-id=3
配置完成后重启服务:
/etc/init.d/mysqld restart
2.2.3、step3
本步骤目的是将Relay-Slave的数据导到Slave中
In Relay-Slave
mysqldump --all-databases -uroot -p > /var/lib/backup/backup.sql scp /var/lib/backup/backup.sql 10.168.0.105:~/
In Slave
导入备份并登陆数据库:
mysql -uroot -p < ~/backup.sql mysql -uroot -p
数据库检查:
show databases;
In Relay-Slave
授权本机作为master允许被slave访问:
grant replication slave on *.* to 'repl'@'10.168.0.105' identified by 'repl';
查看master状态:
show master status\G
记录下“File”与“Position”的值,下一步要使用。
2.2.4、step4
In Slave
设置连接到master的参数:
mysql> change master to -> master_host='10.168.0.104', -> master_user='repl', -> master_password='repl', -> master_log_file='mysqld-bin.000002', -> master_log_pos=106;
启动作为slave身份的相关进程:
mysql> start slave;
查看状态:
mysql> show slave status\G;
2.2.5、step5
本步骤完成测试
In Master&Relay-Slave&Slave