Windows 在MariaDB数据库中 进行一主一从、多主一从数据同步配置(亲测有效)

解决的问题场景:将各个数据库的表整合到一个地方进行统计和分析。要是每次连接不同的数据库实例操作,非常耗力。

MySQL一般只支持一主一从复制数据。虽然也可以做到,但是mysql的局限性很大。

 

一、准备前工作

多主一从:将主站的数据同步到从站中。即:将201主库的数据同步到509从库中。

Mariadb数据同步
 

二、201(主库master:192.168.140.52)

1、在201主库中添加my.ini下的[mysqld]下添加:

#开启binlog功能
log-bin=binlog         
log-bin-index=binlog.index
sync_binlog=0
server_id=201    #按照电站名称命名
bind-address=0.0.0.0 #拒绝访问引起的
binlog-do-db=test #同步的数据库

注解:

server-id:不能重复。

binlog-do-db:设置要同步的数据库

bind-address=0.0.0.0 :可选;我是因为出现了以下错误才加上的

        error:Mysql "Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

             

注:修改了my.ini必须重启服务 。my.ini很容易引起数据库服务起不起来

2、创建用户,并给用户授权仅该IP地址即509可以复制数据

create user repl;
grant replication slave on *.* to 'repl'@'192.168.140.65' identified by 'ty123456';
flush privileges;
show master status;

注解:

新建用户的原因:生产环境中是不建议使用的,必须自己重新创建一个新用户进行登录,

replication slave:复制权限。其他权限有:create\update\delete\drop...等

%表示允许所有的IP访问,可以自己设置只允许哪些IP访问,如把%替换为192.168.140.65表示只允许这个IP访问

*.*:表示这个权限是针对所有库的所有表。test.*:表示test数据的所有表

192.168.140.65:表示只允许这个IP访问,即slaves的IP地址;%表示允许所有的IP访问。。理解:主库需要赋予从库权限复制数据的权限。

show master status: 来获取二进制日志的当前位置信息.。只要对数据库有操作。他的position就会改变。对my.ini操作。他的File就会变化。

记下 File 以及 Position 信息. 如果刚刚才开启了二进制日志功能,则为空.
然后,开始从master 拷贝 data 到 slave,请参考: Backup, Restore and Import将数据从master拷贝到slave以后,可以执行"UNLOCK TABLES;"释放master上的锁。

三、509(从库slaves:192.168.140.65)

1、在509电站的my.ini下的[mysqld]下添加以下代码激活二进制日志.:(不能添加到[client]下面。讲究顺序)

#开启binlog功能
log-bin=binlog         
log-bin-index=binlog.index
sync_binlog=0
server_id=509 #不能重复
bind-address=0.0.0.0 #
binlog-do-db=test

注解:同上

2、数据导入后,开始启动复制功能了。

change master 'r1' to 
master_host='192.168.140.52', 
master_port=3306,
master_user='repl',
master_password='ty123456',
master_log_file='binlog.000004',
master_log_pos=530;
start SLAVE 'r1';  

stop slave 'r1';#重新更新change master 需要停止复制
show all slaves status;#显示所有状态,看看有没有错误信息  没有就成功了

注解:

‘r1’:每一个通道的唯一标识

master_host:从哪个数据库开始复制数据的IP地址,即:主库的IP地址

master_user:连接数据库的用户名,即登录主库的用户名

master_password:连接数据库的密码,登录主库的密码

master_log_file、master_log_pos:从主库哪个BINLOG文件开始读取,偏移量是多少。值是通过show master status 获取的。

 

四、前面二、三步骤配置的是一主一从。那么要配置多主一从还需要做什么呢?

修改必须要改的参数值代码,执行步骤二和步骤三的第2点。

eg:新增一个主库101

1、(在101my.ini添加)需要修改server_id

#开启binlog功能
log-bin=binlog         
log-bin-index=binlog.index
sync_binlog=0
server_id=101    #按照电站名称命名
bind-address=0.0.0.0 #拒绝访问引起的
binlog-do-db=test #同步的数据库

2、(101数据库执行)不变。需要记住show master status 的参数值。方便下面的步骤3

create user repl;
grant replication slave on *.* to 'repl'@'192.168.140.65' identified by 'ty123456';
flush privileges;
show master status;

3、(在509数据库执行)需要修改唯一通道标识符、master_host、根据上面步骤2查询出来的值修改master_log_file和master_log_pos

change master 'r2' to 
master_host='192.168.140.101', 
master_port=3306,
master_user='repl',
master_password='ty123456',
master_log_file='binlog.000002',
master_log_pos=2140;
start SLAVE 'r2';  

stop slave 'r2';#重新更新change master 需要停止复制
show all slaves status;#显示所有状态,看看有没有错误信息  没有就成功了


需要注意,有一些系统配置选项可能会影响主从复制,查看下面的变量以避免发生问题:

skip-networking,如果 "skip-networking=1",则服务器将限制只能由localhost连接,阻止其他机器远程连到此服务器上。
bind_address,类似地,如果 服务器只监听 127.0.0.1(localhost)的TCP/IP连接,则远程的 slave也不能连接到此服务器.

 

测试:201添加了数据  看看509是否更新
通过 show all slaves status 命令可知是否同步成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值