Linux MariaDB 主从复制(双主双从、双主多从)

生产环境主从复制的账号和密码不建议和项目用同一个,要单独创建一个用户专门用于主从复制,防止项目改密码的时候,主从复制无法使用!!!
在这里插入图片描述
上面这种模式,也就是双主双从模式。作为主库也作为从库的库,my.cnf文件的[mysqld]的参数必须加log-slave-updates
没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!

A:192.168.1.11
B:192.168.1.22
C:192.168.1.111
D:192.168.1.222

开放数据库端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

Master1(A即是主库也是B的从库)

没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf

[mysqld]
#主数据库
server-id=1
#log-bin相对存放路径和名称
log-bin=mariadb-bin
#不主从复制的库
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#复制模式STATEMENT,ROW,MIXED
binlog_format=MIXED

#从数据库
relay-log=mariadb-relay

#记录从库日志更新(即是主库也是从库必须配)
log-slave-updates

改完配置文件,重启数据库,使配置文件生效。

mysql -u root -p
show master status;

记好File和Position的值,Master2会考的!

+--------------------+----------+--------------+-------------------------------------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB                                |
+--------------------+----------+--------------+-------------------------------------------------+
| mariadb-bin.000001 |     1    |              | mysql,information_schema,performance_schema,sys |
+--------------------+----------+--------------+-------------------------------------------------+

跟B绑定,MASTER_HOST是B的IP,MASTER_USER是B可远程登录的用户名,MASTER_PASSWORD是B可远程登录的用户名的密码,MASTER_LOG_FILE是B输入show master status;打印出来的File的值,MASTER_LOG_POS是B输入show master status;打印出来的Position的值

CHANGE MASTER TO MASTER_HOST='192.168.1.22',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000002',MASTER_LOG_POS=2;

启动主从复制

start slave;

查看主从复制是否成功

SHOW SLAVE STATUS\G;

打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes

Master2(B即是主库也是A的从库)

没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf

[mysqld]
#主数据库
server-id=2
#log-bin相对存放路径和名称
log-bin=mariadb-bin
#不主从复制的库
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#复制模式STATEMENT,ROW,MIXED
binlog_format=MIXED

#从数据库
relay-log=mariadb-relay

#记录从库日志更新(即是主库也是从库必须配)
log-slave-updates

改完配置文件,重启数据库,使配置文件生效。

mysql -u root -p
show master status;

记好File和Position的值,Master1会考的!

+--------------------+----------+--------------+-------------------------------------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB                                |
+--------------------+----------+--------------+-------------------------------------------------+
| mariadb-bin.000002 |     2    |              | mysql,information_schema,performance_schema,sys |
+--------------------+----------+--------------+-------------------------------------------------+

跟A绑定,MASTER_HOST是A的IP,MASTER_USER是A可远程登录的用户名,MASTER_PASSWORD是A可远程登录的用户名的密码,MASTER_LOG_FILE是A输入show master status;打印出来的File的值,MASTER_LOG_POS是A输入show master status;打印出来的Position的值

CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=1;

启动主从复制

start slave;

查看主从复制是否成功

SHOW SLAVE STATUS\G;

打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes

Slave1(C只是A的从库)

/etc/my.cnf

[mysqld]
server-id=3
relay-log=mariadb-relay

改完配置文件,重启数据库,使配置文件生效。

mysql -u root -p

跟A绑定,MASTER_HOST是A的IP,MASTER_USER是A可远程登录的用户名,MASTER_PASSWORD是A可远程登录的用户名的密码,MASTER_LOG_FILE是A输入show master status;打印出来的File的值,MASTER_LOG_POS是A输入show master status;打印出来的Position的值

CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=1;

启动主从复制

start slave;

查看主从复制是否成功

SHOW SLAVE STATUS\G;

打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes

Slave2(D只是B从库)

/etc/my.cnf

[mysqld]
server-id=4
relay-log=mariadb-relay

改完配置文件,重启数据库,使配置文件生效。

mysql -u root -p

跟B绑定,MASTER_HOST是B的IP,MASTER_USER是B可远程登录的用户名,MASTER_PASSWORD是B可远程登录的用户名的密码,MASTER_LOG_FILE是B输入show master status;打印出来的File的值,MASTER_LOG_POS是B输入show master status;打印出来的Position的值

CHANGE MASTER TO MASTER_HOST='192.168.1.22',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000002',MASTER_LOG_POS=2;

启动主从复制

start slave;

查看主从复制是否成功

SHOW SLAVE STATUS\G;

打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes

Slave failed to initialize relay log info structure from the repository

这个错误是因为之前已经有主从复制的数据了,要先清空。
解决方案:

停止所有的主从复制

登录MariaDB

mysql -u root -p

停止主从复制

STOP SLAVE;

清空所有主从复制的内容

reset slave all;

然后重新操作一次!!!快乐吧?快乐就对了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值