MySQL InnoDB引擎 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,当增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数,可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。 注意: 如果启用了innodb_file_per_talbe参数,需要注意的是每张表的表空间内存放的只是数据、索引和插入缓冲Bitmap页,其他数据如:回滚信息、插入缓冲索引页、系统事物信息、二次写缓冲(Double write buffer)等还是放在原来的共享表空间内。同时说明了一个问题:即使启用了innodb_file_per_table参数共享表空间还是会不断的增加其大小的。 独立表空间优缺点: 优点: 1:每个表的数据、索引存放在自己单独的表空间中。 2:空间可以回收(drop/truncate table 方式操作表空间不能自动回收) 3:对于独立的表空间、碎片影响的性能要低于共享表空间 缺点: 单表增加比共享表空间方式更大 结论: 共享表空间在Insert操作上有一些优势,但在其它都没独立表空间表现好。 当启用独立表空间时,请合理调整一下 innodb_open_files 参数。 from:http://www.cnblogs.com/xiaoit/p/4096165.html
View Details一、数据库结构的设计 1、数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。 2、能够用数字类型的字段尽量选择数字类型而不用字符串类型的(电话号码),这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。 3、对于不可变字符类型char和可变字符类型varchar 都是8000字节,char查询快,但是耗存储空间,varchar查询相对慢一些但是节省存储空间。在设计字段的时候可以灵活选择,例如用户名、密码等长度变化不大的字段可以选择CHAR,对于评论等长度变化大的字段可以选择VARCHAR。 4、字段的长度在最大限度的满足可能的需要的前提下,应该尽可能的设得短一些,这样可以提高查询的效率,而且在建立索引的时候也可以减少资源的消耗。 二、查询的优化 保证在实现功能的基础上,尽量减少对数据库的访问次数(可以用缓存保存查询结果,减少查询次数);通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECTCOL1,COL2 FROM T1;在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的数据的。 在没有建索引的情况下,数据库查找某一条数据,就必须进行全表扫描了,对所有数据进行一次遍历,查找出符合条件的记录。在数据量比较小的情况下,也许看不出明显的差别,但是当数据量大的情况下,这种情况就是极为糟糕的了。 1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。 3.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20 4.in 和 not in 也要慎用,因为IN会使系统无法使用索引,而只能直接搜索表中的数据。如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select […]
View Details前言:最近一直在做项目的性能优化,经历了一个多星期的弯路,终于找到了一个突破点,经过和同事(非常感谢,稍后他会将过程写在他的博客,我会把连接地址跟贴到本博客)的努力,我们的期货交易平台性能在服务端已经得到很好的提升。 首先我们先看一下,我的电脑(i3-3220,4G内存,没有配置innodb_buffer_pool_size参数的情况下,抛开程序的性能,经过1个线程-8个线程的测试结果)环境下,大家可以看到如下的图,线程并发情况下,时间不断的攀升,这让人好苦恼,说好的高性能,高并发呢? 结果: 不过经过一个多星期的努力,不经意间,我在同事的电脑上发现,同样的代码测试后,时间和我的不是一个等量级的,要比我的电脑快很多,他的电脑(其他条件等同,CPU为i3-4150),8个商品8000挂单下能达到135ms,首先说明CPU的提升对程序处理来说是非常有效果的,但是依然在高并发的情况下,表现的很差劲。 时至今日,通过比对mysql的配置文件my.ini,不经意间,我们发现innodb_buffer_pool_size在8M和48M的配置下,性能简直就不在一个等级上,OK,那就继续调查吧,最终得出如下结论 ? 1 2 innodb_buffer_pool_size=2G innodb_buffer_pool_instances=1 详细的解释,可以看如下介绍 ? 1 2 3 4 5 6 7 8 # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and # row data. The bigger you set this the less disk I/O is needed to # access data in tables. On a dedicated database server you may set this # parameter up to 80% of the machine physical memory size. Do not set it # too large, though, because competition of the physical memory […]
View Details1、拆分大的DELETE或INSERT语句 如果你需要在一个在线的网站上去执行一个大的DELETE或INSERT查询,你需要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。 如果你把你的表锁上一段时间,比如30秒钟,那么对于一个有很高访问量的站点来说,这30秒所积累的访问进程/线程,数据库链接,打开的文件数,可能不仅仅会让你泊WEB服务Crash,还可能会让你的整台服务器马上掛了。 所以,如果你有一个大的处理,你定你一定把其拆分,使用LIMIT条件是一个好的方法。下面是一个示例 2、垂直分割 “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖) 示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库操作的时候除了个人信息外,你并不需要经常读取或是改写这个字段。那么,为什么不把他放到另外一张表中呢?这样会让你的表有更好的性能,大家想想是不是,大量的时候,我对于用户表来说,只有用户ID,用户名,口令,用户角色等会被经常使用。小一点的表总是会有好的性能。 示例二:你有一个叫“last_login”的字段,它会在每次用户登录时被更新。但是,每次更新时会导致该表的查询缓存被清空。所以,你可以把这个字段放到另一个表中,这样就不会影响你对用户ID,用户名,用户角色的不停地读取了,因为查询缓存会帮你增加很多性能。hp程序员之家 另外,你需要注意的是,这些被分出去的字段所形成的表,你不会经常性地去Join他们,不然的话,这样的性能会比不分割时还要差,而且,会是极数级的下降 3、选择正确的存储引擎 在MySQL中有两个存储引擎MyISAM和InnoDB,每个引擎都有利有弊。酷壳以前文章《mysql: InnoDB 还是 MyISAM?》讨论和这个事情。hp程序员之家 MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM对于 SELECT COUNT(*) 这类的计算是超快无比的。 www~phperz~com InnoDB的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。 Myisam读的效果好,写的效率差,这和它数据存储格式,索引的指针和锁的策略有关的。 数据存储格式:Myisam的数据是顺序存储的,innodb数据存储方式是聚簇索引。 索引的指针:Myisam的索引btree上的节点是一个指向数据物理位置的指针,所以查找起来很快,innodb索引节点存的则是数据的主键,所以需要根据主键二次查找。 锁的策略:Myisam锁是表锁,只有读读之间是并发的,写写之间和读写之间(读和插入之间是可以并发的,去设置concurrent_insert参数,定期执行表优化操作,更新操作就没有办法了)是串行的,所以写起来慢,并且默认的写优先级比读优先级高,高到写操作来了后,可以马上插入到读操作前面去,如果批量写,会导致读请求饿死,所以要设置读写优先级或设置多少写操作后执行读操作的策略;Myisam不要使用查询时间太长的sql,如果策略使用不当,也会导致写饿死,所以尽量去拆分查询效率低的sql。 Innodb一般都是行锁,这个一般指的是sql用到索引的时候,行锁是加在索引上的,不是加在数据记录上的,如果sql没有用到索引,仍然会锁定表。mysql的读写之间是可以并发的,普通的select是不需要锁的,当查询的记录遇到锁时,用的是一致性的非锁定快照读,也就是根据数据库隔离级别策略,会去读被锁定行的快照,其它更新或加锁读语句用的是当前读,读取原始行;因为普通读与写不冲突,所以innodb不会出现读写饿死的情况,又因为在使用索引的时候用的是行锁,锁的粒度小,竞争相同锁的情况就少,就增加了并发处理,所以并发读写的效率还是很优秀的,问题在于索引查询后的根据主键的二次查找导致效率低; 注意: Innodb 聚集索引是按照主键(primarykey)进行聚集,被索引的列其实是主键列,如果没定义主键,Innodb会试着使用唯一非空索引Unique Index来代替。其他索引(普通索引)中不会保存行的物理位置,而是保存主键的值,所以通过"二级索引"进行查找是先找到主键,再找到行,要进行二次索引查找 组合索引和单列索引 组合索引在多列上创建,单列索引在一个列上创建。 查询使用索引的条件不同一般组合索引需要按照“最左前缀”来执行查询,并不是每个列都需要覆盖,只是从左边的列开始组合。 原因: 多列索引是先按照第一列进行排序,然后在第一列排好序的基础上再对第二列排序,如果没有第一列的话,直接访问第二列,那第二列肯定是无序的,直接访问后面的列就用不到索引了。索引的最大好处就是:它必然是有序的。如果这个优点都不能利用,那索引也就没什么价值了。 例如有索引key(a,b,c) ³where a=xx and b=xx and c=xxx 此语句可以用到索引 ³where b=xx and a=xx and c=xxx 同上,顺序没有关系,同样能用到索引 ³where a=xx and b=xx 可以用到索引 ³where a=xx and c=xx 可以用到索引(这个以前一直理解错了) ³where b=xx and c=xx 用不到索引 ³where b=xx 用不到索引 ³where c=xx 用不到索引 from:http://blog.csdn.net/u011191420/article/details/53337802
View Details参考数据库链接串: <add key="data" value="server=192.168.1.123; Port=3306; uid=root; pwd=root;database=data;pooling=true;min pool size=5;max pool size=512;connect timeout = 20; "/> 查看应用程序池占用数量: select * from sysprocesses where dbid= db_id('数据库名') Max Pool Size:如果未设置则默认为100,理论最大值为32767。最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。在等待队列中,默认等待与服务器的连接的时间为15秒。 中文错误: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 英文错误: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. 问题描述:我们获取连接超过连接池最大值时产生如上异常。通常连接池最大值为100。当我们获取连接超过最大值时,ADO.NET等待连接池返回连接而超时,这样将抛出如上异常 解决办法:首先要做的是在我们使用连接后立即关闭连接。如果没有关闭连接那么连接将保存到连接池中知道GC来销毁。这种情况下你以为连接池没有到达最大值但实际上连接池已经到达了最大值 其次我们可以通过连接字符串中的Max Pool Size = N;来动态扩大连接池中的连接最大数量。 说明: 也就是在connectionString中如果未指定max pool size的值,则max pool size=100,当访问人员同时连接数据库的数量为101人时,则等待SqlConnection.ConnectionTimeout设置的时间(默认是15 秒)后,还是没有可用的Connection则会出现上面的错误。 当我们设置为: "Server=(local); Integrated Security=SSPI; Database=Northwind; Max Pool Size=512; Min Pool Size=5" 时。则访问人员同时连接数据库的数量为513时,则等待SqlConnection.ConnectionTimeout设置的时间(默认是15 秒)后,还是没有可用的Connection则 就会出现上面的错误。 – Connection Pool 是什么呢 ? 每当程序需要读写数据库的时候。Connection.Open()会使用ConnectionString连接到数据库,数据库会为程序建立 一个连接,并且保持打开状态,此后程序就可以使用T-SQL语句来查询/更新数据库。当执行到Connection.Close()后,数据库就会关闭当 前的连接。很好,一切看上去都是如此有条不紊。 但是如果我的程序需要不定时的打开和关闭连接,(比如说 ASP.Net 或是 Web Service […]
View DetailsMySQL数据库 Too many connections 出现这种错误明显就是 mysql_connect 之后忘记 mysql_close; 当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个,而什么情况下会出现这种错误呢? 正常的mysql_connect 之后调用 mysql_close()关闭连接 但在连接错误时,会者mysql_real_query()出现错误退出时,可能忘记mysql_close(); 所以在程序return 之前一定要判断是否close(),最稳妥的方法就是在写任何函数时都只有一个出口! 还有可以通过修改mysql配置文件来加大允许连接的数量! 有时你的服务器是经常出现这样的错误呢: 错误信息如下: Can not connect to MySQL server Error: Too many connections Errno.: 1040 Similar error report has beed dispatched to administrator before. 从官方文档知道Linux上面编译安装的mysql默认的连接为100个 文档:http://dev.mysql.com/doc/refman/5.0/en/too-many-connections.html mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法 1、修改配置文件文件 修改/etc/my.cnf这个文件,在[mysqld] 中新增max_connections=N,如果你没有这个文件请从编译源码中的support-files文件夹中复制你所需要的*.cnf文件为到 /etc/my.cnf。我使用的是my-medium.cnf,中型服务器配置。例如我的[mysqld]的内容如下 [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 160M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M max_connections=1000 由于对mysql还不是很熟悉,所以很多参数没有修改。哈哈。。 2、非使用mysqld脚本自动启动的用户。 修改$MYSQL_HOME/bin/mysqld_safe文件 例如:/usr/local/mysql/bin/mysqld_safe这个文件 grep -n ‘max_connection’ […]
View Details在Apache, PHP, mysql的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接 影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验 进行判断,然后设置合理的参数。 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。 一、服务器硬件对MySQL性能的影响 ① 磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变。 MySQL每秒钟都在进行大量、复杂的查询操作,对磁盘的读写量可想而知。所以,通常认为磁盘I/O是制约MySQL性能的最大因素之一,对于日均访问量 在100万PV以上的Discuz!论坛,由于磁盘I/O的制约,MySQL的性能会非常低下!解决这一制约因素可以考虑以下几种解决方案: 使用RAID-0+1磁盘阵列,注意不要尝试使用RAID-5,MySQL在RAID-5磁盘阵列上的效率不会像你期待的那样快。 ②CPU 对于MySQL应用,推荐使用S.M.P.架构的多路对称CPU,例如:可以使用两颗Intel Xeon 3.6GHz的CPU,现在我较推荐用4U的服务器来专门做数据库服务器,不仅仅是针对于mysql。 ③物理内存对于一台使用MySQL的Database Server来说,服务器内存建议不要小于2GB,推荐使用4GB以上的物理内存,不过内存对于现在的服务器而言可以说是一个可以忽略的问题,工作中遇到了高端服务器基本上内存都超过了16G。 二、 MySQL自身因素 当解决了上述服务器硬件制约因素后,让我们看看MySQL自身的优化是如何操作的。对MySQL自身的优化主要是对其配置文件 my.cnf中的各项参数进行优化调整。下面我们介绍一些对性能影响较大的参数。 由于my.cnf文件的优化设置是与服务器硬件配置息息相关的,因而我们指定一个假想的服务器硬件环境: 下面,我们根据以上硬件配置结合一份已经优化好的my.cnf进行说明: #vim /etc/my.cnf以下只列出my.cnf文件中[mysqld]段落中的内容,其他段落内容对MySQL运行性能影响甚微,因而姑且忽略。 port = 3306 serverid = 1 socket = /tmp/mysql.sock skip-locking #避免MySQL的外部锁定,减少出错几率增强稳定性。 skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! back_log = 384 #back_log 参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 key_buffer_size = 256M #key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低! max_allowed_packet = 4M thread_stack = 256K table_cache = 128K sort_buffer_size = 6M #查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。 read_buffer_size = 4M #读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。 join_buffer_size = 8M #联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。 myisam_sort_buffer_size = 64M table_cache = 512 thread_cache_size = 64 query_cache_size = 64M […]
View Details1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200) as abstract from my_content_t 3、截取字符串 substring(str, pos) substring(str, pos, length) 说明:substring(被截取字段,从第几位开始截取) substring(被截取字段,从第几位开始截取,截取长度) 例:select substring(content,5) as abstract from my_content_t select substring(content,5,200) as abstract from my_content_t (注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 4、按关键字截取字符串 substring_index(str,delim,count) 说明:substring_index(被截取字段,关键字,关键字出现的次数) 例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t 结果:blog.jb51 (注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束) 函数简介: SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FORlen) 不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。 详情请查阅手册。 实例: 表1:user 表2:jl 期望效果:通过user表jlid字段存储的id值,读取jl表中的相应记录,这里想要读取,jl表中id为1、2的记录,首先想到用in,但是很遗憾由于 jlid字段存储的id值有2个,尽管从形式上符合in(1,2)的格式,但是如果你使用select jl.* from jl where jl.id in(select jlid from user where user.id=1)来查询的话,是不行的,他总是返回id为1的记录。 那么怎么办呢?如果我们能够分别得到1,2中的1和2就行了。好在mysql也提供了字符串截取函数SUBSTRING。 sql句法如下: SELECT […]
View DetailsMySQL master/slave配置过程 一般master用来写,表类型采用InnoDB,在并发很多的情况下,InnoDB的表现肯定要比MyISAM强很多;slave用来读,表类型采用MyISAM,一个master可以对应一个或多个slave,一般情况下来说读比写多吧,不过也要根据实际情况来定。 A服务器(WindowsXP): 192.168.1.54 主服务器master B服务器(Linux): 192.168.1.23 副服务器slave A服务器设置 #提示,此处最好用mysql的命令行执行命令,用SQLyog等工具时可能不行 mysql -u root -p mysql>GRANT FILE ON *.* TO backup@192.168.1.23 IDENTIFIED BY '1234'; mysql>GRANT REPLICATION SLAVE ON *.* TO backup@192.168.1.23; mysql>exit; 上面是Master开放一个账号backup密码1234给IP:192.168.1.23有档案处理的权限 停止mysql的服务,防止数据库中增加新的数据,确保复制到slave中的数据是一样的 (此时如果是用mysqldump导出数据的话,则不能停止mysql服务,停止web server就可以了,net stop apache服务名称) 停止mysql mysqladmin -u root -p shutdown 或用net stop mysql服务名称(如mysql) 导出数据库结构及数据 D:\>mysqldump -u root -p ms_test > ms_test.sql Enter password: **** 备份Master所有数据库结构及数据, MySQL是要在stop情况下 在A机器上修改my.ini 在[mysqld]区段内加入参数 log-bin=mysql-bin server-id=1 #sql-bin-update-same binlog-do-db=ms_test 重启A服务器mysql B服务器设置 设定/etc/my.cnf 在[mysqld]区段加入 #added by alex in 08/21/1008 master-host=192.168.1.54 master-user=backup master-password=1234 master-port=3306 server-id=2 master-connect-retry=60 replicate-do-db=ms_test 将A上备份的数据库结构及数据copy到B服务器上,然后将数据库结构及数据导入到B服务器中 因为导出的文件ms_test.sql中不含有创建数据库的sql语句, 一是方法是在B服务器上手动创建数据库 另一种方法是把create database if […]
View Details如下是转的,今天遇到类似问题,按照此方法处理成功了: 补充change的点位到新日志的第一点也是可以的(mysql50--98;mysql51--106;mysql55--107) 今天一台MySQL 服务器突然停电,重启后复制无法启动,总是报如下错误: 080922 10:29:01 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000778' at position 2874108, relay log ' ./relay-bin.003287' position: 2874245 080922 10:29:01 [Note] Slave I/O thread: connected to master 'replication@192.168.0.10:3306', replication started in log 'mysql-b in.000778' at position 2874108 080922 10:29:01 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( se rver_errno=1236) 080922 10:29:01 [ERROR] Got fatal error 1236: 'Client requested master to start replication from impossible position' from master wh en reading data from binary […]
View Details