您的位置:首页 > 数据库 > MariaDB

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

2018-10-23 15:14 1121 查看

一、一主一从

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

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

< b60 p>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

复制修改

CHANGE MASTER TO

  MASTER_HOST='192.168.239.70',

  MASTER_USER='repluser',

  MASTER_PASSWORD='admini',

< 2d98 p>  MASTER_PORT=3306,

  MASTER_LOG_FILE='c7ts-bin.000001',

  MASTER_LOG_POS=460;

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

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

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

此时查看二进制日志文件

4、配置末尾的从服务器

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

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

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;

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

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

6、测试,成功

三、半同步复制

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

1、搭建主从服务器:

主:

从:

之后重启,进行主从配置

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

从服务器配置

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

从服务器,配置

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实验

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息