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

Mysql 9.4主从复制部署(传统文件日志位置mysqldump)

本文介绍如何配置MySQL主从复制过程。

1. 部署规划

本过程演示了使用多台主机部署实例,这些实例分别命名为dbserver01、dbserver02。

实例

ip

OS

描述

dbserver01

192.168.1.10

CentOS Stream release 9

主节点

dbserver02

192.168.1.13

CentOS Stream release 9

从节点

2. 修改服务器配置

在三台服务器上分别修改服务器名称为dbserver01,dbserver02,dbserver03

hostnamectl set-hostname dbserver01

hostnamectl set-hostname dbserver02

hostnamectl set-hostname dbserver03

在三台服务器上修改

vi /etc/hosts

192.168.1.10   dbserver01

192.168.1.13   dbserver02

禁止selinux

 vi /etc/sysconfig/selinux 

禁止防火墙

systemctl stop firewalld

systemctl disable firewalld

3. 安装mysql

Mysql安装方法有好多种,本案为了实现MGR,采用基于RPM的Linux发行版上安装MySQL,使用下载的Oracle提供RPM包。以下步骤需要在3台服务器上执行。

(1)首先下载mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar到本地服务器。

(2)解压安装文件

tar xvf mysql-9.4.0-1.el9.x86_64.rpm-bundle.tar

(3)安装

yum install mysql-community-client-plugins-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-common-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-icu-data-files-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-libs-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-devel-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-client-9.4.0-1.el9.x86_64.rpm -y

yum install mysql-community-server-9.4.0-1.el9.x86_64.rpm -y

(4)启动数据库

systemctl start mysqld

(5)从/var/log/mysqld.log中获得root用户登录mysql,更改root用户名密码

mysql> alter user root@localhost identified by 'password';

mysql> flush privileges;

4. 主库配置

(1)修改参数文件:

vi /etc/my.cnf

character_set_server=utf8mb4

secure_file_priv=''

server-id = 1

log-bin = mysql-bin

binlog_format=row

skip-name-resolve

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

binlog-ignore-db = performance_schema

binlog-ignore-db = sys

replicate_ignore_db=information_schema

replicate_ignore_db=performance_schema

replicate_ignore_db=mysql

replicate_ignore_db=sys

report_host=192.168.1.10

(2)创建复制用户

mysql> CREATE USER 'repl'@'192.168.1.13' IDENTIFIED BY 'password';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.13';

mysql> flush privileges;

(3)从主库获取复制二进制日志位置

执行flush tables with READ LOCK语句来刷新所有表和块写入

mysql> FLUSH TABLES WITH READ LOCK;

使用SHOW BINARY LOG STATUS语句确定当前二进制日志文件名和位置。

mysql> SHOW BINARY LOG STATUS\G

二进制日志文件是DBSERVER01-bin.000003,位置是158。

(4)使用mysqldump在现有源数据库中创建数据的快照

mysqldump --all-databases --source-data > dum_fulldatabase.db

(5)用scp命令复制dum_fulldatabase.db到从库服务器上

scp dum_fulldatabase.db root@192.168.1.13:/opt

(6)释放读取锁

mysql> unlock tables;

5.从库配置

(1)修改参数文件:

vi /etc/my.cnf

character_set_server=utf8mb4

secure_file_priv=''

server-id = 2

log-bin = mysql-bin

binlog_format=row

skip-name-resolve

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

binlog-ignore-db = performance_schema

binlog-ignore-db = sys

replicate_ignore_db=information_schema

replicate_ignore_db=performance_schema

replicate_ignore_db=mysql

replicate_ignore_db=sys

report_host=192.168.1.13

(2)重启mysqld服务

systemctl restart mysqld

(3)用mysql命令运行转储文件,导入数据库

[root@DBSERVER02 ~]# mysql -uroot -p< /opt/dum_fulldatabase.db

(3)登录mysql,设置master配置

mysql> CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.1.10', SOURCE_USER='repl',SOURCE_PASSWORD='password', SOURCE_LOG_FILE='DBSERVER01-bin.000003',SOURCE_LOG_POS=158;

(4)启动复制

mysql> start replica;

(5)查看复制状态

mysql> start replica;

(6)查看复制master信息

(7) 查看master配置信息

mysql> select * from mysql.slave_master_info\G

(8)查看中继日志ralay_log信息

mysql> select * from mysql.slave_relay_log_info\G

7. 测试数据同步

(1)在主库创建testdb,表test1,并插入数据

mysql> create database testdb;

mysql> create table test1(id int);

mysql> insert into test1 values(1);

(2)在从库上查询

mysql> use testdb;

mysql> select * from test1;

可以看到数据已经同步到从库。

http://www.dtcms.com/a/312940.html

相关文章:

  • 【暑期每日一题】洛谷 P1749 [入门赛 #19] 分饼干 II
  • Python中的import和from...import有什么区别?
  • Python篇---PyPI
  • 自私挖矿攻击
  • 安卓audio 架构解析
  • 决策树的实际案例
  • Ethereum: 了解炙手可热 Layer 2 解决方案 Base
  • C++手撕基于ID3算法的决策树
  • 玩转 Playwright 有头与无头模式:消除差异,提升爬虫稳定性
  • Linux 系统调用 stat 完全用例
  • Memcached Slab分配器:零碎片的极速内存管理
  • FFT/STFT/小波/HHT:振动诊断工具生死局,选错=灾难
  • MySQL——增删改查操作
  • Compose笔记(四十一)--ExtendedFloatingActionButton
  • 嵌入式开发学习———Linux环境下IO进程线程学习(二)
  • 【C++】面向对象编程:继承与多态的魅力
  • kafka创建topic报错解决思路之一
  • 日常--详细介绍qt Designer常用快捷键(详细图文)
  • 硅基计划3.0 知识探究 常见类方法
  • 关于Web前端安全防御之安全头配置
  • PHP入门及数据类型
  • 【2025ICCV-目标检测方向】WaveMamba:用于 RGB-红外目标检测的小波驱动曼巴融合
  • 《金字塔原理》读书思考笔记
  • GitOps:云原生时代的革命性基础设施管理范式
  • 关于 xrdp远程桌面报错“Error connecting to sesman on 127.0.0.1:3350“的解决方法
  • Python 基础语法(一):从常量到运算符
  • LeetCode 126:单词接龙 II
  • C语言的基本结构
  • http://localhost:8080/photos/xxx.png的本地图片访问方案
  • 电路原理图绘制专业实战教程2