REPLICATION的原理
简单的说就是master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据操作
DML:SQL操作语句,update, insert,delete
Relay log :中继日志
部署Mysql主从复制 (M-S-S模型)
1.三台主机修改主机名
hostnamectl set-hostname 主机名
bash
2.在master上授用户,创建库和表
进入mysql,输入以下命令
grant replication slave on . to repl@‘192.168.100.%’ identified by ‘123456’;
create database ml;
use ml;
create table asd(id int,name varchar(20));
3.修改配置文件,重启mysql
vim /etc/my.cnf
server-id=1
binlog-do-db=HA
log-bin=mysql-bin-master
binlog-ignore-db=mysql
sync-binlog=1
binlog-format=row
systemctl restart mysqld ##重启
4,导出库完整备份,复制到中继和slave上
mysqldump -uroot -B ml>ml.sql
scp ml.sql 192.168.100.20:/root
scp ml.sql 192.168.100.30:/root
5,换到中继服务器上,导入数据库ml.sql,在修改配置文件重启mysql
mysql -uroot < ml.sql
vim /etc/my.cnf
添加以下
server-id=2
log-slave-updates=1
log-bin=mysql-bin-slave1
Systemctl restart mysqld #重启
6.授权,查看状态
Mysql
Stop slave;
change master to master_host=‘192.168.100.10’,master_user=‘repl’,master_password=‘123456’;
Start slave;
show slave status \G #查看状态,结果是两个yes才是对
7.在中继再授权一个用户给slave2
grant replication slave on . to ‘repl’@‘192.168.100.%’ identified by ‘123456’;
8.在slave2上配置
mysql -uroot < ml.sql 导入数据库
vim /etc/my.cnf 修改配置文添加以下
server-id = 3
log-bin=mysql-bin-slave2
binlog-format=row
Systemctl restart mysqld #重启mysql
9.指定中继服务作为slave2的主
Mysql #进入mysql
Stop slave;
change master to master_host=‘192.168.100.20’,master_user=‘repl’,master_password=‘123456’;
Start slave;
Show slave status\G #查看状态
10,测试,在主上插入数据,在中继和slave2上查看
到这里实验就结束了,做的不好请谅解,如果有问题请小伙伴们留言鸭~