天天看点

MariaDB主从配置/容灾配置

准备

主数据库服务器:192.168.5.14

从数据库服务器:192.168.5.18,192.158.5.19,...(这里可以是多台,为了方便演示我就只选一台)

所有数据库服务器均安装了统一版本的MariaDB,并且主数据库到每台从数据库的网络是通的,防火墙也开放了3306端口(如果不会开放防火墙就先把防火墙关了,后期把规则加回去即可)

主数据库服务器与从数据库服务器的MariaDB数据库版本最好一致,其实不一致的情况下之前也测试过是可以成功的(小版本),但为了方便整个项目架构的版本管理最好是一致的

开始

修改主数据库服务器的数据库配置文件

vi /etc/my.cnf
           

加入下列两条规则

server-id=1 #设置一个服务id,一般来说用1代表主,用2、3、4...代表从
log-bin=master-bin #开启二进制文件功能
           
MariaDB主从配置/容灾配置

保存,退出。然后进入主数据库服务器的mysql命令行,创建slave用户(这一步用数据库管理员账户登录就行,我这边用的是root)

MariaDB主从配置/容灾配置

给从服务器192.168.5.18授权一个用户slave1,密码设置成123456

grant replication slave on *.* to 'slave1'@'192.168.5.18' identified by '123456';
           
MariaDB主从配置/容灾配置

设置完成后重启主数据库服务器上的MariaDB

systemctl restart mariadb
           

进入主数据库服务器mysql命令行,执行

show variables like "%log_bin";

检查二进制日志功能是否打开

MariaDB主从配置/容灾配置

再执行

show master status;

查看主数据库服务器状态

MariaDB主从配置/容灾配置

记录好File和Position这两个值,每个人应该都是不同的。这两个值待会在从数据库服务器上配置时一定会用到,并且每次重启都会改变,所以这两个值不是一成不变的

主数据库服务器这边的配置就已经完成了,接下来就要切换到从数据库服务器操作

修改从数据库服务器的mysql配置文件

vi /etc/my.cnf
           

加入一条id,由于这里是从数据库服务器,所以id给2,如果还有另一台从数据库服务器就用3,反正就是id不能重复,必须是唯一的

server-id=2 #设置一个服务id,一般来说用1代表主,用2、3、4...代表从
           
MariaDB主从配置/容灾配置

保存退出,重启MariaDB

systemctl restart mariadb
           

进入从数据库服务器mysql命令行,配置主数据库地址、用户名、密码、二进制文件及pos点

change master to
master_host='192.168.5.14',
master_user='slave1',
master_password='123456',
master_log_file='master-bin.000002', #这里就是上面说到要记录的
master_log_pos=345;
           
MariaDB主从配置/容灾配置

执行成功后,执行

slave start;

启动slave进程

MariaDB主从配置/容灾配置

执行

show slave status\G

查看从服务器状态

MariaDB主从配置/容灾配置

这两个值如果是Yes说明主从配置成功,如果是connecting就说明有问题,需要仔细检查

现在可以尝试一下主从是否有效:

在主数据库服务器上建一个名为hello的库

create database hello charset utf8;
           
MariaDB主从配置/容灾配置
MariaDB主从配置/容灾配置

可以看到主数据库服务器上是有hello这个库的,现在我们切换到从数据库服务器show一下所有的database

MariaDB主从配置/容灾配置

可以看到从数据库服务器上也同步了一个hello库

继续阅读