博客网址:http://www.linuxidc.com/Linux/2014-06/103752.htm
MySQL5.6开始主从复制有两种方式:
基于日志(binlog);
基于GTID(全局事务标示符)。
需要注意的是:GTID方式不支持临时表!所以如果你的业务系统要用到临时表的话就不要考虑这种方式了。
第一步:准备工作
主服务器: 192.168.15.9
从服务器: 192.168.15.10
第二步安装mysql5.6
Mysql源码编译安装,教程在其他文档中
第三步:配置文件my.cnf
修改主数据库的配置文件my.cnf
[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
sync_binlog=1
innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
log_bin_trust_function_creators=1
binlog-do-db = test #指定可以同步的数据库
第四步:修改从数据库配置文件my.cnf
[mysqld]
server-id=2
log-bin=mysqlslave-bin.log
sync_binlog=1
innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
log_bin_trust_function_creators=1
relay_log=mysql-relay-bin
第五步:启动数据库
在主数据库和从数据库服务器上分别执行以下命令重新启动主数据库和从数据库
[root@master ~]# service mysql restart
[root@slave ~]# service mysql restart
第六步:在主数据库上创建用于主从复制的账户
[root@master ~]# mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.15.% ' IDENTIFIED BY '111111';
Query OK, 0 rows affected (0.00 sec)
注意:以上命令中的IP地址,是从数据库服务器(允许远程登录的服务器)的IP地址。
第七步:主数据库锁表
(禁止再插入数据以获取主数据库的的二进制日志坐标)
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
第八步:查看主数据库的状态
(并记录下File字段和Position字段的值,在配置从服务器时有用到)
mysql> show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000004 | 327 | | | |
+------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
第九步:创建主数据库的快照文件
[root@master ~]# cd /usr/local/mysql5.6/bin
# ./mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases --triggers --routines --events >>~ /all.sql
scp ~/all.sql centos@192.168.15.10:/home/centos/all.sql
可以将all.sql放在其它任何目录下,然后使用scp命令复制到远程从数据库服务器的某个目录中
这条命令的执行时间根据数据量的不同,会有所不同,如果主数据库的数据量很大,可能需要很长时间,那么在这种情况下,就最好在晚上没有业务的时候进行这个操作,否则第七步中的锁表操作会对业务系统造成很大的影响
第十步:解锁主数据库的锁表操作
[root@master ~]# mysql -uroot -p (本命令在主数据库服务器上执行)
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
第十一步:在从数据库服务器上导入第七步创建的快照文件到从数据库中
[root@slave ~]# mysql -uroot -p -h127.0.0.1 -P3306 < /mnt/windows/all.sql
第十二步:在从数据库服务器上设置主数据库服务器向从数据库服务器同步
[root@slave ~]# mysql -uroot -p
mysql> change master to master_host = '192.168.1.100',master_user='repl',master_password='111111',master_log_file='mysqlmaster-bin.000004',master_log_pos=327;
注意:红色部分的值,是在第八步中查出来的,这里不能弄错了
第十三步:启动从数据库复制线程
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
第十四步:查询从数据库的复制线程状态
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.100
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqlmaster-bin.000004
Read_Master_Log_Pos: 327
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 289
Relay_Master_Log_File: mysqlmaster-bin.000004
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_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: 327
Relay_Log_Space: 462
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:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 2e5e1b22-f0a9-11e3-bbac-000c297799e0
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
如果Slave_IO_Running和Slave_SQL_Running两项都为yes,就表示主从复制配置成功了.
下面可以开始测试配置是否成功了,首先在主数据库的test数据库中新建一张表,然后插入几条数据,然后到从数据库看看是否同步过来了。
注意:当从数据库有大量的查询时,可以暂时将从数据库的复制线程关闭掉,等查询量降下来了,再打开,这样也不会丢失数据。
分享到:
相关推荐
MySQL 5.6主从复制同步配置是数据库管理中的一个高级主题,主要涉及到将数据从一个MySQL数据库服务器(主服务器)自动复制到一个或多个MySQL数据库服务器(从服务器)。下面将详细解释标题和内容中提及的相关知识点...
在本教程中,我们将探讨如何在MySQL 5.6环境中使用MHA进行主从切换的安装和配置。 首先,我们需要安装MHA软件。这涉及到两个主要的组件:`mha4mysql-node` 和 `mha4mysql-manager`。通过 `yum` 命令或直接下载 `rpm...
在这个场景中,我们有两台服务器:A服务器作为主服务器运行MySQL 5.6 on Redhat 5.8,而B服务器作为从服务器运行MySQL 5.5 on Windows 10。 ### 主服务器配置 1. **创建同步用户**: 在主服务器上,你需要创建一...
- **概述**:双主复制是一种高级复制结构,通过两个服务器互为主从的方式实现高可用性和高效率的切换。 - **优点**:当主服务器发生故障时,备服务器可以迅速接替主服务器的工作,同时当原主服务器恢复后可以无缝...
MySQL主从复制是一种数据同步机制,它能够实现在多个服务器间的数据一致性。通过这种机制,可以从主服务器(Master)自动地将所有数据库操作(包括DDL和DML语句)复制到一个或多个从服务器(Slave)。这种方式不仅...
6. **复制与高可用性**:MySQL 5.6提供了主从复制功能,使得数据可以在多个服务器之间同步,从而实现故障转移和负载均衡。手册会讲解配置复制、处理复制错误和监控复制状态的方法。 7. **性能优化**:手册涵盖了...
MySQL Replication主从复制是一种确保数据安全性并保持服务持续运行的重要技术。在主从复制架构中,一个MySQL服务器作为主服务器处理写操作,而其他服务器(从服务器)则同步主服务器上的所有更改,以实现数据的实时...
MySQL的复制功能主要分为两种:主从复制和主主复制。 主从复制是指一个主数据库将变更的数据通过二进制日志(binlog)传送到一个或多个从数据库服务器上,从服务器将这些数据变更应用到自己的数据库中。这种模式下...
这两种模式各有优势,混合格式复制则结合了前两者的优点。 在MySQL 5.6版本中,对复制功能做了多项增强,包括更高水平的数据完整性、性能、自动化和应用灵活性。白皮书将详细讨论这些改进点。此外,白皮书还探讨了...
MySQL数据库的主从同步是一种高可用性和数据冗余的重要机制,它可以确保在一个数据库服务器(主服务器,Master)上的数据更改能够被实时复制到其他服务器(从服务器,Slave)。在MySQL 5.6版本中,这一功能经过优化...
为了克服这个挑战,MySQL采用了两种策略: 1. **按库并行**:即相同数据库的写操作由同一工作线程处理,不同数据库的写操作可以被分配给不同的线程。这种策略需要对数据库进行哈希运算,然后根据结果决定哪个线程...
4. **存储引擎**:InnoDB和MyISAM是MySQL中的两种主要存储引擎,了解它们的特点、适用场景以及性能差异至关重要。5.6版本加强了InnoDB,例如支持全文搜索和更好的事务处理。 5. **性能优化**:包括查询分析、索引...
《Oracle Database 11g MySQL 5.6开发手册》是一部综合性的技术指南,涵盖了两种广泛应用的数据库管理系统:Oracle Database 11g和MySQL 5.6。此书旨在为开发者提供深入理解这两种数据库系统的核心功能、管理和开发...
在MySQL 5.7中,主从复制的并行策略有两种类型: 1. **DATABASE 基于库的并行复制**:每个数据库对应一个复制线程。这意味着如果数据库中有多个数据库,那么可以有多个线程同时工作,不同数据库的数据可以并行复制...
MySQL5.6及以后版本提供了两种复制方式:基于日志(binlog)和基于GTID(全局事务标识符)。本文关注的是基于binlog的主从配置。 复制过程主要包括: 1. 主服务器记录数据变更到二进制日志。 2. 从服务器的I/O线程...
MySQL主从部署方案是数据库高可用性和负载均衡的一种常见实践,它通过复制主服务器(Master)的数据到从服务器(Slave),实现读写分离,提高系统性能并提供数据冗余,以备在主服务器出现问题时进行故障切换。...
在复制方面,MySQL支持主从复制,允许多个从服务器从主服务器同步数据。这种机制能够支持读写分离、数据备份和灾难恢复等应用场景。 备份和恢复方面,MySQL提供了多种备份策略和工具,以保证数据的安全性和可用性,...