mysql读写实现
- 格式:doc
- 大小:149.00 KB
- 文档页数:9
配置amoeba实现读写分离配置环境:Mater :192.168.1.229 server1 读Slave :192.168.1.181 server2 写网站主机: 192.168.1.120 测试读写一,配置mysql主从复制:请见另外一个文档。
二,配置jdk环境变量。
Amoeba框架是基于Java SE1.5开发的,建议使用Java SE 1.5版本。
目前Amoeba 经验证在JavaTM SE 1.5和Java SE 1.6能正常运行,(可能包括其他未经验证的版本)。
变量设置(在master主机上配置),此处可以设置全局环境变量设置,也可使用root 用户变量设置,同样,如果是别的用户安装的amoeba软件,则使用相应的账号来设置jdk环境变量。
全局设置如下:加入下信息:vi /etc/profileJAVA_HOME=/usr/local/jdk1.6.0_25PATH=$JAVA_HOME/bin:$PATHPATH=$PATH:$HOME/bin:/usr/local/amoeba/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH解释如下:第一行指定了jdk的安装目录。
第二行指定了其家目录的路径。
第三行指定了amoeba的安装目录。
第四行指定了java相应的工具盒功能。
同样,如果是root用户的环境变量,则使用下面的位置的变量。
vi ~/.bash_profile加入如上得到内容即可。
完成之后,执行命令 source ~/.bash_profile 或者source /etc/profile使用如下的命令查看java手否被成功安装:[root@localhost ~]# java -versionjava version "1.6.0_25"Java(TM) SE Runtime Environment (build 1.6.0_25-b06)Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)上述显示已经成功安装1.6版本。
mysql+mycat搭建稳定⾼可⽤集群,负载均衡,主备复制,读写分离数据库性能优化普遍采⽤集群⽅式,oracle集群软硬件投⼊昂贵,今天花了⼀天时间搭建基于mysql的集群环境。
主要思路简单说,实现mysql主备复制-->利⽤mycat实现负载均衡。
⽐较了常⽤的读写分离⽅式,推荐mycat,社区活跃,性能稳定。
测试环境MYSQL版本:Server version: 5.5.53,到官⽹可以下载WINDWOS安装包。
注意:确保mysql版本为5.5以后,以前版本主备同步配置⽅式不同。
linux实现思路类似,修改f即可。
A主mysql。
192.168.110.1:3306, ⽤户root,密码root。
操作系统:win7 x64,内存:4g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binB备mysql。
192.168.110.2:3306, ⽤户root,密码root。
操作系统:win2003 x64,内存:1g安装路径:C:\Program Files\MySQL\MySQL Server 5.5\binA主、B备的mysql中创建sync_test数据库实现mysql主备复制主要思路:A主mysql开启⽇志,B备mysql读取操作⽇志,同步执⾏。
⼀般为主备同步,主主同步不推荐使⽤。
配置A主mysql1)修改my.ini。
需要在log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log"的相关位置创建log⽬录,以及mysql-bin.log⽂件。
[mysqld]server-id=1 #主机标⽰,整数port=3306log-bin="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-bin.log" #确保此⽂件可写read-only=0 #主机,读写都可以binlog-do-db=sync_test #需要备份数据库,多个写多⾏binlog-ignore-db=mysql #不需要备份的数据库,多个写多⾏2)允许MYSQL远程访问#登录mysql console进⼊%home%/bin,执⾏mysql -uroot -proot#授权。
MySQL读法详解MySQL是一种常用的关系型数据库管理系统,广泛应用于Web应用程序的后端数据存储。
在开发和维护MySQL数据库时,读取数据是非常重要的一项操作。
本文将着重介绍MySQL的读取操作,包括基本的读取语法、读取的优化技巧以及一些高级的读取技术。
基本的读取语法在MySQL中,查询语句是用于读取数据的基本操作。
常用的查询语句包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY等关键词。
下面是一个示例的查询语句,用于从表中读取数据:SELECT column1, column2, ...FROM table_nameWHERE conditionGROUP BY column1, column2, ...HAVING conditionORDER BY column1, column2, ...LIMIT offset, count;•SELECT关键词用于指定要读取的列,多个列之间用逗号分隔。
•FROM关键词用于指定要读取数据的表。
•WHERE关键词用于指定筛选条件,只有满足条件的数据才会被读取。
•GROUP BY关键词用于将数据分组,通常配合聚合函数使用。
•HAVING关键词用于指定对分组后的数据进行筛选的条件。
•ORDER BY关键词用于指定按照某个或多个列排序结果。
•LIMIT关键词用于限制读取的数据行数。
以上是基本的读取语法,通过合理地使用这些关键词,可以满足大部分读取数据的需求。
读取性能优化技巧在实际的开发中,读取数据的性能往往是一个重要的考量因素。
下面是一些常用的优化技巧,可以提高读取数据的性能:1. 使用索引索引是提高数据库查询效率的重要手段之一。
通过在表的某个列上创建索引,可以使查询操作更快速。
常见的索引类型包括B树索引、哈希索引等。
在设计表结构时,合理地选择列创建索引,可以显著提升数据的读取性能。
2. 避免全表扫描全表扫描是指没有使用索引,而是对整个表进行遍历查询。
mysql 读写锁实现原理
MySQL中的读写锁实现原理涉及到数据库并发控制的重要概念。
在MySQL中,读写锁是通过表级锁和行级锁来实现的。
首先,让我们来看一下读锁的实现原理。
读锁是共享锁,允许
多个事务同时获取读锁,以便并发读取数据而不会相互影响。
当一
个事务获取了读锁之后,其他事务也可以获取读锁,但是如果有其
他事务获取了写锁,则读锁会被阻塞,直到写锁被释放。
这种机制
可以保证读操作不会被写操作所阻塞,从而提高了数据库的并发性能。
接下来是写锁的实现原理。
写锁是排他锁,一旦一个事务获取
了写锁,其他事务无法获取读锁或者写锁,从而保证了数据的一致性。
当一个事务获取了写锁之后,其他事务无法进行读写操作,直
到写锁被释放。
这种机制可以保证写操作的原子性和一致性。
在MySQL中,读写锁的实现原理是基于锁的粒度来进行的,可
以通过锁定整个表或者锁定表中的某些行来实现。
在实际应用中,
可以通过使用SELECT ... FOR UPDATE语句来获取行级的写锁,或
者使用LOCK TABLES语句来获取表级的锁。
另外,MySQL还提供了
事务的隔离级别,可以通过设置不同的隔离级别来控制读写锁的行为。
总的来说,MySQL中的读写锁实现原理是基于锁的类型和粒度来保证数据的并发访问和一致性。
通过合理地使用读写锁,可以提高数据库的并发性能和数据的一致性。
MySQL中的并发读写和性能调优MySQL是一种广泛使用的关系型数据库管理系统,具有高性能和可伸缩性的特点。
然而,在高并发读写的环境下,MySQL的性能可能会受到影响。
本文将深入探讨MySQL中的并发读写和性能调优的相关知识。
一、什么是并发读写在数据库系统中,同时有多个用户对同一数据进行读写操作,就是并发读写。
并发读写可以提高数据库的吞吐量和响应速度,但也会增加数据一致性和性能调优的难度。
1. 并发读并发读是指多个用户同时对数据库进行读操作。
当多个用户同时读取同一数据时,并发读不会出现任何问题。
但如果其中有一个或多个用户对数据进行更新操作,就可能发生数据不一致的情况。
2. 并发写并发写是指多个用户同时对数据库进行写操作。
并发写可能导致数据冲突和丢失更新的问题。
为了避免数据冲突,数据库管理系统通常会使用锁机制或MVCC (多版本并发控制)来保证数据的一致性。
二、MySQL的并发读写问题在MySQL中进行并发读写时,可能会出现以下问题:1. 数据库死锁当多个用户同时竞争资源时,可能会发生死锁的情况。
死锁是指两个或多个进程无限期地等待对方持有的资源。
为了避免死锁的发生,MySQL使用了事务和锁机制来管理并发操作。
2. 数据丢失和不一致并发写操作可能导致数据丢失和不一致的问题。
MySQL通过使用锁机制或MVCC来确保数据的一致性和完整性,但如果配置不当或处理不当,仍然可能发生数据丢失和不一致的情况。
三、MySQL的性能调优策略为了提高MySQL在并发读写环境下的性能,可以采取以下策略:1. 数据库优化调整数据库的结构和参数配置,可以提高数据库的性能。
例如,合理设计表结构、创建索引、调整缓冲区大小等。
另外,使用合适的存储引擎(InnoDB、MyISAM等)也可以影响数据库的性能。
2. 查询优化优化查询语句可以减少数据库的负载,提高响应速度。
可以通过合理设计查询语句、使用索引、避免全表扫描等方式来优化查询。
laravel mysql读写分离实现方式一、前言在大型网站系统中,数据读写分离是一种常见的优化手段,可以有效提高系统的性能和可扩展性。
本文将介绍如何在 Laravel 中实现MySQL 读写分离。
二、MySQL 主从复制首先,我们需要了解 MySQL 的主从复制概念。
MySQL 可以通过设置主从配置,实现数据的同步复制。
主服务器用于写操作,从服务器用于读操作,从而实现读写分离。
三、Laravel 配置 MySQL 读写分离1. 配置主从数据库连接在 Laravel 中,我们可以通过配置文件来设置数据库连接。
在`.env` 文件中,我们需要为读库和写库分别设置连接信息。
例如,对于MySQL 数据库,我们可以设置如下:```makefileDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=your_databaseDB_USERNAME=your_usernameDB_PASSWORD=your_password# Read database configurationREAD_CONNECTION_STRING=mysql:host=master_ip;port=3 306;database=your_database_read,charset=utf8mb4,collation=ut f8mb4_unicode_ci,read_default_file=/path/to/f# Write database configurationWRITE_CONNECTION_STRING=mysql:host=master_ip;port= 3306;database=your_database,charset=utf8mb4,collation=utf8m b4_unicode_ci,read_default_file=/path/to/f```其中,`f` 文件需要包含以下内容:```arduino[client]host = write_ipport = write_portsocket = /path/to/socketdefault-character-set = utf8mb4这里的 `write_ip`、`write_port`、`master_ip`、`master_port` 和`socket` 需要根据实际情况进行替换。
java mysql读写分离实现方式Java MySQL的读写分离是一个非常重要的技术,它可以帮助开发人员更好地优化MySQL数据库的使用。
在这篇文章中,我们将分步骤阐述如何实现Java MySQL的读写分离。
第一步:安装MySQL集群为了实现Java MySQL的读写分离,我们需要安装一个MySQL集群。
这个集群由至少一个主服务器和一个或多个从服务器组成。
主服务器负责写入操作,而从服务器负责读取操作。
在MySQL集群中,主服务器和从服务器之间的数据同步是通过MySQL复制机制实现的。
第二步:配置主服务器在MySQL集群中,主服务器负责写入操作。
因此,我们需要对主服务器进行配置。
在配置过程中,我们需要注意以下几点:a. 禁用查询缓存由于查询缓存对于写入操作来说是没有意义的,因此我们需要禁用它。
为此,可以将query_cache_type参数设置为0,这样就可以关闭查询缓存。
b. 开启二进制日志为了保证数据同步的正确性,我们需要开启二进制日志。
二进制日志可以记录所有的写入操作,从而确保从服务器能够获取到最新的数据。
c. 允许从服务器连接在主服务器的配置文件中,需要允许从服务器连接。
为此,可以将bind-address参数设为0.0.0.0,这样就可以允许任何IP地址的从服务器连接。
第三步:配置从服务器在MySQL集群中,从服务器负责读取操作。
因此,我们需要对从服务器进行配置。
在配置过程中,我们需要注意以下几点:a. 禁用写入操作为了保证数据同步的正确性,我们需要禁用从服务器上的写入操作。
为此,可以将read_only参数设为1,这样就可以禁止从服务器上进行写入操作。
b. 设置连接参数在连接从服务器时,我们需要设置连接参数。
这些参数可以告诉从服务器我们所需要的数据。
通常情况下,我们需要设置以下参数:i. serverAddress:主服务器的地址ii. port:主服务器的端口号iii. databaseName:需要连接的数据库名称iv. username:用户名v. password:密码c. 配置读写分离在从服务器上配置读写分离非常重要。
mysql 读取数据循环写入数据的方法正文:在MySQL中,可以使用循环语句和INSERT语句来读取数据并将其写入其他表或同一表中的其他行。
下面是一种常见的方法来实现这个过程:首先,我们需要创建一个存储过程来实现循环读取和写入数据的功能。
以下是一个示例存储过程的代码:```sqlDELIMITER //CREATE PROCEDURE copy_data()BEGINDECLARE done INT DEFAULT FALSE;DECLARE id INT;DECLARE data VARCHAR(255);-- 创建一个游标来遍历数据DECLARE cur CURSOR FOR SELECT id, data FROM source_table;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 打开游标OPEN cur;-- 循环读取数据并写入目标表read_loop: LOOPFETCH cur INTO id, data;IF done THENLEAVE read_loop;END IF;-- 在此处可以根据需要对数据进行处理-- 例如,可以在此处添加任何必要的逻辑来判断是否需要写入数据-- 写入数据到目标表INSERT INTO target_table (id, data) VALUES (id, data);END LOOP;-- 关闭游标CLOSE cur;END //DELIMITER ;```在上面的示例中,我们首先声明了一些变量,包括一个表示是否已经完成的标志变量(done),一个用于存储查询结果的游标(cur)以及用于存储每次循环的数据的变量(id和data)。
然后,我们使用SELECT语句将源表(source_table)中的数据选择到游标中。
我们还定义了一个CONTINUE HANDLER,以便在没有更多数据可供读取时退出循环。
Apache Flink CDC (Change Data Capture) 是一个开源库,它提供了一个简单的框架来连接到关系型数据库(例如MySQL, PostgreSQL 等)并捕获数据的更改。
Apache Kafka 是一个流处理平台,它可以作为Flink 的输出,以便处理和传输数据。
下面是一个使用Flink CDC 读取MySQL 数据并将其写入Kafka 的基本示例:首先,你需要在你的项目中引入必要的依赖。
例如,如果你使用 Maven,你可以添加以下依赖:```xml<dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc_2.11</artifactId><version>1.13.2</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-kafka_2.11</artifactId><version>1.13.2</version></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.11</artifactId><version>1.13.2</version></dependency><!-- 其他依赖 --></dependencies>```然后,你可以创建一个Flink 作业来读取MySQL 数据库中的数据并写入 Kafka:```javaimportmon.restartstrategy.RestartStrategie s;importorg.apache.flink.streaming.api.datastream.DataStream; importorg.apache.flink.streaming.api.environment.StreamExecution Environment;importorg.apache.flink.streaming.api.functions.sink.RichSinkFunctio n;importorg.apache.flink.table.api.bridge.java.StreamTableEnvironme nt;import org.apache.flink.table.api.*;import org.apache.flink.table.descriptors.*;import org.apache.flink.table.sinks.*;import org.apache.flink.types.Row;import org.apache.flink.streaming.connectors.kafka.*; import org.apache.flink.streaming.connectors.jdbc.*;import org.apache.flink.*;import org.apache.*;import java.*;import java.sql.*;import java.*;import org.*;import com.*;import javafx.*; // for the example only, not needed for yourprojectimport javafx.beans.*; // for the example only, not needed for your projectimport javafx.collections.*; // for the example only, not needed for your project```。
C语言操作MYSQLC语言是一种强大的编程语言,可以用于各种应用程序的开发。
在许多应用程序中,数据库是一个重要的组成部分。
MySQL是一个流行的开源数据库管理系统,提供了高性能、可靠性和可扩展性。
在C语言中,我们可以使用各种API来操作MySQL数据库。
在本文中,我们将讨论如何在C语言中使用MySQLAPI连接到数据库、执行SQL语句以及处理结果。
完成安装后,我们可以在C代码中包含"mysql.h"头文件,然后使用mysql_init(函数初始化一个MYSQL结构体。
```c#include <mysql.h>int mainMYSQL *conn;conn = mysql_init(NULL);//...return 0;```接下来,我们需要用mysql_real_connect(函数连接到数据库。
我们需要提供主机名、用户名、密码以及数据库名称。
成功连接后,函数将返回一个非空的MYSQL指针,代表与数据库的连接。
//...MYSQL *conn;conn = mysql_init(NULL);mysql_real_connect(conn, "localhost", "root", "password", "database", 0, NULL, 0);//...```有了连接,我们可以执行SQL语句来操作数据库。
使用mysql_query(函数可以执行任意的SQL语句,如SELECT、INSERT、UPDATE等。
```c//...mysql_query(conn, "SELECT * FROM table");//...```执行完查询后,我们需要获取并处理结果。
使用mysql_use_result(函数可以获取结果集,并使用mysql_fetch_row(函数来逐行提取结果。
一个完整的mysql读写分离环境包括以下几个部分:∙应用程序client∙database proxy∙database集群在本次实战中,应用程序client基于c3p0连接后端的database proxy。
database proxy负责管理client实际访问database的路由策略,采用开源框架amoeba。
database集群采用mysql的master-slave的replication 方案。
整个环境的结构图如下所示:实战步骤与详解一.搭建mysql的master-slave环境1)分别在host1(10.20.147.110)和host2(10.20.147.111)上安装mysql(5.0.45),具体安装方法可见官方文档2)配置master首先编辑/etc/f,添加以下配置:log-bin=mysql-bin #slave会基于此log-bin来做replicationserver-id=1 #master的标示binlog-do-db = amoeba_study #用于master-slave的具体数据库然后添加专门用于replication的用户:mysql> GRANT REPLICATION SLAVE ON *.* TO repl@10.20.147.111 IDENTIFIED BY '111111';重启mysql,使得配置生效:/etc/init.d/mysqld restart最后查看master状态:3)配置slave首先编辑/etc/f,添加以下配置:server-id=2 #slave的标示配置生效后,配置与master的连接:mysql> CHANGE MASTER TO-> MASTER_HOST='10.20.147.110',-> MASTER_USER='repl',-> MASTER_PASSWORD='111111',-> MASTER_LOG_FILE='mysql-bin.000003',-> MASTER_LOG_POS=161261;其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息最后启动slave:mysql> start slave;4)验证master-slave搭建生效通过查看slave机的log(/var/log/mysqld.log):100703 10:51:42 [Note] Slave I/O thread: connected to master'repl@10.20.147.110:3306', replication started in log'mysql-bin.000003' at position 161261如看到以上信息则证明搭建成功,如果有问题也可通过此log找原因二.搭建database proxy此次实战中database proxy采用amoeba,它的相关信息可以查阅官方文档,不在此详述1)安装amoeba下载amoeba(1.2.0-GA)后解压到本地(D:\openSource\amoeba-mysql-1.2.0-GA),即完成安装2)配置amoeba先配置proxy连接和与各后端mysql服务器连接信息(D:\openSource\amoeba-mysql-1.2.0-GA\conf\amoeba.xml):1.<server>2. <!-- proxy server绑定的端口 -->3.<property name="port">8066</property>4.5. <!-- proxy server绑定的IP -->6. <!--7. <property name="ipAddress">127.0.0.1</property>8. -->9. <!-- proxy server net IO Read thread size -->10.<property name="readThreadPoolSize">20</property>11.12. <!-- proxy server client process thread size -->13.<property name="clientSideThreadPoolSize">30</property>14.15. <!-- mysql server data packet process thread size -->16.<property name="serverSideThreadPoolSize">30</property>17.18. <!-- socket Send and receive BufferSize(unit:K) -->19.<property name="netBufferSize">128</property>20.21. <!-- Enable/disable TCP_NODELAY (disable/enable Nagle'salgorithm). -->22.<property name="tcpNoDelay">true</property>23.24. <!-- 对外验证的用户名 -->25.<property name="user">root</property>26.27. <!-- 对外验证的密码 -->28.<property name="password">root</property>29.</server>1.<dbServerList>2.<dbServer name="server1">3. <!-- PoolableObjectFactory实现类 -->4.<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">5.<property name="manager">defaultManager</property>6.7. <!-- 真实mysql数据库端口 -->8.<property name="port">3306</property>9.10. <!-- 真实mysql数据库IP -->11.<property name="ipAddress">10.20.147.110</property>12.<property name="schema">amoeba_study</property>13.14. <!-- 用于登陆mysql的用户名 -->15.<property name="user">root</property>16.17. <!-- 用于登陆mysql的密码 -->18.<property name="password"></property>19.20.</factoryConfig>21.22. <!-- ObjectPool实现类 -->23.<poolConfig class=".poolable.PoolableObjectPool">24.<property name="maxActive">200</property>25.<property name="maxIdle">200</property>26.<property name="minIdle">10</property>27.<property name="minEvictableIdleTimeMillis">600000</property>28.<property name="timeBetweenEvictionRunsMillis">600000</property>29.<property name="testOnBorrow">true</property>30.<property name="testWhileIdle">true</property>31.</poolConfig>32.</dbServer>33.<dbServer name="server2">34.35. <!-- PoolableObjectFactory实现类 -->36.<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">37.<property name="manager">defaultManager</property>38.39. <!-- 真实mysql数据库端口 -->40.<property name="port">3306</property>41.42. <!-- 真实mysql数据库IP -->43.<property name="ipAddress">10.20.147.111</property>44.<property name="schema">amoeba_study</property>45.46. <!-- 用于登陆mysql的用户名 -->47.<property name="user">root</property>48.49. <!-- 用于登陆mysql的密码 -->50.<property name="password"></property>51.52.</factoryConfig>53.54. <!-- ObjectPool实现类 -->55.<poolConfig class=".poolable.PoolableObjectPool">56.<property name="maxActive">200</property>57.<property name="maxIdle">200</property>58.<property name="minIdle">10</property>59.<property name="minEvictableIdleTimeMillis">600000</property>从以上配置不然发现,写操作路由到server1(master),读操作路由到server2(slave)3)启动amoeba在命令行里运行D:\openSource\amoeba-mysql-1.2.0-GA\amoeba.bat 即可:log4j:WARN log4j config load completed fromfile:D:\openSource\amoeba-mysql-1.2.0-GA\conf\log4j.xmllog4j:WARN ip access config load completed fromfile:D:\openSource\amoeba-mysql-1.2.0-GA/conf/access_list.conf 2010-07-03 09:55:33,821 INFO net.ServerableConnectionManager - Server listening on 0.0.0.0/0.0.0.0:8066.三.client端调用与测试1)编写client调用程序具体程序细节就不详述了,只是一个最普通的基于mysql driver的jdbc的数据库操作程序2)配置数据库连接本client基于c3p0,具体数据源配置如下:1.<bean id="dataSource"class="com.mchange.vboPooledDataSource"2.destroy-method="close">3.<property name="driverClass"value="com.mysql.jdbc.Driver"/>4.<property name="jdbcUrl"value="jdbc:mysql://localhost:8066/amoeba_study"/>5.<property name="user"value="root"/>6.<property name="password"value="root"/>7.<property name="minPoolSize"value="1"/>8.<property name="maxPoolSize"value="1"/>9.<property name="maxIdleTime"value="1800"/>10.<property name="acquireIncrement"value="1"/>11.<property name="maxStatements"value="0"/>12.<property name="initialPoolSize"value="1"/>13.<property name="idleConnectionTestPeriod"value="1800"/>14.<property name="acquireRetryAttempts"value="6"/>15.<property name="acquireRetryDelay"value="1000"/>16.<property name="breakAfterAcquireFailure"value="false"/>通过查看slave机上的日志/var/lib/mysql/mysql_log.log:100703 11:58:42 2 Query insert into zone_by_id(id,name) values(20003,'name_20003')得知slave同步执行了这条语句然后查一条数据:select from zone_by_id t where t.id = 20003通过查看slave机上的日志/var/lib/mysql/mysql_log.log:100703 12:02:00 33 Query set names latin133 Prepare [1] select from zone_by_id t where t.id = ?33 Prepare [2] select from zone_by_id t where t.id = ?33 Execute [2] select from zone_by_id t where t.id = 20003得知读操作发生在slave机上并且通过查看slave机上的日志/var/lib/mysql/mysql_log.log发现这条语句没在master上执行通过以上验证得知简单的master-slave搭建和实战得以生效。