仓酷云

标题: 绝无经由的实例解说怎样设置MySQL数据库主从复制 [打印本页]

作者: 变相怪杰    时间: 2015-1-16 20:13
标题: 绝无经由的实例解说怎样设置MySQL数据库主从复制
“对于MySQL数据库,无论是在开发方面,还是支持方面,现在有大量强大的MySQL学习教程可以选择。每一个新手开发者可以轻松地使用MySQL数据库进行开发。这篇论坛文章(赛迪网手艺社区)次要先容了MySQL数据库主从复制的相干观点及设置办法,具体内容请人人参考下文:<Pstyle="TEXT-INDENT:2em">MySQL撑持单向、异步复制,复制过程当中一个服务器充任主服务器,而一个或多个别的服务器充任从服务器。主服务器将更新写进二进制日记文件,并保护日记文件的一个索引以跟踪日记轮回。当一个从服务器毗连到主服务器时,它关照主服务器从服务器在日记中读取的最初一次乐成更新的地位。从服务器吸收从当时起产生的任何更新,然后封闭并守候主服务器关照下一次更新。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">为何利用主从复制?<Pstyle="TEXT-INDENT:2em">1、主服务器/从服务器设置增添了强健性。主服务器呈现成绩时,你能够切换到从服务器作为备份。<Pstyle="TEXT-INDENT:2em">2、经由过程在主服务器和从服务器之间切分处置客户查询的负荷,能够失掉更好的客户呼应工夫。可是不要同时在主从服务器长进行更新,如许大概引发抵触。<Pstyle="TEXT-INDENT:2em">3、利用复制的另外一个优点是可使用一个从服务器实行备份,而不会搅扰主服务器。在备份过程当中主服务器能够持续处置更新。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">MySQL利用3个线程来实行复制功效(个中1个在主服务器上,另两个在从服务器上。当收回STARTSLAVE时,从服务器创立一个I/O线程,以毗连主服务器并让主服务器发送二进制日记。主服务器创立一个线程将二进制日记中的内容发送到从服务器。从服务器I/O线程读取主服务器BinlogDump线程发送的内容并将该数据拷贝到从服务器数据目次中的当地文件中,即中继日记。第3个线程是SQL线程,从服务器利用此线程读取中继日记并实行日记中包括的更新。SHOWPROCESSLIST语句能够查询在主服务器上和从服务器上产生的关于复制的信息。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">默许中继日记利用host_name-relay-bin.nnnnnn情势的文件名,个中host_name是从服务器主机名,nnnnnn是序列号。用一连序列号来创立一连中继日记文件,从000001入手下手。从服务器跟踪中继日记索引文件来辨认今朝正利用的中继日记。默许中继日记索引文件名为host_name-relay-bin.index。在默许情形,这些文件在从服务器的数据目次中被创立。中继日记与二进制日记的格局不异,而且能够用mysqlbinlog读取。当SQL线程实行完中继日记中的一切事务后,中继日记将会被主动删除。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">从服务器在数据目次中别的创立两个形态文件--master.info和relay-log.info。形态文件保留在硬盘上,从服务器封闭时不会丧失。下次从服务器启动时,读取这些文件以断定它已从主服务器读取了几二进制日记,和处置本人的中继日记的水平。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">设置主从复制:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">1、确保在主服务器和从服务器上安装的MySQL版原形同,而且最好是MySQL的最新不乱版本。<Pstyle="TEXT-INDENT:2em">2、在主服务器上为复制设置一个毗连账户。该账户必需授与REPLICATIONSLAVE权限。假如账户仅用于复制(保举如许做),则不必要再授与任何别的权限。<Pstyle="TEXT-INDENT:2em">mysql>GRANTREPLICATIONSLAVEON*.*<Pstyle="TEXT-INDENT:2em">->TOreplication@%.yourdomain.comIDENTIFIEDBYslavepass;<Pstyle="TEXT-INDENT:2em">3、实行FLUSHTABLESWITHREADLOCK语句清空一切表和块写进语句:<Pstyle="TEXT-INDENT:2em">mysql>FLUSHTABLESWITHREADLOCK;<Pstyle="TEXT-INDENT:2em">坚持mysql客户端程序不要加入。开启另外一个终端对主服务器数据目次做快照。<Pstyle="TEXT-INDENT:2em">shell>cd/usr/local/mysql/<Pstyle="TEXT-INDENT:2em">shell>tar-cvf/tmp/mysql-snapshot.tar./data<Pstyle="TEXT-INDENT:2em">假如从服务器的用户账户与主服务器的分歧,你大概不想复制mysql数据库。在这类情形下,应从回档中扫除该数据库。你也不必要在回档中包含任何日记文件大概master.info或relay-log.info文件。<Pstyle="TEXT-INDENT:2em">当FLUSHTABLESWITHREADLOCK所置读锁定无效时(即mysql客户端程序不加入),读取主服务器受骗前的二进制日记名和偏移量值:<Pstyle="TEXT-INDENT:2em">mysql>SHOWMASTERSTATUS;<Pstyle="TEXT-INDENT:2em">+---------------+----------+--------------+------------------+<Pstyle="TEXT-INDENT:2em">|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|<Pstyle="TEXT-INDENT:2em">+---------------+----------+--------------+------------------+<Pstyle="TEXT-INDENT:2em">|mysql-bin.003|73|test|manual,mysql|<Pstyle="TEXT-INDENT:2em">+---------------+----------+--------------+------------------+File列显现日记名,而Position显现偏移量。在该例子中,二进制日记值为mysql-bin.003,偏移量为73。纪录该值。今后设置从服务器时必要利用这些值。它们暗示复制坐标,从服务器应从该点入手下手从主服务器长进行新的更新。

<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">假如主服务器运转时没有启用--logs-bin,SHOWMASTERSTATUS显现的日记名和地位值为空。在这类情形下,当今后指定从服务器的日记文件和地位时必要利用的值为空字符串()和4.<Pstyle="TEXT-INDENT:2em">获得快照并纪录日记名和偏移量后,回到前一中端从头启用写举动:<Pstyle="TEXT-INDENT:2em">mysql>UNLOCKTABLES;<Pstyle="TEXT-INDENT:2em">4、确保主服务器主机上my.cnf文件的[mysqld]部分包含一个log-bin选项。该部分还应有一个server-id=Master_id选项,个中master_id必需为1到232C1之间的一个正整数值。比方:<Pstyle="TEXT-INDENT:2em">[mysqld]<Pstyle="TEXT-INDENT:2em">log-bin<Pstyle="TEXT-INDENT:2em">server-id=1<Pstyle="TEXT-INDENT:2em">假如没有供应那些选项,应增加它们偏重启服务器。<Pstyle="TEXT-INDENT:2em">5、中断从服务器上的mysqld服务并在其my.cnf文件中增加上面的行:<Pstyle="TEXT-INDENT:2em">[mysqld]<Pstyle="TEXT-INDENT:2em">server-id=2<Pstyle="TEXT-INDENT:2em">slave_id值同Master_id值一样,必需为1到232C1之间的一个正整数值。而且,从服务器的ID必需与主服务器的ID不不异。<Pstyle="TEXT-INDENT:2em">6、将数据备据目次中。确保对这些文件和目次的权限准确。服务器MySQL运转的用户必需可以读写文件,好像在主服务器上一样。<Pstyle="TEXT-INDENT:2em">Shell>chown-Rmysql:mysql/usr/local/mysql/data<Pstyle="TEXT-INDENT:2em">7、启动从服务器。在从服务器上实行上面的语句,用你的体系的实践值交换选项值:<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">mysql>CHANGEMASTERTO<Pstyle="TEXT-INDENT:2em">->MASTER_HOST=master_host_name,<Pstyle="TEXT-INDENT:2em">->MASTER_USER=replication_user_name,<Pstyle="TEXT-INDENT:2em">->MASTER_PASSWord=replication_password,<Pstyle="TEXT-INDENT:2em">->MASTER_LOG_FILE=recorded_log_file_name,<Pstyle="TEXT-INDENT:2em">->MASTER_LOG_POS=recorded_log_position;<Pstyle="TEXT-INDENT:2em">8、启动从服务器线程:<Pstyle="TEXT-INDENT:2em">mysql>STARTSLAVE;<Pstyle="TEXT-INDENT:2em">实行这些程序后,从服务器应毗连主服务器,并增补自从快照以来产生的任何更新。<Pstyle="TEXT-INDENT:2em">9、假如呈现复制毛病,从服务器的毛病日记(HOSTNAME.err)中也会呈现毛病动静。10、从服务器复制时,会在其数据目次中发明文件master.info和HOSTNAME-relay-log.info。从服务器利用这两个文件跟踪已处置了几主服务器的二进制日记。不要移除或编纂这些文件,除非你切实知你正在做甚么并完整了解其意义。即便如许,最好是利用CHANGEMASTERTO语句。
MySQL采用双重授权(DualLicensed),它们是GPL和MySQLAB制定的商业许可协议。
作者: 小魔女    时间: 2015-1-18 18:54
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
作者: 海妖    时间: 2015-1-24 15:27
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
作者: 愤怒的大鸟    时间: 2015-2-1 19:47
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者: 小女巫    时间: 2015-2-7 15:47
我个人认为就是孜孜不懈的学习
作者: 仓酷云    时间: 2015-2-22 16:09
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
作者: 透明    时间: 2015-3-7 01:09
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
作者: 只想知道    时间: 2015-3-14 03:58
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
作者: 若相依    时间: 2015-3-21 00:19
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2