克隆linux服务器数据库,Linux环境下实现Mariadb数据库服务器主从复制

一、一主一从

8b9b33e31344e62c9cfe544a82a5d33a.png

用两台设备实现,现都是数据库初始状态,开始设置一主一从

1、配置主节点

(1)修改配置文件启用,必要设置:log_bin和server_id=1,设置好后重启

1e96cdaaf45b3ebd504381e174dc626f.png

此时二进制日志pos点是

a5e95cf3717bf23dbd6fffaeb5303b9a.png

(2)建立有复制权限的用户账号

GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.239.%' IDENTIFIED BY 'admini';

887d771bbfb79338259a306ba0fb2df7.png

(3)添加一个数据库,再看二进制日志的pos点

d8ea97517c9d744b4ed264aad9886226.png

(4)关闭防火墙

2、配置从节点

(1)必要设置:server_id=2,如果只做从服务器配置不用写log_bin

7d7d3f210af8c2415d28da87fe5de10a.png

(2)重启服务,并关闭防火墙

(3)在从节点上启动复制线程

输入一段代码,这段只要记住会运用help change命令就行

第一次输入后

9217bbf75e53bfb3003ff4bf2f981818.png

再次输入help CHANGE MASTER TO,可以看到

b65fac1158b265814d7edf9ec22d04e3.png

将这段进行复制修改

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;

fbefc15bed82b9432b6688e6f44c6272.png

(3)完成后start slave,可以用show slave status\G查看状态

2e63fbfcc735b9100f853feb5f442030.png

3、测试

fb471af880d6f25a999ff9612e999c4a.png

二、级联复制

3add5f6e4e8313766f3a114e3026229b.png

如果级联复制服务器数据库内容同步差很多,建议主服务器备份后,以还原方法给从服务器还原

主服务器操作:

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、主服务器配置

不变,和上个实验一样

df3c749ba02eea236dc917e5e9fea9d0.png

看下自己的二进制日志,show master logs

3ff3bbfe53ad5c53dce18c9a70e24199.png

创建复制用户账号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

ab51506b0f37896dd298b954b7d7872a.png

关闭防火墙

2、配置中间的从服务器,级联关键服务器配置

23f8e5868b93fbd18e7918375926f1b2.png

关闭防火墙,然后进入数据库后和主服务器建立主从连接,输入指令help change master to

e8e0a4701b7b0f6215f4357ce2a66b7c.png

复制修改

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=460;

3、show slave status\G检查输入信息是否正确

afb00981cb2734d95ba1d31be74222b9.png

如果正常,start slave开始连接,连接之后show slave status\G

86cd31b36f662c1713b74b9dfa650a47.png

测试,主服务器加载了个数据库,从服务器也看到了

a1b82aef54a4df1ae0b6a30c72196a53.png

此时查看二进制日志文件

b0243006b805246782da030710ec5d09.png

4、配置末尾的从服务器

这里也是如果数据相差太多,还是建议用还原方法和前面的服务器同步

cf267d9a68e6d719a15eee969c5830c2.png

关闭防火墙重启数据库服务,进入数据库

CHANGE MASTER TO

MASTER_HOST='192.168.239.71',

MASTER_USER='repluser',

MASTER_PASSWORD='admini',

MASTER_PORT=3306,

MASTER_LOG_FILE='centos7-1-bin.000001',

MASTER_LOG_POS=9083;

91faa354449e69f92ced35806b1026e5.png

5、老规矩,确认从服务器连接信息

98463d0c4b49bc0d1238c39d09696132.png

确认后start slave;再次查看slave状态

2fe939481082e343f57748e71ec38de8.png

6、测试,成功

8c0de461a08eae42856a880ec3f26644.png

三、半同步复制

半同步复制实现:一主多从,如果至少一个从服务器同步成功,主服务器将会向客户端返回成功信息;或者所有从服务器长时间没有同步,超过了限定时长,主服务器也将会向客户端返回成功信息

1、搭建主从服务器:

主:

873efb3c35759f9960142712b062a874.png

从:

0b29ab6b487beef36b2e3227970f80c6.png

之后重启,进行主从配置

主服务器建立复制账号,grant replication slave on *.* to 'repluser'@'192.168.239.%' identified by 'admini'

dee6883ea1f94662846babd999aa4972.png

从服务器配置

CHANGE MASTER TO

MASTER_HOST='192.168.239.200',

MASTER_USER='repluser',

MASTER_PASSWORD='admini',

MASTER_PORT=3306,

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%';

06446c3823ed17de8beafb3e8fc8683d.png

从服务器,配置

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

SET GLOBAL rpl_semi_sync_slave_enabled=1;

输入后还需要stop slave; start slave;

5ff0e83e871916b80bea4badecedec04.png

3、验证半同步

验证方法:主服务器执行指令前或者执行时,半同步服务器down掉,等主服务器返回后再上线半同步服务器,看数据是否写入半同步

14e169058479ac01ccf2a1da96f5a593.png

此时发现10秒返回了成功信息(这10秒的设置可以自己设置为3秒),此时再上线从服务器看数据是否同步

7feb024a1ef88f6400bffe8e31bc2d93.png

成功

4、此时我们加入复制过滤,因为复制过滤时不建议在主服务器添加选项,因此我们在从服务器上开始设置

我们实验有两台从服务器,此时从服务器一台设置数据库黑名单,一台设置表黑名单

2cfa7e30adb0acebfd01b86e8150495d.png

现在开始测试过滤,注意use切换到库中执行命令

主服务器输入语句

dbcf0dbf525e6815455bd4d636636867.png

测试结果

4ae3f3d53c3fffb7ef7733e8c8a895b2.png

后期如果有时间,将会补上SSL实验和Cluster实验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值