数据库集群 - 主从配置

一、集群技术

1、mysql 复制技术

(1) 集群目的

负载均衡 → 解决高并发(数据同时共享)

高可用 HA → 服务可用性(解决服务器性能)

远程灾备 → 数据有效性

(2) 原理

主服务器启动二进制日志文件,数据更改的操作 (DDL、DML、DCL) 都会记录在二进制日志文件 (binlog) 中;

从服务器启动两个线程:I/O 线程和 SQL 线程。I/O 线程会读取主服务器二进制日志文件上的变更操作,记录在自己的中继日志 (Relay log) 中;

从服务器上的 SQL 线程会读取中继日志,并把数据重放到数据库里,实现主服务器和从服务器的数据同步。

(3) 集群准备

准备四台虚拟机(双主双从),分别修改域名,测试连通性,再安装数据库

vim /etc/hosts 添加域名

测试连通性:

二、集群案例 

1、一主一丛

(1) 主服务器配置

① 在主服务器中准备一些数据

② 开启主服务器的二进制日志

vim /etc/my.cnf

配置后重启数据库,再进入数据库查看二进制日志是否开启

③ 创建复制用户(让从服务器以此身份与主服务器同步)

grant replication slave,replication client on *.* to 'bean'@'192.168.198.%' ;

( 如果主服务数据库有设置命令,这条命令还得跟上 identified by '密码')

这条命令是将 "replication slave" 和 "replication client" 权限授予用户名为 'bean',且IP地址符合 '192.168.198.%' 这个模式的用户。这个用户可以连接到MySQL服务器作为从属服务器,获取复制数据和状态信息。

④ 备份主服务器数据库的数据

mysqldump --all-databases --single-transaction --master-data=2 --flush-logs > /backup/`date +%F`-mysql-all.sql

将备份的数据拷到 master2 的目录下:

scp -r /backup/2023-08-21-mysql-all.sql master2:/tmp

观察二进制日志分割点:

备份后主服务器再增添新数据,这些新数据不会存在在备份文件中:

(2) 从服务器配置

① 测试复制用户是否可用

mysql -h master1 -ubean:-h master1 表示登录点为 matser1

② 启动服务器序号

vim /etc/my.cnf

server-id=2

添加完序号后重启数据库,并登录查看数据库能否正常启动

③ 手动同步数据

set sql_log_bin=0; (暂停记录二进制日志)

source /tmp/2023-08-21-mysql-all.sql(主服务器上的数据拷贝进从服务器)

查看数据:

④ 设置主服务器进行同步更新

查看之前的备份文件可以知道二进制日志文件及截断点:

为从服务器设置主服务器:

change master to master_host='master1',master_user='bean',master_log_file='bin-log.000003',master_log_pos=245;

启动从设备:start slave;

返回主服务器(master1)更新数据,观察从服务器(master2)是否同步:

2、双主双从

1、双主设置

若只进行主服务器单节点设置,主服务器故障会影响全局的事件写入。

设置方法:两台 master 互相设置为对方的主服务器。

2、双从设置

① 同步现有数据库:

主服务器:

备份 master1 的数据库给 slave1:

mysqldump  --all-databases  --single-transaction  --master-data=2  --flush-logs  >  /backup/`date +%F-%H`-mysql-all.sql

将备份传给从服务器 slave1:

scp  -r  /backup/2023-08-23-15-mysql-all.sql  slave1:/tmp

从服务器:

数据库写入备份文件

mysql  <  /tmp/2023-08-23-15-mysql-all.sql

开启从服务器的 id,并重启数据库:

slave1:server-id=3

② 为从服务器设置主服务器:

change  master  to  master_host='master1',master_user='bean',master_log_file='bin-log.000017',master_log_pos=245;

开启从服务器模式:start slave;

查看从属状态:

slave2 的配置也同理。配置完毕后可以在数据库添加数据查看是否同步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值