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

yizhihongxing

下面是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日

相关文章

  • SQL Server中聚合函数的用法

    SQL Server中聚合函数的用法 简介 SQL Server中提供了多种聚合函数,可以对表中数据进行统计计算,返回汇总结果。常用的聚合函数有 COUNT、SUM、AVG、MAX、MIN 等。聚合函数只能用于 SELECT 语句中,且只能用于针对列的计算,不支持对行的计算。 聚合函数的语法规则 聚合函数的基本语法模式如下: 聚合函数名([ALL | DIS…

    database 2023年5月21日
    00
  • ADO,OLEDB,ODBC,DAO,RDO的区别说明

    ADO、OLEDB、ODBC、DAO、RDO都是与数据库进行操作的编程库或接口,它们在实现上都有所不同。下面对各个库的特点进行详细说明: ADO(ActiveX Data Objects) ADO是微软公司推出的用于访问各种数据库的一种数据访问技术和接口,它提供了面向对象的数据访问方式,应用广泛,支持多种数据源,并且对 ADO 提供的对象模型进行封装,使用较…

    database 2023年5月19日
    00
  • suse11安装mysql5.7

    下载地址http://mirrors.sohu.com/mysql/MySQL-5.7/ 1、     wget -c  http://mirrors.sohu.com/mysql/MySQL-5.7/MySQL-server-5.7.23-1.sles11.x86_64.rpm             wget -c  http://mirrors.soh…

    MySQL 2023年4月13日
    00
  • JavaWeb三大组件之一的Filter详解

    JavaWeb三大组件之一的Filter详解 Filter是JavaWeb三大组件之一,它的作用是过滤请求并对请求做出必要的处理,例如,对于某些请求需要进行权限验证、日志记录等处理,这个时候Filter就可以派上用场了。本文将详细讲解Filter的使用方式和常用的应用场景。 一、Filter的使用方式 1.1 定义Filter类 可以通过实现javax.se…

    database 2023年5月22日
    00
  • Redis持久化机制实现原理和流程

    Redis持久化机制实现原理和流程 Redis是一种高性能的键值存储数据库,在实际应用中,数据的持久化是非常重要的。为了防止数据丢失,在Redis中提供了两种持久化机制来保证数据的持久化,它们分别是:RDB快照和AOF日志。 RDB快照 RDB是Redis的一种快照持久化机制,通过将内存中的数据快照存储到硬盘上,实现数据的持久化。当然,这种持久化机制会根据用…

    database 2023年5月22日
    00
  • ORACLE大批量插入数据的详细步骤

    下面是ORACLE大批量插入数据的详细步骤: 一、使用INSERT INTO语句进行大批量插入 1.创建目标表 首先,需要创建要插入数据的目标表。可以使用CREATE TABLE语句创建表,例如以下代码: CREATE TABLE my_table ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2.准备数据 接下…

    database 2023年5月21日
    00
  • 高版本Mysql使用group by分组报错的解决方案

    下面是详细的“高版本MySQL使用GROUP BY分组报错的解决方案”攻略。 问题描述 在高版本的MySQL(如MySQL5.7、MySQL8.0)中,对数据进行分组时,可能会出现以下报错信息: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated …

    database 2023年5月18日
    00
  • 解决秒杀活动高并发出现负库存(Redis)

    商城在秒杀活动开始时,同时有好多人来请求这个接口,即便做了判断库存逻辑,也难免防止库存出现超卖,造成损失 Django中的ORM本身就对数据库做了防范,但再过亿级访问也扛不住 下面利用Redis的过载防止负库存 #使用REDIS 阻止秒杀时并发状态造成的负库存 import redis #定义过载 def limit_handler(): r = redis…

    Redis 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部