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;