mysql主从服务器同步心得体会

MySQL 主从服务器同步心得体会

MySQL 主从复制是数据库中常用的数据备份和分析的方法,主数据库将数据同步到从数据库,并且可以方便地进行分析和处理。为了保证主从同步正常工作,需要考虑以下几个方面:

1.配置主机和从机

1.1 主机配置

在主机上需要配置以下几个参数:

# 开启二进制日志,记录修改的数据
log-bin=mysql-bin
# 设置服务器ID,ID不要与从机重复
server-id=1

1.2 从机配置

在从机上需要配置以下几个参数:

# 从库复制账号,需要有REPLICATION SLAVE权限
replicate-user=slave_user:password
# 指定从机ID,ID不要与主机或其他从机重复
server-id=2
# 从哪个日志文件开始复制
log-slave-updates=true
# 指定从机的同步方式是使用主库或从库
# 主要适用于从库当主库的脱离和场景转移
# 值为ON和OFF
log_bin=mysql-bin
binlog-do-db=test
binlog-ignore-db=mysql    

2. 同步数据

2.1 主机执行

在主机上执行以下命令创建一个与主从机同步的用户:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

2.2 从机开启同步

在从机上执行以下命令开启数据同步:

CHANGE MASTER TO
MASTER_HOST='<master-host>',
MASTER_PORT=<master-port>,
MASTER_USER='<slave-user>',
MASTER_PASSWORD='<password>',
MASTER_LOG_FILE='<master-bin-log-file>',
MASTER_LOG_POS=<master-bin-log-pos>;

其中主机名、用户名、密码、二进制日志文件、同步位置要替换成实际的值。

3. 监控同步状态

3.1 查看主从状态

在从机上执行以下命令查看主从状态:

SHOW SLAVE STATUS\G

该命令将输出从机的相关信息,包括数据库版本、运行状态等。

3.2 查看同步日志

在主从机上可以通过二进制日志来查看同步日志:

mysqlbinlog --base64-output=DECODE-ROWS mysql-bin.000001

其中mysql-bin.000001是二进制日志文件名。

4. 实例说明

4.1 示例1:新建主从服务器

在主机上进行以下配置:

log-bin=mysql-bin
server-id=1

在从机上进行以下配置:

replicate-user=slave_user:password
server-id=2
log-slave-updates=true

执行以下SQL脚本,创建一个测试数据库和一个测试表:

CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE IF NOT EXISTS user (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255),
    password VARCHAR(255),
    PRIMARY KEY (id)
);

将主机的数据同步到从机上:

CHANGE MASTER TO
MASTER_HOST='master-host',
MASTER_PORT=3306,
MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;

在从机上执行以下命令查看主从状态:

SHOW SLAVE STATUS\G

如果输出了正确的结果,就说明主从同步成功。

4.2 示例2:变更从库同步数据的方式

假设我们有两台机器,一台主机ms1,一台从机rs1,现在需要将从机rs1转化为主机ms2,并且需要让rs1的数据同步到ms2上。

首先,在rs1上进行以下配置:

server-id=2
log-slave-updates=true
log_bin=mysql-bin
binlog-do-db=test

然后在rs1上执行以下脚本:

USE test;
INSERT INTO user(username, password) VALUES('user1', '123456');
INSERT INTO user(username, password) VALUES('user2', '123456');
INSERT INTO user(username, password) VALUES('user3', '123456');

然后在ms2上进行以下配置:

server-id=3

将rs1的数据同步到ms2上:

CHANGE MASTER TO
MASTER_HOST='rs1',
MASTER_PORT=3306,
MASTER_USER='slave_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;

在ms2上执行以下命令查看同步日志:

mysqlbinlog --base64-output=DECODE-ROWS master-bin.000001 > /tmp/sql

在/tmp/sql文件中可以看到同步的SQL语句:

USE test;
INSERT INTO user(username, password) VALUES('user1', '123456');
INSERT INTO user(username, password) VALUES('user2', '123456');
INSERT INTO user(username, password) VALUES('user3', '123456');

