当前位置: 首页 > news >正文

主从复制启动

需求:现需要将原windows与虚拟机Centos的主从复制转移,两台虚拟机上运行。已提前安装好Mysql,并将虚拟机CentOS克隆复制到运行

在这里插入图片描述

问题一:若完全克隆复制已安装好的虚拟机系统时,会导致两台服务器的MAC地址、ip地址、UUID相同,以及mysql里server的uuid也需改

vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static #固定ip需将dhcp改静态
UUID生成下更新 #可使用命令:uuidgen ens33
HWADDR#随机生成[硬件-网络适配器NAT-高级-MAC生成新]
IPADDR=192.168.138.101 #service network restart 重启网络/systemctl restart network或者执行不了可重启服务器

mysql库里的uuid修改与上面生成的一致,文件在/var/lib/mysql/auto.cnf 并进行 systemctl restart mysqld 重启mysql服务。

问题二:网络互相ping不通,需要从虚拟网络编辑器VMnet8 改为NAT模式,子网IP为192.168.138.0,子网掩码 255.255.255.0 ,网关IP为192.168.138.1。其次进行本机设置 修改网络连接 Vmware Network Adapter VMnet8,开放防火墙即可网络联通

在这里插入图片描述
防火墙端口开放
添加:firewall-cmd --zone=public --add-port=3306/tcp --permanent
查看:firewall-cmd --zone=public --list-ports
更新:firewall-cmd --reload

数据库表没用户权限
mysql -u root -p

mysql> use mysql;
mysql> update user set Host='%' where User='root';
mysql> flush privileges; //用于重新加载权限表,无需重启MySQL(修改用户权限后刷新)

问题三:mysql8.0 基于日志(binlog)的主从(Master-Slave)复制方式,注意版本数据一致,server_id 唯一

附注:https://www.bilibili.com/video/BV13a411q753?spm_id_from=333.788.videopod.episodes&vd_source=48c26d71519141a0445dd3e33f722149&p=172
主库执行以下:

vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
log-bin=mysql-bin
server-id=100mysql> CREATE USER 'xiaozhang'@'192.168.138.101' IDENTIFIED with mysql_native_password BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'xiaozhang'@'192.168.138.101';//或者用@'%'所有用户
mysql> FLUSH PRIVILEGES;//刷新授权表信息
mysql> show master status;

从库执行以下:

vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
log-bin=mysql-bin
server-id=101mysql> CHANGE MASTER TO MASTER_HOST='192.168.138.100',MASTER_USER='xiaozhang',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=856;  //也执行此语句,可重新配置
mysql> show slave status\G;
mysql> start slave;
出现小问题A:

Slave_IO_Running: NO
IO NO eg: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’

问题可采取下述修改:
主库操作执行-//在主库上执行刷新日志

mysql> flush logs;
mysql> show master status\G;

从库操作亦执行-//停止从库主从复制,并设置change

mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_LOG_FILE='binlog.000007',MASTER_LOG_POS=156;
mysql> start slave;
mysql> show slave status\G
出现小问题B:

Slave_SQL_Running: NO

一般是事务回滚造成的,在从库中执行以下语句:

mysql> stop slave ; //修复完生产问题,数据修复之后恢复同步
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; --跳过一个事务,可选(在主从库维护中,需要跳过某个无法执行的命令)
mysql> start slave ;
mysql> show replica status\G;

附:其他需注意情况

NO.1 何时使用 RESET MASTER?

全新搭建主从复制环境:清除旧日志,从头开始同步。
清理历史二进制日志:例如完成大规模数据清理后,不再需要旧日志。
彻底重置主服务器状态:放弃所有复制相关的日志和位置信息。

NO.2 何时使用 RESET SLAVE?(reset slave all 全清空)

会使副本忘记其在Master的二进制日志中的复制位置,该语句旨在用于干净启动从副本

NO.3 数据修复,MySQL主从同步报错(数据不一致)

表结构和值较复杂,需在主库创建临时表并dump,在从库执行dump文件中的insert语句
主库执行:

mysql> create table backup like t_table;
mysql> insert into backup select * from t_table where t_id=18013;
mysql> commit

dump数据:
mysqldump -uroot -p d_databases backup> backup.sql

相关文章:

  • 如何设计Agent的记忆系统
  • docker commit除了提交容器成镜像,还能搞什么之修改cmd命令
  • 怎么开发一个网络协议模块(C语言框架)之(二) 数据结构设计
  • 稳固基石 - Prometheus 与 Alertmanager 运维考量
  • STM32中断优先级分组有哪几种?
  • Java中使用Stream API优化for循环
  • ELF格式·链接与加载
  • 网络协议与通信安全
  • Spring MVC深度解析:控制器与视图解析及RESTful API设计最佳实践
  • Linux常用下载资源命令
  • 互联网大厂Java求职面试实录 —— 严肃面试官遇到搞笑水货程序员
  • 动态IP:像变色龙一样自由切换网络身份
  • 深度学习实战:从图像分类到文本生成的完整案例解析
  • python项目和依赖管理工具uv简介
  • 行为型:迭代器模式
  • 为什么Python慢?如何用Numba实现Python百倍加速?
  • CSS入门
  • java基础(继承)
  • C/C++---隐式显式转换
  • Disruptor—2.并发编程相关简介
  • 旅游小镇网站建设方案/友链交易平台
  • 住房和城乡建设部标准定额网站/互联网去哪里学
  • bc网站搭建网站开发/长沙优化网站厂家
  • 成都哪家网站开发好/佛山网站建设工作
  • 市中移动网站建设/百度站长平台链接
  • 做公司网站的企业/百度推广深圳分公司