linux系统下实现mysql热备份详细步骤(mysql主从复制)

下面是详细的步骤和示例说明,具体流程如下:

环境准备

在进行 MySQL 主从复制之前,需要做一些准备:

  1. 确保主库和从库都安装了 MySQL 数据库,并且版本一致
  2. 确保主库和从库都能够相互访问,即主库能够访问从库,从库能够访问主库
  3. 确保主库和从库都有相同的字符集和排序规则

主库配置

  1. 在主库上创建一个账号,并为该账号赋予 REPLICATION SLAVE 的权限
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  1. 修改主库的配置文件 my.cnf,在 [mysqld] 段中添加以下内容:
log-bin=mysql-bin    # 开启二进制日志
server-id=1          # 服务器唯一标识,主从必须不同
  1. 重启 MySQL 服务以使更改生效

从库配置

  1. 修改从库的配置文件 my.cnf,在 [mysqld] 段中添加以下内容:
server-id=2          # 服务器唯一标识,主从必须不同
  1. 在从库上执行以下命令,设置主库的地址、账号和密码,并开始复制过程
CHANGE MASTER TO
    MASTER_HOST='<主库IP或主机名>',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='<主库上当前的二进制日志文件>',
    MASTER_LOG_POS=<主库上当前的二进制日志偏移量>;

START SLAVE;

其中,<主库IP或主机名>、<主库上当前的二进制日志文件> 和 <主库上当前的二进制日志偏移量> 需要从主库上获取,可以通过以下命令获取:

SHOW MASTER STATUS;

示例说明

示例一:主库和从库在同一台机器上

  1. 在本地主机上创建两个 MySQL 实例,一个作为主库,一个作为从库
$ mysql_install_db --datadir=./mysql1/data/
$ mysql_install_db --datadir=./mysql2/data/
$ mysqld_safe --defaults-file=./my.cnf --datadir=./mysql1/data/ &
$ mysqld_safe --defaults-file=./my.cnf --datadir=./mysql2/data/ &

其中,my.cnf 的内容为:

[mysqld]
log-bin=mysql-bin
server-id=1
  1. 在主库上创建账号和数据库,并往数据库中插入一些数据
CREATE DATABASE test;
CREATE TABLE test.t (id INT);
INSERT INTO test.t VALUES (1), (2), (3);
  1. 在从库上进行主从复制的配置,并开始复制
CHANGE MASTER TO
    MASTER_HOST='127.0.0.1',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

START SLAVE;

其中,MASTER_LOG_FILE 和 MASTER_LOG_POS 的值可以通过 SHOW MASTER STATUS 命令获取。

  1. 在主库上修改数据
INSERT INTO test.t VALUES (4);
  1. 在从库上查看数据是否同步
SELECT * FROM test.t;

可以看到,从库中的数据已经更新为 1、2、3、4。

示例二:主库和从库在不同的机器上

  1. 在主机 A 上创建 MySQL 实例作为主库,并在主机 B 上创建 MySQL 实例作为从库

  2. 在主库上创建账号和数据库,并插入一些数据

CREATE DATABASE test;
CREATE TABLE test.t (id INT);
INSERT INTO test.t VALUES (1), (2), (3);
  1. 修改主库的 my.cnf 文件,添加以下内容:
bind-address=<主机A的IP地址>
  1. 在从库上进行主从复制的配置,并开始复制
CHANGE MASTER TO
    MASTER_HOST='<主机A的IP地址>',
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

START SLAVE;

其中,MASTER_LOG_FILE 和 MASTER_LOG_POS 的值可以通过 SHOW MASTER STATUS 命令获取。

  1. 在主库上修改数据
INSERT INTO test.t VALUES (4);
  1. 在从库上查看数据是否同步
SELECT * FROM test.t;

可以看到,从库中的数据已经更新为 1、2、3、4。

注意:在从库上设置 MASTER_HOST 的时候,要使用主库机器的 IP 地址。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux系统下实现mysql热备份详细步骤(mysql主从复制) - Python技术站

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

相关文章

  • MS SQL Server数据库清理错误日志的方法

    我来为你详细讲解如何清理MS SQL Server数据库的错误日志。 1. 概述 MS SQL Server 数据库的错误日志文件默认会保存一定数量的日志信息,这会占据大量的磁盘空间。因此,对于长时间运行的MS SQL Server数据库,我们需要清理这些错误日志文件以释放磁盘空间。在清理错误日志文件时,需要注意一些细节问题,下面我会详细讲解相关方法和注意事…

    database 2023年5月18日
    00
  • mysql 数据库备份的多种实现方式总结

    MySQL 数据库备份的多种实现方式总结 在使用MySQL时,为了防止数据丢失或者出现问题,在定期备份MySQL数据库是非常必要的。目前有多种备份MySQL数据库的方法,下面将详细讲解各种方法的实现步骤。 1. 使用 mysqldump 命令备份 mysqldump 是MySQL自带的备份工具,我们可以使用这个工具将MySQL中的数据全部导出并保存到一个文件…

    database 2023年5月21日
    00
  • Redhat 6.2 下 oracle 11g R2的安装详解第1/2页

    为了提高可读性,我将分为两部分进行讲解。 Redhat 6.2 下 oracle 11g R2的安装详解第1/2页(上) 1. 确认系统参数 在进行oracle 11g R2的安装前,需要确认系统的参数设置是否符合要求,这里需要特别关注以下参数: 1.1 内存和交换分区 oracle 11g R2对于系统内存和交换分区的要求非常高,建议开启至少2G的内存以及…

    database 2023年5月22日
    00
  • SQL 实用语句

    SQL 实用语句是指在数据库中常用的一系列查询和操作数据的语句。以下是 SQL 实用语句的完整攻略。 SELECT 语句 SELECT 语句用于查询数据。常见的用法如下: SELECT 列名 FROM 表名 WHERE 条件; 其中,列名代表查询的结果列,表名代表查询的表,条件是查询的条件。示例: SELECT name, age FROM users WH…

    database 2023年5月21日
    00
  • 精炼mysql的数据,并且存放到redis中。

    # -*- coding:utf8 -*- ”’ Created on 2016年11月29日 @author: qiancheng ”’ import MySQLdb from email.mime.text import MIMEText from email.header import Header import smtplib import re…

    Redis 2023年4月11日
    00
  • SQL Server子查询的深入理解

    SQL Server子查询的深入理解 子查询是 SQL Server 数据库查询语言中一个重要的概念,可以在查询语句中嵌套一个完整的查询,以实现更加灵活的数据查询和筛选。本文将深入介绍 SQL Server 子查询的用法和实现原理,帮助读者更好地理解和应用这一功能。 什么是子查询 SQL Server 子查询是指在一个 SQL 语句中嵌套了另一个完整的 SQ…

    database 2023年5月21日
    00
  • DBMS中DDL和DML的区别

    DDL和DML都是Database Management System(DBMS)中的重要组成部分。DDL代表Data Definition Language,DML代表Data Manipulation Language。DDL和DML之间存在明显的区别,下面将详细解释这些区别。 DDL(Data Definition Language) 数据定义语言DD…

    database 2023年3月27日
    00
  • linux查看目录的四种方法(ls只显示目录)

    这里是关于“Linux查看目录的四种方法”的详细攻略。 1. 使用ls命令查看目录 在Linux系统中,使用ls命令可以查看当前工作目录下的所有文件和目录。如果只想看到目录,可以使用ls -d */命令,其中-d表示只展示目录,*/表示匹配所有目录名。 示例一:查看当前目录下的所有目录 $ ls -d */ dir1/ dir2/ dir3/ 2. 使用fi…

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