MySQL集群配置

2022/4/29 19:13:31

本文主要是介绍MySQL集群配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

集群概述

MySQL复制技术

集群目的:

负载均衡:解决高并发

高可用HA:服务可用性

远程灾备:数据有效性

 

1.在主库上把数据更改记录到二进制日志中。

2.备库I/O线程将主库上的二进制日志复制到备库的中继日志中。

3.备库SQL线程读取中继日志中的事件,将其重放到备库数据库上。

 

集群案例

 

环境:1.全新服务器-互相通信

2.全新安装mysql57-分别安装

3.配置域名解析

注意:请重新安装多台数据库,不要克隆已经安装的数据,因为数据库的ID相同;关闭防火墙和selinux

 

master1:192.168.137.4

master2:192.168.137.5

slaves1: 192.168.137.6

slaves2: 192.168.137.7

 

一主一从(M-S)(1)

主(master1):

部署一台新的mysql服务器,准备好域名解析(修改host文件或者使用DNS服务器)

准备一些数据(用来验证主从同步使用)

create database master1db;
create table master1tab(name char(50));
insert into master1tab values("houzhengrong");
insert into master1tab values("gaoyuchuan");

开启二进制日志

vim /etc/my.cnf
log_bin
server-id=1

systemctl restart mysqld       //重启生效

创建复制用户(不能使用root用户来搞,给用户授权)

grant replication slave,replication client on *.* to 'rep'@'192.168.137.%' identified by 'Rep@5201314';

备份master数据库的数据

 mysqldump -uroot -p'Hzr@5201314' --all-databases --single-transaction  --master-data=2 --flush-logs  > /backup/`date +%F-%H`mysql-all.sql
 scp -r /backup/2021-11-21-16mysql-all.sql  master2:/backup     //发送给另一台主机
 观察二进制日志分割点(2021-11-21-16mysql-all.sql 这个文件第22行)
  -- CHANGE MASTER TO MASTER_LOG_FILE='houzhengrong-bin.000002', MASTER_LOG_POS=154;

准备数据2(验证主从同步使用)

insert into master1db.master1tab values("rongrong");
insert into master1db.master1tab values("chuanchuan");

从(master2):

测试rep用户是否可用

部署数据库应用
mysql -h master1 -urep -p'Rep@5201314'

启动服务器序号

vim /etc/my.cnf
server-id=2

systemctl restart mysqld
mysql -uroot -p'Hzr@5201314'  

手动同步数据

set sql_log_bin=0;
source /backup/2021-11-21-16mysql-all.sql

设置主服务器

change master to master_host='master1',master_user='rep',master_password='Rep@5201314',master_log_file='houzhengrong-bin.000002',master_log_pos=154;

启动从设备

start slave;

查看启动状态

show slave status\G

返回主服务器添加数据,测试从服务器是否同步

 

一主一从(M-S)(2)

与第一种方法的不同之处在于使用了“gtid_mode=ON enforce_gtid_consistency=1”,该属性自动记录position位置,不需要手动指定

环境只需要把master2服务器重置一下

systemctl stop mysqld
rm -rf /var/lib/mysql/*
systemctl restart mysqld
grep password /var/log/mysqld.log
mysqladmin -uroot -p'查找的密码' password ''

主(master1):

1.启动二进制日志,服务器ID,GTID

vim /etc/my.cnf
log_bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1

systemctl restart mysqld

2.授权复制用户rep

grant replication slave,replication client on *.* to 'rep'@'192.168.137.%' identified by 'Rep@5201314';
flush privileges;

3.备份数据

 mysqldump -uroot -p'Hzr@5201314' --all-databases --single-transaction  --master-data=2 --flush-logs  > /backup/`date +%F-%H`mysql-all.sql
 scp -r /backup/2021-11-23-20mysql-all.sql  master2:/backup     //发送给另一台主机

4.模拟数据变化

insert into master1db.master1tab values("chuanchuan");

从(master2):

1.测试rep用户是否可用

mysql -urep -p'Rep@5201314' -h master1

2.启动二进制日志,服务器ID,GTID

vim /etc/my.cnf
log_bin
server-id=2
gtid_mode=ON
enforce_gtid_consistency=1

systemctl restart mysqld

3.手动恢复同步数据

set sql_log_bin=0;
source /backup/2021-11-23-20mysql-all.sql
 select * from master1db.master1tab;

4.设置主服务器

change master to master_host='master1',master_user='rep',master_password='Rep@5201314',master_auto_position=1;

5.启动从设备

start slave;

 



这篇关于MySQL集群配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程