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数据库。至此数据库的主从复制就实现了。有点晚了,至于说读写分离就下次再说吧
相关推荐
"使用keepalived实现对mysql主从复制的主备自动切换" 本文主要讲解如何使用keepalived实现对mysql主从复制的主备自动切换。keepalived是一款高可用性解决方案,可以实现虚拟IP的管理和服务监控,在mysql主从复制...
### MySQL主从复制搭建知识点详解 #### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高...
MySQL 主从复制与读写分离 MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器中,以实现数据的高可用性和读写分离。下面是 MySQL 主从复制与读写分离的详细知识点: MySQL 主从复制 ...
MySQL主从复制模式是数据库领域内一种重要的数据同步机制,它能够让一台主数据库服务器(master)的数据实时复制到一个或多个从数据库服务器(slave)上。这种机制在数据库的高可用性、数据备份、读写分离以及负载...
MySQL 主从复制环境搭建 MySQL 是一个轻量级的开源框架,具有速度快、多线程、多用户和跨平台等特点。MySQL 主从复制是指将一个 MySQL 服务器的数据实时同步到另一个 MySQL 服务器上,通常用于提高数据安全、负载...
### MySQL 主从复制详解 #### 一、引言 MySQL 的主从复制是一种常见的数据库架构模式,它能够帮助实现数据的自动备份与读写分离,从而增强数据安全性并提高数据库性能。本文将详细介绍 MySQL 主从复制的基本概念、...
MySQL主从复制是一种数据库高可用性和数据冗余的重要机制,它允许数据从一个服务器(主节点)同步到一个或多个其他服务器(从节点)。在本实践中,我们将深入探讨这一模式的各个方面,包括其工作原理、配置步骤、...
MySQL主从复制是一种常见的数据库高可用性和数据冗余策略,它允许数据在多个服务器之间同步,确保即使在主服务器故障时,从服务器也能接管服务,从而实现无中断的服务连续性。这里提到的“MySQL主从复制搭建 需要...
在本讲中,我们将深入探讨如何使用SpringBoot与MySQL实现主从复制以及读写分离的架构设计。这一技术方案在大型分布式系统中尤为常见,它能够有效地提高数据库系统的可用性和性能。 首先,让我们理解主从复制的核心...
MySQL主从复制与读写分离是数据库架构中的重要策略,旨在提高系统的可用性、扩展性和数据安全性。在大型系统中,随着数据量的增长和访问压力的增加,单一数据库服务器往往无法满足性能需求。主从复制和读写分离是...
"Mysql主从复制" Mysql主从复制是一种常用的数据库复制方式,旨在提高数据库的可用性、安全性和读取性能。在Mysql主从复制中,一个数据库服务器充当主服务器,其他服务器充当从服务器。主服务器负责写入数据,而从...
docker_compose搭建mysql主从复制
关于博客: https://blog.csdn.net/qq_42413011/article/details/126914080 的搭建脚本
MySQL主从复制是数据库高可用性的一种常见策略,它允许数据在多个服务器之间实时或近实时地同步。这种配置使得当主服务器发生故障时,从服务器可以接管服务,确保业务连续性。在这个场景中,主机A(192.168.5.171)...
MySQL 主从复制主库已有数据的解决方案 在 MySQL 主从复制中,主库可能已经运行了一段时间,并且已经有了数据,这种情况在实际业务中很常见。这时,如何应对开启主从复制前主库有数据的场景?本文将介绍两种解决...