Mysql主从方案介绍
mysql主从方案主要作用:
读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
发扬不同表引擎的优点。目前Myisam表的查询速度比innodb略快,而写入并发innodb比myIsam要好。那么,我们可以使用innodb作为master,处理高并发写入,使用master作为slave,接受查询。或在myisam slave中建立全文索引,解决innodb无全文索引的弱点。
热备,slave和master的数据“准实时”同步。
准备工作。先分别安装两台MYSQL。
系统环境:
OS:RHEL5.4
主:192.168.10.197
从:192.168.10.198
1、mysql 的安装这里就不介绍了,详见安装文档。
2、my.cnf配置
a、配置MASTER
点击(此处)折叠或打开
- [client]
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- port = 3306
- socket = /tmp/mysql.sock
- basedir=/usr/local/mysql
- datadir=/home/mysqldata
- log-slow-queries=slow_query.txt
- log-bin=mysql-bin197
- long_query_time=2
- skip-locking
- skip-name-resolve
- skip-innodb
- bind-address=192.168.10.197
- max_allowed_packet = 256M
- query_cache_size=256M
- max_connections=2000
- max_connect_errors=10000
- key_buffer_size=6000M
- read_buffer_size=32M
- read_rnd_buffer_size = 32M
- myisam_sort_buffer_size=256M
- tmp_table_size=512M
- old-passwords
- interactive_timeout=60
- wait_timeout=60
- connect_timeout=120
- table_cache=8192
- thread_cache_size=256
- sort_buffer_size=64M
- back_log = 500
- thread_concurrency=32
- server-id=1
- log-bin=mysql-bin240
- binlog-do-db=phpcmsv9
- binlog-ignore-db=mysql
- expire_logs_days=10
- [mysqldump]
- quick
- max_allowed_packet = 1024M
- [mysql]
- no-auto-rehash
- [isamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [myisamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [mysqlhotcopy]
- interactive-timeout
注释:红色是修改的部分。
其中,作为主机,server-id必须为1.
binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。
重启master数据库,运行检查:
点击(此处)折叠或打开
- mysql> show master status; #检查是否以master形式启动了。
- +---------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +---------------------+----------+--------------+------------------+
- | mysql-bin240.000001 | 2342775 | phpcmsv9 | mysql |
- +---------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
- mysql> show variables like "%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin | ON
在master上为slave建立用户
点击(此处)折叠或打开
- mysql> grant replication slave, reload, super on *.* to 'backup'@'192.168.10.198' identified by '123';
这样,主机配置完毕。
b、slave配置
点击(此处)折叠或打开
- [client]
- port = 3306
- socket = /tmp/mysql.sock
- [mysqld]
- port = 3306
- socket = /tmp/mysql.sock
- basedir=/usr/local/mysql
- datadir=/home/mysqldata
- log-slow-queries=slow_query.txt
- log-bin=mysql-bin198
- long_query_time=2
- skip-locking
- bind-address=192.168.10.198
- skip-name-resolve
- skip-innodb
- max_allowed_packet = 256M
- query_cache_size=256M
- max_connections=2000
- max_connect_errors=10000
- key_buffer_size=6000M
- read_buffer_size=32M
- read_rnd_buffer_size = 32M
- myisam_sort_buffer_size=256M
- tmp_table_size=512M
- old-passwords
- interactive_timeout=60
- wait_timeout=60
- connect_timeout=120
- table_cache=8192
- thread_cache_size=256
- sort_buffer_size=64M
- back_log = 500
- thread_concurrency=8
- server-id=2
- master-host=192.168.10.197
- master-user=backup
- master-password=123
- master-port=3306
- replicate-do-db=phpcmsv9
- replicate-ignore-db=mysql
- master-connect-retry=60
- expire_logs_days=10
- [mysqldump]
- quick
- max_allowed_packet = 1024M
- [mysql]
- no-auto-rehash
- [isamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [myisamchk]
- key_buffer = 1024M
- sort_buffer_size = 32M
- read_buffer = 2M
- write_buffer = 2M
- [mysqlhotcopy]
- interactive-timeout
注释:红色部分为修改的地方
1.启动主服务器和从服务器服务,在从服务器192.168.17.2上使用命令slave start启动复制;
2.随便使用命令show slave status;
如果出现主从复制报错了
点击(此处)折叠或打开
- mysql> show slave status \G;
- *************************** 1. row ***************************
- Slave_IO_State: Connecting to master
- Master_Host: 192.168.10.197
- Master_User: backup
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql-bin240.000001
- Read_Master_Log_Pos: 2342431
- Relay_Log_File: localhost-relay-bin.000001
- Relay_Log_Pos: 4
- Relay_Master_Log_File: mysql-bin240.000001
- Slave_IO_Running: No
- Slave_SQL_Running: Yes
- Replicate_Do_DB: phpcmsv9
- Replicate_Ignore_DB: mysql
- 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: 2342431
- Relay_Log_Space: 106
- 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
- Master_SSL_Verify_Server_Cert: No
- Last_IO_Errno: 1130
- Last_IO_Error: error connecting to master 'backup@192.168.10.197:3306' - retry-time: 60 retries: 86400
- Last_SQL_Errno: 0
- Last_SQL_Error:
- 1 row in set (0.00 sec)
- ERROR:
- No query specified
这是由于MASTER没有赋予权限的关系
3在从服务器192.168.17.2运行slave stop;停止复制命令
4输入
点击(此处)折叠或打开
- mysql>CHANGE MASTER to MASTER_HOST='192.168.15.197', MASTER_PORT=3306, MASTER_USER='backup', MASTER_PASSWORD='123', MASTER_LOG_FILE=’mysql-bin240.000001';, MASTER_LOG_POS=2342775;
5然后重新启动slave start 命令后
点击(此处)折叠或打开
- mysql> show slave status \G;
- *************************** 1. row ***************************
- Slave_IO_State: Waiting for master to send event
- Master_Host: 192.168.10.197
- Master_User: backup
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql-bin240.000001
- Read_Master_Log_Pos: 2342775
- Relay_Log_File: localhost-relay-bin.000002
- Relay_Log_Pos: 598
- Relay_Master_Log_File: mysql-bin240.000001
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Replicate_Do_DB: phpcmsv9
- Replicate_Ignore_DB: mysql
- 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: 2342775
- Relay_Log_Space: 757
- 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: 0
- Master_SSL_Verify_Server_Cert: No
- Last_IO_Errno: 0
- Last_IO_Error:
- Last_SQL_Errno: 0
- Last_SQL_Error:
- 1 row in set (0.00 sec)
- ERROR:
- No query specified
在从库192.168.17.2 select查询,发现后面插入的两条语句已经同步过来了,随后继续插入测试没有发现问题。
相关推荐
keepalived是一款高可用性解决方案,可以实现虚拟IP的管理和服务监控,在mysql主从复制环境中使用keepalived可以实现自动切换,提高系统的可用性和可靠性。 Keepsalived概述 keepalived是一款开源的高可用性解决...
在本讲中,我们将深入探讨如何使用SpringBoot与MySQL实现主从复制以及读写分离的架构设计。这一技术方案在大型分布式系统中尤为常见,它能够有效地提高数据库系统的可用性和性能。 首先,让我们理解主从复制的核心...
下面我们将深入探讨MySQL主从数据库配置的两大核心优势——实现服务器负载均衡和通过复制实现数据的异地备份。 **一、实现服务器负载均衡** 在MySQL主从架构中,负载均衡是通过在主服务器和从服务器之间分配工作...
MySQL主从复制是一种数据复制技术,它能够实现在多个服务器之间复制数据。通常包括一个主服务器(Master)和一个或多个从服务器(Slave)。在主从复制模式中,所有写操作都在主服务器上进行,而读操作则可以在从...
MySQL主从复制模式是数据库领域内一种重要的数据同步机制,它能够让一台主数据库服务器(master)的数据实时复制到一个或多个从数据库服务器(slave)上。这种机制在数据库的高可用性、数据备份、读写分离以及负载...
为了提高数据库系统的可靠性和响应速度,许多企业会采用MySQL主从互备(Master-Slave Mutual Backup)方案。这种架构不仅可以实现实时的数据备份,还能在主服务器出现故障时迅速切换至备用服务器,从而减少服务中断...
- **配置MySQL主从复制**: - 在主节点上创建复制用户并授权。 - 配置从节点连接主节点的信息。 - 启动从节点的复制进程,并验证复制是否正常工作。 #### 故障恢复 当系统出现故障时,能够快速准确地恢复服务至...
MySQL主从镜像是数据库高可用性和数据冗余的一种常见实现方式,它允许数据在主服务器(Master)上被写入并同步到从服务器(Slave)。当主服务器出现故障时,可以快速将从服务器切换为新的主服务器,确保服务的连续性...
MySQL主从同步是一种数据库复制技术,它允许数据从一个MySQL服务器(称为“主服务器”)实时复制到另一个或多个服务器(称为“从服务器”)。这种配置对于数据备份、负载均衡和高可用性至关重要。在Java开发中,了解...
### MySQL主从配置操作详解 #### 一、MySQL服务器复制配置背景 MySQL的主从复制是一种常见的高可用性和数据冗余解决方案。通过设置一个主服务器(Master)和一个或多个从服务器(Slave),可以实现数据的实时同步...
为了提高系统的整体性能和可靠性,采用MySQL主从配置成为一种常见的解决方案。 - **减少IO操作**:通过将读写操作分散到不同的服务器上,可以有效降低单个服务器的负载,减少I/O操作,从而提高系统的响应速度和处理...
MySQL主从备份是一种高可用性解决方案,通过复制主服务器的数据到从服务器,实现数据的冗余和故障切换。主要包含以下几个步骤: 1. **配置复制环境**:在主服务器上设置binlog(二进制日志),记录所有改变数据库的...
为了实现MySQL主从复制的主备自动切换,本方案采用了一种典型的双机热备架构。在该架构中,两台服务器分别被配置为主服务器(Master)和从服务器(Slave)。当主服务器出现故障时,Keepalived会监测到这一变化,并...
#### 一、MySQL主从同步基本流程 在MySQL中,主从同步是一种常见的数据复制机制,用于在多个数据库服务器间保持数据的一致性。通常,一个主服务器负责接收客户端的写操作请求,并将这些更改记录到二进制日志(Binary...
MySQL主从复制是一种数据库高可用性和数据冗余的解决方案,它允许数据从一个服务器(主节点)实时同步到另一个或多个服务器(从节点)。这种架构能够实现读写分离,提高系统的读取性能,并且在主节点出现故障时,...
MySQL主从复制与读写分离是数据库架构中的重要策略,旨在提高系统的可用性、扩展性和数据安全性。在大型系统中,随着数据量的增长和访问压力的增加,单一数据库服务器往往无法满足性能需求。主从复制和读写分离是...
综上所述,通过理解MySQL主从同步的基本原理、识别潜在的问题,并采取相应的解决方案,可以有效提升系统的稳定性和性能。无论是采用多线程更新还是引入Transfer这样的工具,都能够显著改善主从同步的效率。