1.概述
MySQL Master-Slave是指MySQL单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
2.与MySQL Cluster对比
2.1 原理
M-S使用的单向,异步的复制方法。而Cluster采用的是无共享的系统中部署“内存中”数据库的簇。
M-S 是概念上的“同步”,而Cluster是真正意义上的同步,MySQL的Cluster是类似与DB2的无共享集群,易于扩展。
2.2 性能
M-S 倾向与数据的更新与查询的分离,如果master宕机了整个应用就瘫痪了。
Cluster 各个节点是相对独立的任何一个节点宕机都不会影响其他节点的使用。
3.测试服务器环境
节点
|
IP地址
|
Master服务器
|
192.168.130.237
|
Slave1服务器
|
192.168.130.238
|
由一台机器上的vmware提供的2台系统为redhat5 linux的虚拟机(主机环境2003,主机ip地址192.168.130.231)。
4.简单实例
4.1数据库的安装
mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz 多数文档都说下载MySQL-max,但是在超过5.1版本中只提供了mysql-cluster 效果应该一样。(使用非cluster版本的mysql数据库也可以)
根据数据库版本和开发环境的不同,安装方法有很多种,具体方法请访问。
http://dev.mysql.com/doc/refman/5.1/zh/installing.html 本文以二进制包的安装为例。
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
4.2mysql-master-slave的配置
1) 配置/etc/my.cnf
server-id = 1 # master_id
log-bin # = mysql-bin 二进制日志 (文档上加了= mysql-bin,不加也成功了,可能是文件前缀)
binlog_do_db = ibatis #要同步的数据库
2) 创建用于复制的账号。
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slavel'@'192.168.130.%' IDENTIFIED BY '111111';
3) 清空所有表和块写入语句
mysql> FLUSH TABLES WITH READ LOCK;
4) 对主服务器上的数据进行快照
shell> tar -cvf /tmp/mysql-snapshot.tar .
(其中“.”代表当前目录,数据库的存储路径,本例中为:/usr/local/mysql/data/)
5) 复制快照到从服务器中,并覆盖从服务器的data目录。
shell>ftp
ftp>open 192.168.130.238
ftp>用户名
ftp>密码
ftp>put /tmp/mysql-snapshot.tar /tmp/mysql-snapshot.tar (复制到相同目录中)
操作从服务器:
shell>cd /usr/local/mysql/data/
shell> tar -xvf /tmp/mysql-snapshot.tar
6) 当FLUSH TABLES WITH READ LOCK所置读锁定有效时,读取主服务器上当前的二进制日志名和偏移量值,并且记住File和Position的值,设置从服务器时需要。
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
7) 停止用于从服务器的服务器并在其my.cnf文件中添加下面的行:
[MYSQLD]
server-id = 2 # 如果多个服务器则需要保持id唯一。
master-user=slave1
master-password=111111
master-port=3306
master-host=192.168.130.237
master-connect-retry=60 # 当前连接不可用时,每隔多少秒进行一次重试。
replicate-do-db=ibatis #复制的库名。
8) 启动从服务器。(确保服务器对data目录有读写权限)
9) 根据实际情况完成下面语句并且在从服务器上执:
Mysql>CHANGE MASTER TO MASTER_HOST='192.168.130.237', MASTER_USER='slave1', MASTER_PASSWORD='111111',MASTER_LOG_FILE='sql199-bin.000001',MASTER_LOG_POS =107;
10)启动master服务器。
5.测试
1) master跟slave网络及服务都正常情况下,由master端变化数据后,到slave端浏览数据,检视是否有进行replication?!
2) 模拟slave当机,或是slave不一定需要一直跟master有连接.将由master端变化数据后,到slave端浏览数据,slave点应该是没有数据变化的在其他存储节点和sql节点上重复上述操作。
分享到:
相关推荐
5. **启动复制**:在从服务器上,使用`START SLAVE`命令启动复制进程。此时,从服务器将开始读取主服务器的binlog并执行相应的SQL语句。 二、主从复制工作原理 1. **写操作**:在主服务器上,任何数据修改都会被...
此资源为shardingsphere 调研...内容:一个master mysql docker实例,一个slave docker实例 内置3个库,mydb,mydb0,mydb1。仅开启了这三个库的主从。如果三个库主从不够用,自行配置。 使用:1.解压 2.执行build.sh
MySQL的主主复制(Master-Master Replication)是一种高可用性解决方案,它允许两个或多个数据库服务器互相复制数据,形成一个集群。在这种模式下,每个节点既是主节点,也是从节点,可以接受读写操作。当一个节点...
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave mysql容器配置配置Dockerfile设置server_id,一般设置为
linux中shell脚本,用于监控mysql主从并且调用webservice接口发送短信
Docker MySQL主从复制 ======================== 使用Docker进行MySQL主从复制 跑 要运行此示例,您将需要在启动安装程序复制后使用“ docker-compose”启动容器。请参阅./build.sh中的命令。 创建2个具有基于主从行...
MySQL主从复制是一种异步复制机制,主要分为三个角色:主服务器(Master)、从服务器(Slave)和复制线程。主服务器负责处理客户端的写请求,并将更改记录到二进制日志(binlog)。从服务器通过IO线程拉取主服务器的...
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs This error generally occur when we clone the master to slaver. Delete auto.cnf of mysql, and then ...
MySQL的Master-Slave架构是一种常见的数据库高可用性和负载均衡解决方案。它允许数据从一个主服务器(Master)实时同步到一个或多个从服务器(Slave)。在这种架构中,所有的写操作都在主服务器上执行,而从服务器则...
MySQL集群内的5台服务器(master1,master2,slave1,slave2,monitor)均需安装MySQL-MMM软件依赖包,软件包由讲师提供。 - **安装 Log-Log4perl 类** ```bash [root@mysql-master1 ~]# rpm -ivh perl-Log-Log4...
使用allen老师的hub镜像制作自己的mysql主从 --------- docker pull xiaochunping/mysql-master; docker pull xiaochunping/mysql-slave; -- cnetos docker run ,把my.cnf和data...mkdir -p /home/mysql/slave-data
1. **环境准备**:假设已经搭建好了一台主数据库(mysql-master)和一台从数据库(mysql-slave),并且完成了基本的主从复制配置。 2. **安装mysql-proxy所需的依赖**: - **安装Lua**:mysql-proxy需要Lua脚本来...
Sharding-JDBC教程:Spring Boot2.0以上整合Sharding-JDBC实现分库分表+读写分离,Mysql数据库主从搭建:https://blog.csdn.net/forezp/article/details/94173427
return "master" else return "slave" end end ``` 配置完成后,启动 MySQL Proxy 服务: ```bash /path/to/mysql-proxy --defaults-file=/path/to/your/mysql-proxy.conf ``` 现在,MySQL Proxy 已经开始...
Master-Slave的数据库机构解决了很多问题,特别是read/write比较高的web2.0应用: 1、写操作全部在Master结点执行,并由Slave数据库结点定时(默认60s)读取Master的bin-log 2、将众多的用户读请求分散到更多的...
slave-skip-errors=1062 ``` - 从节点还需要获取主节点的二进制日志文件名和位置,这通常通过`SHOW MASTER STATUS;`命令在主节点上获取。 - 在从节点上执行`CHANGE MASTER TO`命令开始复制。 ```sql CHANGE ...
其中,MYSQL-A 就是主服务器,即 master,MYSQL-B 就是从服务器,即 slave。 在 MySQL 的主从复制机制中,日志系统 A 是 MYSQL 的日志类型中的二进制日志,也就是专门用来保存修改数据库表的所有动作,即 bin log。...
MySQL-MM (Multi-Master Replication Manager) 是一种用于MySQL数据库的高可用性和负载均衡解决方案,它支持多主复制,允许数据在多个主节点之间双向同步。以下是对MySQL-MMM安装的详细步骤和基本配置的说明。 首先...