九、主从集群+一主一从(两种方法)

1.数据库集群

  集群概述——mysql复制技术

  集群目的

    负载均衡  解决高并发

    高可用HA  服务可用性

    远程灾备  数据有效性

  图示

    

 

 

  类型

    1.一主

    2.一主一从

    3.一主多从

    4.双主

    5.双主多从

 

  原理图示

    

 

 

  实战1-一主一从(1)

  布置环境

  1.建立4台全新的服务器-互相通信

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

  3.配置域名解析  我这里分别是132 133 134 135

  注意:请重新安装多台数据库,不要把数据库也克隆,否则数据库id相同无法进行实战。

   域名解析命名方法

  在每台服务器都打上

  vim /etc/hosts

 

  192.168.156.132 master1

  192.168.156.133 master2

  192.168.156.134 slave1

  192.168.156.135 slave2

 

  :wq

  ping slave2

  ping slave1

  ping master2

  ping master1

  都能ping成功的话,就可以了

  

  1.M-S  一主一从

  ·主master1

  部署一台mysql服务器。准备好域名解析

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

  mysql -uroot -p'Qianfeng@123'

  create database master1db;

  use master1db;

  create table master1tab (name char(50));

  insert into master1tab values('zhangsan'),('lisi');

  select * from master1tab;

  \q

  开启二进制日志

  systemctl stop mysqld  关闭mysql服务

  vim /etc/my.cnf  编辑

  log_bin  开启二进制日志

  server-id=1  给服务器一个id

  :wq  保存

  systemctl start mysqld  开启mysql服务

  创建复制用户

  grant replication slave,replication on *.* to 'rep'@'192.168.56.%' identified by 'Qianfeng@123';

  \q

  准备master数据库的数据

  mysqldump -p'Qianfeng@123' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F-%H`-mysql-allQianfeng.sql

  ls

  

 

   scp -r 2022-01-21-14-mysql-allQianfeng.sql master2:/tmp

  去matser2服务器

  ls /tmp/

  

 

   vim /tmp/2022-01-21-14-mysql-allQianfeng.sql

  第22行

  

 

   :wq

  这一步是很必要的,这里说明了bin只记录到了哪里,因为主服务器会一直有数据写入。

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

  去master1服务器

  mysql -uroot -p'Qianfeng@123'

  insert into master1db.master1tab values ('wangwu');

  select * from master1db.master1tab;

  

 

  这样模拟主数据库的数据发生了变动

  

   ·从master2

  测试rep用户是否可用

  mysql -h master1 -urep -p'Qianfeng@123'

  show databases;

  

 

   \q

  启动服务器序号

  systemctl stop myaqld

  vim /etc/my.cnf

  server-id=2

  systemctl start mysqld

  mysql -uroot -p'Qianfeng@123'

  show databases;

  

 

  手动同步数据

  set sql_log_bin=0;

  source /tmp/2022-01-21-14-mysql-allQianfeng.sql

  select * from master1db.master1tab;

  

 

   备份的时候就是只有张三和李四

  设置主服务器

  change master to master_host='master1',master_user='rep',master_password='Qianfeng@123',master_log_bin='localhost-bin.000003',master_log_pos=154;  改变主人-主人主机是master1,主人用户是rep,主人密码是Qianfeng@123,主人二进制文件是000003,行数是154行。

  strat slave;  开启奴隶模式

  select * from master1db.master1tab;

  

   实战成功,之后主服务器数据改动,从服务器也会同步。  如果有问题可以看看从服务器的绑定情况show slave status\G 如果只有一个1.row就是主服务器的,slave_io_running和slave_sql_running是否yes等等。

 

  实战2-一主一从(2)  另外一种

  环境

    重置master2数据库

    systemctl stop mysql

    rm -rf /var/lib/mysql*

    systemctl start mysqld 

    grep password /var/log/mysqld.log

    

 

    mysqladmin -uroot -p'=.<udCifq41,' password 'Qianfeng@123'

    mysql -uroot -p'Qianfeng@123'

    \q

  

  主服务器

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

    systemctl stop mysqld

    vim /etc/my.cnf

    log_bin

    server-id=1

    gtid_mode=ON

    enforce_gtid_consistency=1

    :wq

    systemctl restart mysqld

    授权复制用户rep

      (看上个实战)

    备份数据

    mysqldump -p'Qianfeng@123' --all-databases --single-transaction --masert-data=2 --flush-logs > `data +%F-%H`-mysql-allQianfeng.sql

    scp 2022-01-22-16-mysql-allQianfeng.sql master2:/tmp

    模拟数据变化

    mysql -uroot -p'Qianfeng@123'

    select * from master1db.master1tab;

    

 

    insert into master1db.master1tab values (77777);

    

  从服务器

    观察rep用户能不能开启

    mysql -h master1 -urep -p'Qianfeng@123'

    :wq

    启动二进制日志,服务器id,GTID

    systemctl stop mysqld

    vim /etc/my.cnf

    log_bin

    server-id=2

    gtid_mode=ON

    enforce_gtid_consistency=1

    :wq

    systemctl restart mysqld

    恢复手动同步数据

    mysql -uroot -p'Qianfeng@123'

    set sql_log_bin=0;  临时关闭mysql的二进制日志文件,退出登录及恢复

    source /tmp/2022-01-22-16-mysql-allQianfeng.sql

    select * from master1db.master1tab;

    设定主服务器

    change master to master_host='master1',master_user='rep',master_password='Qianfeng@123',master_auto_position=1;  自动进行日志记录

    start slave;  开启奴隶模式

    select * from master1db.master1tab;

    这种自动化配置容易出错,越自动越容易出现不可预估的问题。手动方法麻烦但是简单和稳定。

    

 

posted @   真渡  阅读(128)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示