数据库代理服务和集群管理

集群技术

数据库集群环境配置

  1. 准备5个全新未安装MySQL且能互相通信的服务器,mater1,master2,salve1,salve2,mycat
  2. 分别z在master1\master2\slave1\slave2服务器傻瓜安装mysql,参考[https://www.cnblogs.com/xiaodunan/p/18239367]
  3. 配置域名解析
vim /etc/hosts


把hosts文件拷贝到其它的服务器

scp /etc/hosts IP:/etc/

案例1:一主一从(M-S)

数据库集群.mysql主服务器配置

  1. 主(master1)
    (1)部署一台新mysql服务器,准备好域名解析
    (2)准备数据1(验证主从同步使用)
create database master1db;
create table master1db.master1tab(name char(50));
desc master1db.master1tab;
insert into master1db.master1tab values (111111);
insert into master1db.master1tab values (222222);
select * from master1db.master1tab;

(3)开启二进制日志

  • 配置文件
vim /etc/my.cnf
log_bin
server-id=1
  • 重启mysql
systemctl restart mysqld

(4)创建复制用户,用于从服务器访问使用

create user 'rep'@'10.18.41.%' identified by '密码';
grant replication slave,replication client on *.* to 'rep'@'10.18.41.%';

(5)备份master数据库的数据

mysqldump -uroot -p'密码' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F`-mysql-all.sql

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

insert into master1db.master1tab values(33333);
insert into master1db.master1tab values(44444);
select * from master1db.master1tab;

数据库集群.mysql从服务器配置

  1. 从(master2)
    (1)测试rep用户是否可用
mysql -h master1 -urep -p'密码';

(2)启动服务器序号

  • 配置文件
vim /etc/my.cnf
server-id=2
  • 重启mysql
  • 测试rep用户是否可用
    (3)手动同步数据
  • 在主服务器master1把备份文件复制到从服务器master2
scp 2024-07-07-mysql-all.sql master2:/tmp/ #在master1上操作
  • 设置数据库日志二进制关闭
mysql>set sql_log_bin=0; #在master2上操作
  • 读取文件 ,在master2上操作
mysql> source /tmp/2024-07-07-mysql-all.sql;
  • 检查数据是否同步,在master2上操作
select * from  master1db.master1tab;

(4)设置主服务器,在master2上操作

mysql> change master to master_host='master1',master_user='rep',master_password='密码',master_log_file='localhost-bin.000002',master_log_pos=154;
# master_log_file和master_log_pos的值在master1使用`show master status;`命令查

(5)启动从服务器

mysql>start slave;

(6)查看启动状态(IO-YES/SQL-YES)

mysql>show slave status\G;

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

案例2:一主一从(M-S),主从自动协商

需求:
案例2与案例1需求基本相同。master1作为主mysql,master2作为从mysql,不同之处是使用了“gtid_mode=ON enforce_gtid_consistency=1”该属性自动记录position位置。不需要手动指定了。
环境:
因与案例1功能相同,只需要重置master2数据库重新配置即可

  1. 停止master2数据库
systemctl stop mysqld
  1. 删除数据
rm -rf /var/lib/mysql/*
  1. 启动数据库
systemctl start mysqld
  1. 查看默认密码
grep password /var/log/mysqld.log
  1. 修改数据库密码
mysqladmin -uroot -p'默认密码' password '新密码'

  1. 启动二进制日志,服务器ID,GTID
vim /etc/my.cnf
log_bin
server-id
gtid_mode=ON
enforce_gtid_consistency=1
  1. 重启服务器
systemctl restart mysqld
  1. 授权复制用户rep(案例1已做过,此处可以忽略)
  2. 备份数据
mysqldump -p'密码' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F-%H`-mysql-all.sql
scp 2023-7-11-mysql-all.sql master2:/tmp
  1. 模拟数据变化
mysql>insert into master1db.master1tab values (666666);

  1. 测试rep用户是否可用
mysql -h master1 -urep -p'密码'
  1. 启动二进制日志,服务器ID,GTID
vim /etc/my.cnf
log_bin
server-id=2
gtid_mode=ON
enforce_gtid_consistency=1
  1. 重启服务器
systemctl restart mysqld
  1. 手动恢复master1数据
set sql_log_bin=0; #临时关闭二进制日志
source /tmp/2024-7-11-mysql-full.sql
select * from master1db.master1tab;
  1. 设置主服务器
mysql> change master to
       master_host='master1',
       master_user='rep',
       master_password='密码',
       master_auto_position=1;
mysql> start slave;
mysql> show slave status\G;
  1. 返回主服务器(master1)更新数据,在从服务器(master2)观察是否同步

数据库集群.双主双从环境介绍

数据库集群.双主配置文件参数详解

数据库集群.双主关系设定

posted @ 2024-06-29 11:37  小肚腩吖  阅读(2)  评论(0编辑  收藏  举报