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日

相关文章

  • Oracle 12CR2查询转换教程之临时表转换详解

    Oracle 12CR2查询转换教程之临时表转换详解 什么是临时表 临时表是一种用于存放在一定时间内需要临时保存的数据的表,它不同于普通表,其数据的生命周期只在当前的会话中,当会话结束时,表中的数据也随之消失。在Oracle中,临时表是通过创建全局临时表或本地临时表来实现的,其中本地临时表只能用于存储会话私有的数据,而全局临时表可以被多个会话共享。 临时表的…

    database 2023年5月21日
    00
  • Docker部署SQL Server 2019 Always On集群的实现

    下面我来简单介绍一下Docker部署SQL Server 2019 Always On集群的实现攻略。 一、概述 SQL Server 2019 Always On集群是一种高可用的解决方案,可以保证数据库服务的连续性和可靠性。而采用Docker部署SQL Server 2019 Always On集群,则可以更容易地进行部署和管理。 二、实现步骤 准备Do…

    database 2023年5月22日
    00
  • mysql中的多行查询结果合并成一个

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6132147   SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND md.user_id…

    MySQL 2023年4月13日
    00
  • 基于多CPU多核架构的redis性能优化

    目录 CPU架构 问题 优化 CPU架构 一个 CPU 处理器中一般有多个物理核。 每个物理核都拥有私有的一级缓存( L1 cache)和私有的二级缓存(L2 cache)。 不同的物理核还会共享一个共同的三级缓存 每个物理核通常都会运行两个超线程,也叫作逻辑核。同一个物理核的逻辑核会共享使用 L1、L2 缓存 不同处理器间通过总线连接 问题 1、多CPU:…

    Redis 2023年4月12日
    00
  • sql中left join的效率分析与提高效率方法

    让我详细讲解一下“SQL中LEFT JOIN的效率分析与提高效率方法”的完整攻略。 什么是LEFT JOIN? 在SQL中,LEFT JOIN是一种关联查询(也被称为左外连接、左连接),用于显示左表中所有记录和右表中与其匹配的记录。如果右表中没有匹配的记录,则显示NULL。 例如,假设我们有两个表,一个是students,另一个是scores。我们想要根据学…

    database 2023年5月19日
    00
  • SQL 创建稀疏矩阵

    创建稀疏矩阵是数据分析及数据挖掘中的一个重要步骤,SQL是常用的关系型数据库操作语言,下面我将给出创建稀疏矩阵的完整攻略。 一、前提条件 在使用SQL创建稀疏矩阵之前,需要保证以下前提条件已经满足:1. 数据库中已经存在数据表,并且每个数据表中的数据按照一定规则进行了处理(如归一化处理、去重处理等)。2. 对于待创建的稀疏矩阵,已经明确规定了需要保留的数据列…

    database 2023年3月27日
    00
  • Druid基本配置及内置监控使用_动力节点Java学院整理

    Druid基本配置及内置监控使用攻略 Druid是一个为数据库设计的连接池、SQL执行监控、分析工具。它使用Java的proxy技术来实现在JDBC层的透明处理和统计数据的展现。在使用前,需要进行一些基本配置。 基本配置 在项目的pom.xml中,引入Druid的依赖: <dependency> <groupId>com.alibab…

    database 2023年5月21日
    00
  • MySQL自增列插入0值的解决方案

    针对MySQL自增列插入0值的解决方案,我们可以采用以下两种方法: 方法一:将自增的初始值设置为-1 我们可以将自增列的初始值设为-1,并将插入的值判断为0时,手动将其赋值为NULL。这样,在插入0时,数据库会自动将其设置为下一个自增值,而在插入NULL时,仍然会根据自增规则自动分配一个新的ID。 CREATE TABLE test ( id INT AUT…

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