一、一主一从

用两台设备实现,现都是数据库初始状态,开始设置一主一从
1、配置主节点
(1)修改配置文件启用,必要设置:log_bin和server_id=1,设置好后重启
此时二进制日志pos点是
(2)建立有复制权限的用户账号
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.239.%' IDENTIFIED BY 'admini';
(3)添加一个数据库,再看二进制日志的pos点
(4)关闭防火墙
2、配置从节点
(1)必要设置:server_id=2,如果只做从服务器配置不用写log_bin
(2)重启服务,并关闭防火墙
(3)在从节点上启动复制线程
输入一段代码,这段只要记住会运用help change命令就行
第一次输入后
再次输入help CHANGE MASTER TO,可以看到
将这段进行复制修改
CHANGE MASTER TO
MASTER_HOST='192.168.239.70',
MASTER_USER='repluser',
MASTER_PASSWORD='admini',
MASTER_PORT=3306,
MASTER_LOG_FILE='c7ts-bin.000001',
MASTER_LOG_POS=327;
(3)完成后start slave,可以用show slave status\G查看状态
3、测试
二、级联复制
如果级联复制服务器数据库内容同步差很多,建议主服务器备份后,以还原方法给从服务器还原
主服务器操作:
mysqldump -A -F --single-transaction --master-data=1 | gzip > db.sql.gz
show master logs
mysqlbinlog BINLOG --start-position=POSNUM > incr.sql
scp db.sq.gz IP:/DIR
scp incr.sql IP:/DIR
(此时为了数据同步可以考虑加读锁,直到还原完成)
从服务器操作
gzip -d db.sq.gz
mysql
set sql_log_bin=off
source db.sql
source incr.sql
set sql_log_bin=on
从服务器数据还原完成,解除主服务器读锁
1、主服务器配置
不变,和上个实验一样
看下自己的二进制日志,show master logs
创建复制用户账号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'
关闭防火墙
2、配置中间的从服务器,级联关键服务器配置
关闭防火墙,然后进入数据库后和主服务器建立主从连接,输入指令help change master to
复制修改
MASTER_LOG_POS=460;
3、show slave status\G检查输入信息是否正确
如果正常,start slave开始连接,连接之后show slave status\G
测试,主服务器加载了个数据库,从服务器也看到了
此时查看二进制日志文件
4、配置末尾的从服务器
这里也是如果数据相差太多,还是建议用还原方法和前面的服务器同步
关闭防火墙重启数据库服务,进入数据库
MASTER_HOST='192.168.239.71',
MASTER_LOG_FILE='centos7-1-bin.000001',
MASTER_LOG_POS=9083;
5、老规矩,确认从服务器连接信息
确认后start slave;再次查看slave状态
6、测试,成功
三、半同步复制
半同步复制实现:一主多从,如果至少一个从服务器同步成功,主服务器将会向客户端返回成功信息;或者所有从服务器长时间没有同步,超过了限定时长,主服务器也将会向客户端返回成功信息
1、搭建主从服务器:
主:
从:
之后重启,进行主从配置
主服务器建立复制账号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'
从服务器配置
MASTER_HOST='192.168.239.200',
MASTER_LOG_FILE='master-bin.000001',
MASTER_LOG_POS=533;
测通后进入下一步
2、进一步配置
主服务器,进入mysql,show plugins检查是否有semisync_master.so插件,没有话安装
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled=1;,写入文件时永久保存
SHOW GLOBAL VARIABLES LIKE '%semi%';
SHOW GLOBAL STATUS LIKE '%semi%';
从服务器,配置
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled=1;
输入后还需要stop slave; start slave;
3、验证半同步
验证方法:主服务器执行指令前或者执行时,半同步服务器down掉,等主服务器返回后再上线半同步服务器,看数据是否写入半同步
此时发现10秒返回了成功信息(这10秒的设置可以自己设置为3秒),此时再上线从服务器看数据是否同步
成功
4、此时我们加入复制过滤,因为复制过滤时不建议在主服务器添加选项,因此我们在从服务器上开始设置
我们实验有两台从服务器,此时从服务器一台设置数据库黑名单,一台设置表黑名单
现在开始测试过滤,注意use切换到库中执行命令
主服务器输入语句
测试结果
后期如果有时间,将会补上SSL实验和Cluster实验