MySQL5.6主从复制(mysql数据同步配置)

下面是MySQL5.6主从复制(mysql数据同步配置)的完整攻略:

什么是MySQL主从复制?

MySQL主从复制是一种常用的数据同步技术,可以将一个MySQL数据库的数据复制到其他MySQL实例中。在主从复制中,一个数据库被标记为“主数据库”,其他数据被标记为“从数据库”。在主数据库上发生的任何更改都将自动从主数据库传输到从数据库,确保从数据库的数据与主数据库的数据保持一致。

如何进行MySQL主从复制?

MySQL主从复制需要进行以下几个步骤:

1. 准备主数据库

在主数据库上,需要做以下准备工作:

1.1 配置MySQL

在主数据库上,需要编辑MySQL配置文件my.cnf,将以下配置添加到[mysqld]部分下:

server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql

其中,server-id用于唯一标识主从复制中的主数据库,log-bin选项启用二进制日志记录,binlog-do-db选项指定需要同步的数据库,而binlog-ignore-db选项则指定不需要同步的数据库。

1.2 创建复制账户

在主数据库上,需要创建一个专门用于复制的账户。可以使用以下命令创建账户:

mysql> CREATE USER 'replicant'@'slave.ip.address' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'slave.ip.address';

其中,replicant是复制账户的用户名,slave.ip.address是从数据库的IP地址,password是复制账户的密码。

1.3 查看主数据库状态

在主数据库上,使用以下命令查看主数据库状态:

mysql> SHOW MASTER STATUS;

该命令将返回当前主数据库位置的文件名和位置。

2. 准备从数据库

在从数据库上,需要做以下准备工作:

2.1 配置MySQL

在从数据库上,需要编辑MySQL配置文件my.cnf,将以下配置添加到[mysqld]部分下:

server-id=2

其中,server-id用于唯一标识主从复制中的从数据库。

2.2 启动复制线程

在从数据库上,需要使用以下命令启动复制线程:

mysql> CHANGE MASTER TO
    ->  MASTER_HOST='master.ip.address',
    ->  MASTER_USER='replicant',
    ->  MASTER_PASSWORD='password',
    ->  MASTER_LOG_FILE='mysql-bin.000001',
    ->  MASTER_LOG_POS=120;
mysql> START SLAVE;

其中,master.ip.address是主数据库的IP地址,replicant是复制账户的用户名,password是复制账户的密码,mysql-bin.000001和120是在主数据库上执行SHOW MASTER STATUS命令返回的文件名和位置。

3. 验证主从复制

完成以上步骤后,可以进行以下验证:

3.1 在主数据库上插入一条数据

在主数据库上,可以使用以下命令插入一条数据:

mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');

3.2 查看从数据库上的数据

在从数据库上,可以使用以下命令查看数据是否已经同步:

mysql> USE dbname;
mysql> SELECT * FROM table1;

该命令将返回刚才在主数据库上插入的数据。

示例

下面是两个示例,用于演示MySQL主从复制的使用。

示例1

在本示例中,将创建一个主数据库,在主数据库上插入一条数据,并将从数据库复制该数据。

1. 创建主数据库

在主数据库上,使用以下命令创建一个数据库并切换到该数据库:

mysql> CREATE DATABASE dbname;
mysql> USE dbname;

2. 创建数据表

在主数据库上,使用以下命令创建一个数据表:

