本文共 1992 字,大约阅读时间需要 6 分钟。
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模式”为基础,如果你做如下测试,请先参阅如下链接:
以上slave机器初始化设置同理请参考“mysql replication(主从复制)(一)MS模式”,以下不在详述。
2.2.1、step1
In Relay-Slave
配置server-id,标识服务器。
vim编辑/etc/my.cnf
实验一基础上增加如下参数:
1 2 3 | log-bin log-slave-updates binlog- format =row |
最后必须包含以下参数:
1 2 3 4 5 | [mysqld] server- id =2 log-bin log-slave-updates binlog- format =row |
配置效果:
配置完成后重启服务:
1 | /etc/init .d /mysqld restart |
2.2.2、step2
In Slave
配置server-id,标识服务器。
vim编辑/etc/my.cnf
增加如下参数:
1 | server- id =3 |
配置完成后重启服务:
1 | /etc/init .d /mysqld restart |
2.2.3、step3
本步骤目的是将Relay-Slave的数据导到Slave中
In Relay-Slave
1 2 | mysqldump --all-databases -uroot -p > /var/lib/backup/backup .sql scp /var/lib/backup/backup .sql 10.168.0.105:~/ |
In Slave
导入备份并登陆数据库:
1 2 | mysql -uroot -p < ~ /backup .sql mysql -uroot -p |
数据库检查:
1 | show databases; |
In Relay-Slave
授权本机作为master允许被slave访问:
1 | grant replication slave on *.* to 'repl' @ '10.168.0.105' identified by 'repl' ; |
查看master状态:
1 | show master status\G |
记录下“File”与“Position”的值,下一步要使用。
2.2.4、step4
In Slave
设置连接到master的参数:
1 2 3 4 5 6 | 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身份的相关进程:
1 | mysql> start slave; |
查看状态:
1 | mysql> show slave status\G; |
2.2.5、step5
本步骤完成测试
In Master&Relay-Slave&Slave