最近线上服务器做了迁移,要做mysql主从,特意学习并记录下。
注:如果刚开始不是主从架构,主库单独跑了一段时间后要改为主从,那需要保证数据库data一致。
1. 主库编辑my.cnf
[mysqld] log-bin=mysql-bin server-id=1 #配一个唯一的ID编号,(2-2的32次幂)-1。 #设置要进行或不要进行主从复制的数据库名,同时也要在 Slave 上设定。 #binlog-do-db=数据库名1 #binlog-do-db=数据库名2 #binlog-ignore-db=数据库名1 #binlog-ignore-db=数据库名2 binlog-do-db=testdb
重启mysql 服务后,连接数据库。
mysql> grant replication slave on *.* to slaveuser@192.168.1.2 identified by '123456' ; mysql> flush privileges; mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000016 | 120 | testdb | | +------------------+----------+--------------+------------------+
记录下二进制日志的文件名及位置。
2. 从库编辑my.cnf
[mysqld] server-id=2 #唯一 #设置要进行或不要进行主从复制的数据库名,同时也要在 Master 上设定。 #replicate-do-db=数据库名1 #replicate-do-db=数据库名2 #replicate-ignore-db=数据库名1 #replicate-ignore-db=数据库名2 replicate-do-db=testdb
重启mysql 服务后,连接数据库。
mysql> change master to master_host='192.168.1.1',master_user='slaveuser',master_password='123456', master_log_file='mysql-bin.000016',master_log_pos=120; mysql> start slave; mysql> show slave status\G;
如显示如下,则成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_Db: testdb
3. Mysql主备复制实现工作原理
从上图来看,复制分成三步:
- master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
- slave将master的binary log events拷贝到它的中继日志(relay log);
- slave重做中继日志中的事件,将改变反映它自己的数据。
附一些问题的解决过程:
1). error:“/usr/sbin/mysqld: unknown variable 'master-host=10.1.4.154'”
原因是MySQL自5.1.7版本之后不支持master-host 类似的参数,需要在从库上执行:
change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';
slave start;
2). slave status: "Slave_IO_Running:No"
解决方法: Mysql > stop slave; Mysql > set global sql_slave_skip_counter =1 ; Mysql > start slave;
3). Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
对照master status 确认log文件及position数据是否正确。
4). Slave can not handle replication events with the checksum that master is configured to log
这个错误一般出现在master5.6,slave在低版本的情况下。这是由于5.6使用了crc32做binlog的checksum。除了把master的设置从crc32改到none
binlog-checksum = none [my.cnf]
5). 在SLAVE执行CHANGE MASTER时,出现ERROR 1201 (HY000): Could not initialize master!
mysql> slave stop; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='updatelog.000004',master_log_pos=106; ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log
修正问题:
mysql> slave stop; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> reset slave; Query OK, 0 rows affected,(0.00 sec) mysql> change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='updatelog.000004',master_log_pos=106; Query OK, 0 rows affected (0.05 sec) mysql> slave start; Query OK, 0 rows affected (0.00 sec)
6). 主从复制binlog问题,如果没有删除的配置,则会无限增长,严重占用磁盘空间。
expire_logs_days = 30 #有效期30天,之前的会被删除
7). 如果主数据库服务器已经存在用户数据,那么在进行主从复制时,需要做以下处理。
(1)主数据库锁表操作,不让数据再进行写入动作。 mysql>flush tables with read lock; (2)查看主数据库的状态 mysql>show master status; 记下File以及Position的值,以备从服务器使用。 (3)把主服务器的数据文件复制到从服务器,最好先用tar归档压缩处理一下 (4)取消主数据库锁定 mysql>unlock tables; 从服务器的操作和前面的步骤一样,略过。
相关推荐
### 配置 MySQL 5.5 主从服务器详解 #### 一、背景介绍 在数据库管理与维护过程中,为了提高数据安全性和系统可用性,通常会采用 MySQL 的主从复制技术来实现数据冗余和负载分担。本文将详细介绍如何在两台服务器...
MySQL 5.5 在 Windows 上的主从配置是一项重要的数据库管理任务,用于实现数据的冗余和高可用性。在这个过程中,我们需要设置一个主服务器(Master)和一个或多个从服务器(Slave),主服务器负责处理写操作,而从...
总的来说,MySQL主从备份涉及多个步骤,包括用户权限设置、配置文件修改、同步位置设定以及错误排查。正确配置和管理这些环节是实现可靠数据复制的关键。在实际操作中,应仔细检查每个步骤,确保主从服务器之间的...
通过本示例,我们可以了解 MySQL 5.5源码主从复制的搭建过程,并掌握相关的配置和命令。这种架构可以用于生产环境,以提高数据的高可用性和实时备份。 knowledge points: 1. MySQL 5.5源码主从复制搭建的基本概念...
MySQL 5.5主从同步配置是数据库集群中常见的高可用性和负载均衡方案,通过将主服务器的数据变更实时同步到从服务器,实现读写分离,提高系统整体性能。以下是详细的配置步骤: 首先,在主服务器(10.1.123.197)上...
MySQL 5.5是MySQL数据库管理系统的一个重要版本,它在性能、稳定性以及功能上都有显著提升,对于初学者来说,了解其配置文件的详细信息至关重要。MySQL的配置文件,通常称为`my.cnf`或`my.ini`,是控制数据库服务器...
MySQL 5.5 源码主从复制搭建是一个复杂的过程,尤其在同一台机器上创建两个实例(3306 和 3307),这涉及到数据库的配置、日志同步以及实例间的通信。以下是对这个过程的详细解释: 1. **配置主库(3306 实例)** ...
5. **复制功能改进**:在MySQL 5.5中,主从复制支持半同步复制模式,确保了数据的一致性。此外,复制日志格式从Binary Log升级到Row-based Replication,减少了数据冲突的可能性。 6. **安全性和审计**:MySQL 5.5...
MySQL 5.5提供了主从复制功能,用于数据备份和高可用性。通过设置多个副本,可以实现故障切换和负载均衡。此外,还有如Galera Cluster这样的多主复制解决方案,提供更高级别的数据同步和高可用性。 10. **性能优化...
9. **复制与集群**:MySQL支持主从复制,实现数据冗余和高可用性。还有NDB Cluster(内存集群)提供高可用性和水平扩展。 10. **性能优化**:包括查询优化、配置调整、使用EXPLAIN分析查询计划、监控与分析工具(如...
以下是配置 MySQL 5.5 主从模式的详细步骤: 1. **主服务器配置**: - **创建复制用户**:首先,在主服务器上创建一个用于复制的用户,例如 `databack`,并分配 `REPLICATION SLAVE` 权限。这允许从服务器连接并...
1. **安装与配置**:手册会详细讲解如何在各种操作系统上安装MySQL 5.5,包括Windows、Linux和macOS。同时,还会介绍配置文件my.cnf的设置,以及如何调整服务器参数以优化性能。 2. **SQL语法**:SQL是与MySQL交互...
5.5版本的文档会详细阐述主从复制的配置和维护。 3. **分区**:在5.5版本中,分区表功能更加成熟,可以显著提高大数据量查询的效率。文档会解析各种分区类型,如范围分区、哈希分区和列表分区。 4. **内存管理**:...
本文将详细介绍如何安装MySQL 5.5,这是MySQL的一个稳定版本,提供了强大的数据存储和管理功能。 首先,我们来理解一下MySQL 5.5的主要特点: 1. **更高的性能**:MySQL 5.5通过InnoDB存储引擎的优化,提升了查询...
MySQL 5.5手册将提供一系列性能调优技巧,包括配置参数调整、查询优化、存储引擎选择等,帮助用户最大化数据库性能。 九、故障诊断与解决 手册还会介绍如何识别和解决常见的MySQL问题,如性能瓶颈、错误日志分析等...
本文将深入探讨Mysql 5.1.7及以上版本的主从双向同步配置方法,为数据库管理员提供一份详尽的指南。 ### Mysql主从同步基本原理 在Mysql的主从复制模型中,主服务器(Master)负责写入操作,而从服务器(Slave)...