mysql> CREATE TABLE table1 (
    ->  id int(11) NOT NULL AUTO_INCREMENT,
    ->  name varchar(50) DEFAULT NULL,
    ->  PRIMARY KEY (id)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3. 配置主数据库

在主数据库上,将以下配置添加到MySQL配置文件my.cnf中:

server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql

4. 创建复制账户

在主数据库上,创建一个复制账户:

mysql> CREATE USER 'replicant'@'slave.ip.address' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'slave.ip.address';

5. 查看主数据库状态

在主数据库上,使用以下命令查看主数据库的状态:

mysql> SHOW MASTER STATUS;

应该返回如下结果:

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      120 | dbname       | mysql            |
+------------------+----------+--------------+------------------+

6. 配置从数据库

在从数据库上,将以下配置添加到MySQL配置文件my.cnf中:

server-id=2

7. 启动复制线程

在从数据库上,使用以下命令启动复制线程:

mysql> CHANGE MASTER TO
    ->  MASTER_HOST='master.ip.address',
    ->  MASTER_USER='replicant',
    ->  MASTER_PASSWORD='password',
    ->  MASTER_LOG_FILE='mysql-bin.000001',
    ->  MASTER_LOG_POS=120;
mysql> START SLAVE;

8. 插入数据

在主数据库上,使用以下命令插入一条数据:

mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');

9. 验证数据同步

在从数据库上,使用以下命令查看数据是否已经同步:

mysql> USE dbname;
mysql> SELECT * FROM table1;

如果一切正常,该命令将返回刚才在主数据库上插入的数据。

示例2

在本示例中,将创建一个包含多个从数据库的主数据库,并将主数据库上的数据复制到每个从数据库中。

1. 创建主数据库

在主数据库上,使用以下命令创建一个数据库并切换到该数据库:

mysql> CREATE DATABASE dbname;
mysql> USE dbname;

2. 创建数据表

在主数据库上,使用以下命令创建一个数据表:

mysql> CREATE TABLE table1 (
    ->  id int(11) NOT NULL AUTO_INCREMENT,
    ->  name varchar(50) DEFAULT NULL,
    ->  PRIMARY KEY (id)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3. 配置主数据库

在主数据库上,将以下配置添加到MySQL配置文件my.cnf中:

server-id=1
log-bin=mysql-bin
binlog-do-db=dbname
binlog-ignore-db=mysql

4. 创建复制账户

在主数据库上,创建一个复制账户:

mysql> CREATE USER 'replicant'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicant'@'%';

5. 查看主数据库状态

在主数据库上,使用以下命令查看主数据库的状态:

mysql> SHOW MASTER STATUS;

6. 配置从数据库

在从数据库上,将以下配置添加到MySQL配置文件my.cnf中:

server-id=2

7. 启动复制线程

在从数据库上,使用以下命令启动复制线程:

mysql> CHANGE MASTER TO
    ->  MASTER_HOST='master.ip.address',
    ->  MASTER_USER='replicant',
    ->  MASTER_PASSWORD='password',
    ->  MASTER_LOG_FILE='mysql-bin.000001',
    ->  MASTER_LOG_POS=120;
mysql> START SLAVE;

8. 配置其他从数据库

对于其他从数据库,重复步骤6和7即可。

9. 插入数据

在主数据库上,使用以下命令插入一条数据:

mysql> USE dbname;
mysql> INSERT INTO table1 (id, name) VALUES (1, 'Alice');

10. 验证数据同步

在每个从数据库上,使用以下命令查看数据是否已经同步:

mysql> USE dbname;
mysql> SELECT * FROM table1;

如果一切正常,每个命令将返回刚才在主数据库上插入的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL5.6主从复制(mysql数据同步配置) - Python技术站

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

相关文章

  • .net EF Core专题:EF Core 读取数据时发生了什么?

    .NET EF Core专题:EF Core 读取数据时发生了什么? 简介 Entity Framework Core(EF Core)是Entity Framework的一个重写版本,它是一个轻量级、可扩展、跨平台和开源的ORM(对象关系映射)框架。它可以用来与关系型数据库进行交互,并将关系型数据转换成对象形式的数据,从而帮助开发者更方便地进行数据库编程。…

    database 2023年5月22日
    00
  • MySQL 数据类型(float)的注意事项

    摘要:      今天左哥问起一个float浮点数类型的问题,这个类型用的不多,所以也不太了解,现在打算测试下。 知识点:      float:浮点数,单精度,占4字节。 测试 root@localhost : test 05:49:32>create table fl(id int,fl float); Query OK, 0 rows affec…

    MySQL 2023年4月13日
    00
  • 深入Oracle的left join中on和where的区别详解

    深入Oracle的Left Join中ON和WHERE的区别详解 当我们在使用Left Join连接两张表格时,我们可以在Join语句中使用ON或WHERE子句来对连接进行筛选。本文将详细讲解ON和WHERE两个子句的使用区别并提供示例代码。 ON子句 ON子句是在Join子句后面使用的,它用于指定连接两张表格时的条件。通过ON子句,我们可以在连接表格时确保…

    database 2023年5月21日
    00
  • MySql带OR关键字的多条件查询语句

    下面是 MySql 带 OR 关键字的多条件查询语句的攻略。 什么是多条件查询 当我们需要查询数据库中的数据时,如果只给定单一条件,我们的查询结果集合往往不全面,包含的记录数也会受到限制。所以对于一些需求比较明确的场景,我们常常需要在查询语句中增加多个条件,以此来获取更加符合需求的记录。 OR 关键字介绍 OR 是关系运算符之一,表示关系中的任意一个条件均可…

    database 2023年5月22日
    00
  • Spring事务注解@Transactional失效的八种场景分析

    下面就是详细讲解“Spring事务注解@Transactional失效的八种场景分析”的完整攻略。 背景 在Spring框架中,使用@Transactional注解可以方便地定义一个事务。但是,在某些情况下,事务可能会失效,这将导致数据一致性问题。本文将对八种可能导致@Transactional失效的场景进行分析并给出解决方案。 问题场景一:事务调用自身方法…

    database 2023年5月21日
    00
  • MySQL 声明变量及存储过程分析

    MySQL 声明变量及存储过程是一个比较常用的操作,能够使我们更加高效地操作数据库。下面将为您介绍声明变量和存储过程的操作步骤及示例代码。 声明变量 MySQL 声明变量的语句格式为:SET @var_name = value;。其中 @var_name 为变量名,value 为变量的值。 示例一:声明变量并赋值 SET @user_id = 1; SELE…

    database 2023年5月22日
    00
  • Linux一键部署oracle安装环境脚本(推荐)

    Linux一键部署Oracle安装环境脚本(推荐) 在Linux操作系统上安装Oracle数据库是一项复杂的任务,需要正确配置许多参数和安装依赖项。为了简化这个过程,这里介绍了一种使用一键脚本部署Oracle数据库环境的方法。 1. 下载脚本 首先,从GitHub上下载脚本。可以使用以下命令: git clone https://github.com/lai…

    database 2023年5月22日
    00
  • MySQL中DATE_FORMAT()函数将Date转为字符串

    MySQL中DATE_FORMAT()函数是将DATE类型字段格式化为指定的日期格式。它的语法如下: DATE_FORMAT(date,format) 其中,date是日期值,format是指定的格式化字符串。下面是几个常用的日期格式化代码: 代码 说明 %Y 年(4位数字) %m 月(01~12) %d 日(01~31) %H 小时(00~23) %i 分…

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