MYSQL群集分为同步和异步,同步至少需要3台机器,而异步2台即可。
公司项目需求只有2台电脑,所以我就研究了下2台MYSQL服务器的数据同步。
这种配置是两台机器互为主备的,即在主增加数据会在备自动复制;在备增加数据在主上自动复制。
环境:2台CentOS5虚拟机+mysql5.0.27
1.1 MySQL安装和启动:
# tar zxvf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz -C /usr/local/ # cd /usr/local/ # mv mysql-standard-5.0.27-linux-i686-glibc23 mysql # cd mysql # groupadd mysql # useradd -g mysql mysql #passwd mysql # ./scripts/mysql_install_db --user=mysql # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # /etc/rc.d/init.d/mysqld start
1.1.2 将support-files下面的my-large.cnf复制到/etc/my.cnf里面。
1.2.配置:
1.2.1 IP地址分别为:192.168.0.106(master),192.168.0.107(slave)
1.2.2 将2台机器的防火墙全部关闭。
1.2.3 用telnet测试是否能telnet上两台机器的3306端口。
1.2.4 分别开启两台MYSQL的远程访问功能:
GRANT ALL PRIVILEGES ON *.* TO 'germmy'@'%' IDENTIFIED BY 'germmy' WITH GRANT OPTION;
1.2.5 在192.168.0.106的/etc/my.cnf的[mysqld]段里面的server-id=1注释掉,log-bin=mysql-bin注释掉。
然后添加如下段:
server-id=1 binlog-do-db=adms_db #log-bin=/usr/local/mysql/master-bin.log log-bin=mysql-bin #log-bin-index = /usr/local/mysql/master-log-bin.index #下面启动失败日志,如果配置这个,MYSQL无法启动可以来这里找原因 log-error = /usr/local/mysql/master-error.log #relay-log = /usr/local/mysql/slave-relay.log #relay-log-info-file = /usr/local/mysql/slave-relay-log.info #relay-log-index = /usr/local/mysql/slave-relay-log.index set-variable=max_connections=500 master-host=192.168.0.107 master-user=germmy master-password=germmy master-port=3306 master-connect-retry=60 replicate-do-db=adms_db log-slave-updates
同理,在192.168.0.107的/etc/my.cnf的[mysqld]段里面的server-id=1注释掉,log-bin=mysql-bin注释掉。
然后添加如下段:
server-id=2 binlog-do-db=adms_db log-bin=mysql-bin #log-bin-index = /usr/local/mysql/master-log-bin.index log-error = /usr/local/mysql/master-error.log #relay-log = /usr/local/mysql/slave-relay.log #relay-log-info-file = /usr/local/mysql/slave-relay-log.info #relay-log-index = /usr/local/mysql/slave-relay-log.index set-variable=max_connections=500 master-host=192.168.0.106 master-user=germmy master-password=germmy master-port=3306 master-connect-retry=60 replicate-do-db=adms_db log-slave-updates
1.2.6 在两台机器上建相同的数据库,我这里设的是adms_db;
1.2.7 将2台mysql 全部重启下。
1.2.8 在192.168.0.106上面,执行mysql>show master status :
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000006 | 98 | adms_db | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
可以看到File为mysq-bin.000006,Pition为98,这个先放这里,后面要用。
1.2.9 在192.168.0.107上面,执行mysql>show slave status\G;
*************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.0.106 Master_User: germmy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: Read_Master_Log_Pos: 4 Relay_Log_File: Relay_Log_Pos: 0 Relay_Master_Log_File: Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: adms_db Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 0 Relay_Log_Space: 0 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL 1 row in set (0.00 sec)
可以看到Slave_IO_State为空,Master_Log_File为空,Read_Master_Log_Pos为4,这就表示slave和master还未连接上。
我们在192.168.0.107上作如下操作:
mysql>change master to Master_Log_File='mysql-bin.000006',Master_Log_Pos=98;
注意到:mysql-bin后面是6位数,别搞错了。
这一步有时候会提示你必须关掉slave才能操作,用mysql>slave stop停掉slave。
然后再启动slave即可,mysql>slave start;
2.测试:
2.1 在master机器上新增一个表,再insert一条数据,发现在slave上马上就有了。
同理在slave里新增一条记录,在master上也能看到。
3.缺点:
mysql replication有个缺点就是当master,slave仅有一方挂掉的情况下,那么在仅重启那个挂掉的机器时,数据会自动同步过来,但是如果在挂掉的机器上增加数据时,未挂机器收不到数据,因为挂掉的一方的master_log_file会加1,而未挂的一方却依然使用以前的,此时必须通过手动将未挂一方的改成master_log_file改掉,而在未挂机器开始进数据到你人为去改未挂配置的这段时间内,数据是丢失的。方法见上面change master段。
mysl5.0.27下载地址:在google里面输入: mysql-standard-5.0.27-linux-i686-glibc23.tar.gz 即可。
refurl:http://blog.51yip.com/mysql/357.html
http://ninecloud.blog.51cto.com/1899173/1231047 安装MYSQL步骤
http://blog.chinaunix.net/uid-20524648-id-3949093.html MYSQL安装
http://hi.baidu.com/i1see1you/item/129cd666e587a10ba1cf0fe5 MYSQL集群介绍,很犀利
相关推荐
3. **配置MySQL集群**:根据同步或异步集群的需求,配置数据节点、SQL节点和管理节点。同步集群需要确保所有节点间的通信同步,异步集群则关注数据的最终一致性。 4. **配置LVS负载均衡**:设置LVS调度策略,如轮询...
MySQL集群是一种用于提高数据库服务可用性和性能的技术,它通过分散数据和处理负载来实现这一目标。在本篇文章中,我们将探讨8种不同的MySQL集群方案,分析它们的特点、优缺点以及适用场景。 1. **MySQL主从复制...
MySQL集群最佳解决方案的知识点主要包括MySQL的高可用性解决方案、MySQL复制技术、MySQL集群技术和第三方合作伙伴提供的解决方案。下面将详细阐述这些知识点。 1. MySQL的高可用性解决方案 高可用性(High ...
MySQL集群是指将多个数据库服务器组合起来,共同提供数据库服务的一种架构方式。这种架构方式可以提高数据库的可用性、可扩展性和性能。MySQL集群可以分为多种类型,包括基于存储引擎的集群、基于复制的集群和基于 ...
【MySQL集群方案】 MySQL集群是为了解决数据库服务的高可用性和高性能问题,特别是对于那些对数据一致性有严格要求并且需要处理大量并发读写操作的应用来说,集群是必不可少的架构。集群可以提供冗余和负载均衡,...
MySQL集群是一种高可用性和高可扩展性的数据库解决方案,尤其在Windows环境下,为了保证服务的连续性和数据的一致性,双主双从配置被广泛应用。这种配置模式意味着有两个主节点互相同步,同时各自都有一个从节点进行...
在本压缩包“Linux-Mysql集群Mariadb(三台服务器).zip”中,主要包含的是关于在Linux环境下,特别是Debian和SUSE系统中如何搭建MySQL(更具体地说是MariaDB)集群的资料和文件。MariaDB是MySQL的一个分支,它在...
### MySQL集群部署详解 #### 概述 MySQL集群在企业级应用中扮演着至关重要的角色,尤其是在需要处理大规模数据读写请求的情况下。本文档详细介绍了MySQL异步集群的部署过程,该集群适用于低并发写入但高并发读取的...
MySQL集群是一种高可用性和高可扩展性的解决方案,用于在多个服务器之间分布数据库负载,以确保在单个节点故障时服务不中断。以下是对标题和描述中提到的知识点的详细解释: 1. **MySQL复制**: MySQL复制是将一个...
本篇将详细讲解基于提供的文件名所涵盖的三个关键知识点:MySQL双机集群、MySQL AB Cluster以及MySQL分布式集群部署。 1. MySQL双机集群: 双机集群,也称为主备复制,是一种常见的高可用性解决方案。在这个配置中...
MySQL集群的部署和实现涉及多个步骤,包括配置管理节点、数据节点和SQL节点,以及设置适当的故障检测和恢复机制。在实际操作中,还需要进行负载均衡的配置和测试,确保系统的稳定性和性能。测试方案通常包括模拟不同...
MySQL集群解决方案(主从复制、PXC集群、MyCat、HAProxy) MySQL集群解决方案是指在 MySQL 数据库中实现高可用性和高性能的解决方案。该解决方案主要涉及到主从复制、PXC 集群、MyCat 和 HAProxy 等技术。 主从...
PRM是Percona公司推出的一款开源工具,它的主要目标是提高MySQL集群的可靠性,通过与资源管理器Pacemaker协同工作,提供更高效、自动化的复制管理服务。PRM不仅监控复制链路,还处理故障转移和主库切换,确保数据的...
MySQL集群支持两种主要的复制模式:异步复制和半同步复制。在异步复制中,主节点将事务写入日志后立即返回,而不管从节点是否已经接收并应用。而在半同步复制中,主节点需要等待至少一个从节点确认接收到事务,这...
MySQL 集群可以分为同步集群和异步集群。同步集群(mysql cluster)结构:(data + sql + mgm 节点)特点:内存级别的,对硬件要求较低,但是对内存要求较大。换算比例为:1:1.1;数据同时放在几台服务器上,冗余较...
《47道MySQL数据库集群高频题整理(附答案背诵版).md》是一份专为数据库管理员、开发人员和数据工程师设计的学习资源,涵盖了MySQL数据库集群中最常见和高频的问题。通过系统地整理和解析每一道题目,这份资料旨在...
### Percona 发布 XtraDB 集群增强 MySQL 数据库高可用性 #### 背景概述 Percona 在其举办的 MySQL Conference and Expo 期间宣布了一系列针对 MySQL 相关技术的重大更新。其中最引人注目的是 XtraDB Cluster 的...
MySQL集群高可用组件是构建大型、复杂数据库系统的关键部分,以确保数据的可靠性和服务的不间断性。在本文中,我们将深入探讨MySQL集群中的高可用性解决方案,包括复制技术、故障转移机制、GTID(Global Transaction...
### MySQL数据库集群优缺点分析 #### 一、MySQL数据库集群概念 MySQL数据库集群是指通过一组相互连接的数据库服务器组成的系统,这些服务器共同提供数据服务,旨在提高数据的可用性、可扩展性和性能。集群通常包括...