`

mysql主从复制

阅读更多
mysql主从同步
===================== MASTER(主数据库操作) =====================

ubunt linux:

1.修改mysql配置文件 my.cnf:

[mysqld]

#修改主数据server-id和启用bin-log
server-id		= 1
log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size         = 100M

2.查看log-bin是否启用成功: ON为开启状态

mysql> show variables like 'log%';
+---------------------------------+--------------------------+
| Variable_name                   | Value                    |
+---------------------------------+--------------------------+
| log                             | OFF                      |
| log_bin                         | ON                       |
| log_bin_trust_function_creators | OFF                      |
| log_error                       | /var/log/mysql/error.log |
| log_output                      | FILE                     |
| log_queries_not_using_indexes   | OFF                      |
| log_slave_updates               | OFF                      |
| log_slow_queries                | OFF                      |
| log_warnings                    | 1                        |
+---------------------------------+--------------------------+

3.授权Slave同步用户
mysql> grant replication slave on *.* to 'admin'@'%' identified by 'admin';

4.查看Master状态(日志文件和日志位置)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000200 |  1933734 |              |                  |
+------------------+----------+--------------+------------------+

===================== SLAVE(从数据库操作) =====================

1.修改Master数据库IP,用户名,密码,日志文件,文件当前位置

mysql> change master to master_host='192.168.4.127',master_user='admin',master_password='admin',
master_log_file='mysql-bin.000200',master_log_pos=1890742;

2.导出主数据库的文件,然后倒入从数据库

3.启动主从同步

mysql> start slave;

4.查看slave状态

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: xxx.xx.xx.xx
                  Master_User: xxxxx
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: binlog.000007
          Read_Master_Log_Pos: 628
               Relay_Log_File: AFODY-604201049-relay-bin.000003
                Relay_Log_Pos: 593
        Relay_Master_Log_File: binlog.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

注意:Slave_IO_Running,Slave_SQL_Running: 都为YES时才是正确的
主从同步最好使用相同的数据库版本,我测试了一下,使用 master 版本为 5.5.*
slave 版本为 5.7.* 会出现 Slave_IO_Running: NO 因为 5.6有增加了一个 server-uuid 属性
旧版本没有这个属性,所以出问题了,这个问题折腾我半个小时....


===================== 测试 =====================
1.进入主数据库

mysql> create database dog;
Query OK, 1 row affected (0.08 sec)

2.进入从数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dog                |
| jcticket           |
| mysql              |
| performance_schema |
| sys                |
| test               |
| ticket             |
+--------------------+
8 rows in set (0.00 sec)

==================== SUCCESS ==================== 









  

 

 

 

环境与配置

  系统:CentOS6.5

  Master:172.16.19.2

  Slave:172.16.19.24

  mysql-proxy:172.16.19.14

  安装就不说了,基本都是yum install进行安装的。下图是基本的架构图(忘了从哪里扒拉出来的了,感谢作者)。

主从复制的实现

  主从复制的实现极其简单,只需要改一下vim /etc/my.cnf。

  Master的配置:

vim /etc/my.cnf
log-bin=mysql-bin   #新增
server-id=1              #新增

  配置完之后,重启mysql,然后执行如下指令:

复制代码
master:mysql> grant replication slave on *.* to 'root'@'%' identified by '123456';
然后执行show master status
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 261 | | |
+------------------+----------+--------------+------------------+
复制代码

  用脑袋或者纸笔记录一下File以及Positin,在这里是mysql-bin.000005以及261。

  Slave的配置:

1 vim /etc/my.cnf
2 log-bin=mysql-bin   #新增
3 server-id=2             #新增  server-id不能一样

  同样的,配置完成之后需要重启mysql服务,然后执行如下指令:

mysql> change master to master_host='172.16.19.2',master_user='root',
master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=261;
mysql> start slave;

  接下来,查看slave的状态,查看是否配置成功:

复制代码
 1 show slave status\G
 2 ==============================================
 3 **************** 1. row *******************
 4 Slave_IO_State:
 5 Master_Host: 172.16.19.2
 6 Master_User: rep1
 7 Master_Port: 3306
 8 Connect_Retry: 60
 9 Master_Log_File: mysql-bin.000005
10 Read_Master_Log_Pos: 261
11 Relay_Log_File: localhost-relay-bin.000008
12 Relay_Log_Pos: 561
13 Relay_Master_Log_File: mysql-bin.000005
14 Slave_IO_Running: YES
15 Slave_SQL_Running: YES
16 Replicate_Do_DB:
17 ……………省略若干……………
18 Master_Server_Id: 1
19 1 row in set (0.01 sec)
20 ==============================================
复制代码

  其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

主从复制的测试

  先查看主服务器Master:

  

  然后创建一个数据库,y:

  接着去从服务器slave查看,会发现从服务器也有了y数据库。至此数据库的主从复制就实现了。有点晚了,至于说读写分离就下次再说吧

分享到:
评论

相关推荐

    MySQL主从复制搭建从入门到掌握

    ### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高...

    MySQL主从复制与读写分离.docx

    MySQL 主从复制与读写分离 MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器中,以实现数据的高可用性和读写分离。下面是 MySQL 主从复制与读写分离的详细知识点: MySQL 主从复制 ...

    MySQL 主从复制模式全面实践

    MySQL主从复制模式是数据库领域内一种重要的数据同步机制,它能够让一台主数据库服务器(master)的数据实时复制到一个或多个从数据库服务器(slave)上。这种机制在数据库的高可用性、数据备份、读写分离以及负载...

    mysql 主从复制环境搭建

    MySQL 主从复制环境搭建 MySQL 是一个轻量级的开源框架,具有速度快、多线程、多用户和跨平台等特点。MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,通常用于提高数据安全、负载...

    MySQL主从复制.docx

    ### MySQL 主从复制详解 #### 一、引言 MySQL 的主从复制是一种常见的数据库架构模式,它能够帮助实现数据的自动备份与读写分离,从而增强数据安全性并提高数据库性能。本文将详细介绍 MySQL 主从复制的基本概念、...

    MySQL主从复制模式全面实践

    MySQL主从复制是一种数据库高可用性和数据冗余的重要机制,它允许数据从一个服务器(主节点)同步到一个或多个其他服务器(从节点)。在本实践中,我们将深入探讨这一模式的各个方面,包括其工作原理、配置步骤、...

    MySQL主从复制搭建 需要用到的脚本

    MySQL主从复制是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间同步,确保即使在主服务器故障时,从服务器也能接管服务,从而实现无中断的服务连续性。这里提到的“MySQL主从复制搭建 需要...

    SpringBoot第 12 讲:SpringBoot+MySQL主从复制、读写分离

    在本讲中,我们将深入探讨如何使用SpringBoot与MySQL实现主从复制以及读写分离的架构设计。这一技术方案在大型分布式系统中尤为常见,它能够有效地提高数据库系统的可用性和性能。 首先,让我们理解主从复制的核心...

    MySQL主从复制与读写分离

    MySQL主从复制与读写分离是数据库架构中的重要策略,旨在提高系统的可用性、扩展性和数据安全性。在大型系统中,随着数据量的增长和访问压力的增加,单一数据库服务器往往无法满足性能需求。主从复制和读写分离是...

    MYsql主从复制.docx

    "Mysql主从复制" Mysql主从复制是一种常用的数据库复制方式,旨在提高数据库的可用性、安全性和读取性能。在Mysql主从复制中,一个数据库服务器充当主服务器,其他服务器充当从服务器。主服务器负责写入数据,而从...

    Docker搭建MySQL主从复制(docker-compose)

    docker_compose搭建mysql主从复制

    docker-compose关于mysql主从复制一键搭建脚本

    关于博客: https://blog.csdn.net/qq_42413011/article/details/126914080 的搭建脚本

    mysql主从复制+lvs与keepalived实现负载高可用

    MySQL主从复制是数据库高可用性的一种常见策略,它允许数据在多个服务器之间实时或近实时地同步。这种配置使得当主服务器发生故障时,从服务器可以接管服务,确保业务连续性。在这个场景中,主机A(192.168.5.171)...

    MySQL主从复制-主库已有数据的解决方案.docx

    MySQL 主从复制主库已有数据的解决方案 在 MySQL 主从复制中,主库可能已经运行了一段时间,并且已经有了数据,这种情况在实际业务中很常见。这时,如何应对开启主从复制前主库有数据的场景?本文将介绍两种解决...

    mysql主从复制搭建(避免采坑)

    mysql主从复制 踩完坑给大家 3分 完整,让大家少踩坑.

Global site tag (gtag.js) - Google Analytics