如果输出了正确的结果,就说明从库转化为主库成功,同时数据也成功同步到了ms2上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql主从服务器同步心得体会 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • .htaccess重定向和url重写详细介绍

    介绍 .htaccess 重定向和 URL 重写之前,我们需要了解两个概念:服务器响应码和正则表达式。 服务器响应码 服务器响应码,也称为 HTTP 状态码,是指 Web 服务器响应客户端请求时所返回的状态码。 几个常见的状态码: 200 OK:用来表示客户端的请求在服务器端被正常处理。 301 Moved Permanently:用于永久性重定向,浏览器会…

    database 2023年5月22日
    00
  • Oracle如何直接运行OS命令(上)第1/2页

    下面是详细讲解“Oracle如何直接运行OS命令(上)第1/2页”的完整攻略。 标题 Oracle如何直接运行OS命令(上)第1/2页 正文 Oracle可以直接运行操作系统(OS)命令,可以帮助管理员更方便地进行一些操作。但是需要注意的是,这个功能只应在必要的情况下使用,并需要小心谨慎地使用。在此介绍Oracle如何直接运行OS命令的攻略。 需要使用的命令…

    database 2023年5月21日
    00
  • mysql如何实现最大连接数

    MySQL通过限制连接数来控制并发访问的数量,从而确保系统的稳定性,并避免资源过度占用。在 MySQL 中,最大的同时连接数由系统配置控制,可通过以下几种方法进行设置。 方法1:修改MySQL配置文件 MySQL 的最大连接数量通常由 max_connections 参数控制。此参数的默认值为 151,可以通过直接修改 MySQL 配置文件进行更改: 打开 …

    database 2023年5月22日
    00
  • MySQL数据库show processlist指令使用解析

    MySQL数据库show processlist指令使用解析 简介 MySQL是一种开源关系型数据库管理系统,其提供了许多命令行指令以帮助用户管理和维护数据库。其中,show processlist指令可以用于查看正在运行的MySQL进程列表。该指令用起来非常简单,但是却能够帮助用户排查出现的问题,并及时采取解决措施。 show processlist指令语…

    database 2023年5月21日
    00
  • C# SQLite执行效率的优化教程

    C# SQLite执行效率的优化主要从以下几个方面入手: 1. 数据库设计优化 在数据库设计时,应遵循以下原则进行优化: 1.1 表字段设计 表字段设计时,应尽量避免使用BLOB(二进制类型)和TEXT类型,这类字段需要频繁的I/O操作和内存申请,对性能会造成不小的影响。如果确实需要使用这类字段,可以通过异步读写或者考虑分表进行优化。 1.2 索引优化 索引…

    database 2023年5月19日
    00
  • DBMS 聚合

    DBMS (Database Management System) 聚合是在数据库查询操作 (Select) 中对某些列进行处理的一种方式。聚合操作可用于统计、汇总和计算数据,返回一个单一的结果,其功能相当于 SQL 中的GROUP BY 语句。本文将详细讲解 DBMS 聚合的完整攻略。 聚合函数 聚合函数 (Aggregate Function) 是 DB…

    database 2023年3月27日
    00
  • ssm项目改造spring boot项目完整步骤

    下面我将详细讲解“ssm项目改造spring boot项目完整步骤”的完整攻略。 第一步:项目结构调整 在进行ssm项目改造为spring boot项目之前,需要对项目结构进行调整。具体步骤如下: 删除旧的配置文件,在src/main/resources文件夹下新建application.properties或application.yml配置文件。 针对旧…

    database 2023年5月21日
    00
  • 30个php操作redis常用方法代码例子

    我会详细讲解“30个php操作redis常用方法代码例子”的完整攻略。 什么是Redis Redis是一种内存数据库,因其性能高而广受欢迎。它被广泛用于高流量网站的缓存优化、会话管理、实时数据处理、排行榜等场景。Redis是一种键值存储系统,支持多种数据结构,例如字符串、哈希、集合、列表等,且这些数据结构都带有丰富的操作方法。 为什么要使用Redis 使用R…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部