mysql主从数据库的配置说明文档_第1页
mysql主从数据库的配置说明文档_第2页
mysql主从数据库的配置说明文档_第3页
mysql主从数据库的配置说明文档_第4页
mysql主从数据库的配置说明文档_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、主从配置的原理:MySQL的Replication是一个异步的复制过程,从一个MySQLinstace(我们称之为Master)复制到另一个MySQLinstance(我们称之Slave)。在Master与Slave之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在Slave端,另外一个线程(IO线程)在Master端。要实现MySQL的Replication,首先必须打开Master端的BinaryLog(MySQL-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。打开MySQL的BinaryLog可以通过在启动MySQLServer的过程中使用“—log-bin”参数选项,或者在f配置文件中的MySQLd参数组([MySQLd]标识后的参数部分)增加“log-bin”参数项。MySQL复制的基本过程如下:1.Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;2.Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端的BinaryLog文件的名称以及在BinaryLog中的位置;3.Slave的IO线程接收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog文件(MySQL-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”4.Slave的SQL线程检测到RelayLog中新增加了内容后,会马上解析该Log文件中的内容成为在Master端真实执行时候的那些可执行的Query语句,并在自身执行这些Query。这样,实际上就是在Master端和Slave端执行了同样的Query,所以两端的数据是完全一样的。二、设置MySQL主从配置的优点1、解决web应用系统,数据库出现的性能瓶颈,采用数据库集群的方式来实现查询负载;一个系统中数据库的查询操作比更新操作要多得多,通过多台查询服务器将数据库的查询分担到不同的查询服务器上从而提高查询效率。2、MySQL数据库支持数据库的主从复制功能,使用主数据库进行数据的插入、删除与更新操作,而从数据库则专门用来进行数据查询操作,这样可以将更新操作和查询操作分担到不同的数据库上,从而提高了查询效率。三、主从数据库服务器的配置(可以设置一个或者多个从服务器)环境:数据库版本号:5.5.32MySQL主库电脑的IP:5丛库电脑的IP:1首先查看两台机器之间的网络是否是通的用其中的一台ping另外一台,如下用IP地址为1的主机ping5的机器,其结果如下:如果结果如上图所示,则说明两台机器的网络是通的,否则请先检查网络。2、打开主数据库,在主数据库里面建一个需要同步的数据库,如下user数据库配置主数据库服务器(1)、修改MySQL的配置文件(my.ini),如下,在mysqlld里面添加:上面的这些配置的含义:-server-id 顾名思义就是服务器标识id号了,每一台服务器都有一个固定 的标示id。-log-bin MySQL进行主从复制是通过二进制的日志文件来进行的,此处是 开启MySQL的日志功能-binlog-do-db 是你需要复制的数据库名称,-binlog-ignore-db 是不需要复制的数据库名称(2)、重新启动主数据库,给主数据库服务器授予一个可以进行复制的用户,如下的slave,这样从服务器就能通过这个连接用户有权限来访问主数据库服务器:GRANTREPLICATIONSLAVE,REPLICATIONCLIENT,RELOAD,SUPERON*.*TO'slave'@'1'IDENTIFIEDBY'123456'withgrantoption;如下: 密码 用户权限 用户名从机IP设置完毕以后可以通过NAVCAT查看权限:(3)、重新启动主数据库,通过mysql>showmasterstatus;监控主服务器的状态*记下file和possion的值,这里的file,position会在从库的配置里用到。4、从数据库服务器的配置(1)、修改MySQL的配置文件(my.ini),如下,在mysqlld里面添加:、#server-id=1####必须把server-id=1注释掉,上面的这些配置的含义:-server-id=2从数据库的唯一标示id为2-master-host=5#主数据库的ip地址-master-user=slave #主数据库已经授权的可以连接复制的用户的用户名-master-password=123456 #主数据库已经授权的可以连接复制的用户的密码-master-port=3306 #主数据库的端口号、启动从数据库我当时遇到的情况是没有成功启动,查看error日志发现然后把下面四行注释掉master-host=5#主数据库的ip地址master-user=slave #主数据库已经授权的可以连接复制的用户的用户名master-password=123456 #主数据库已经授权的可以连接复制的用户的密码master-port=3306 #主数据库的端口号再执行下面的命令。slavestop;changemastertomaster_host='5',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=107;slavestart;如下:(3)、可以通过showslavestatus;来看看从库的情况。不过信息太多。为了方便查看可以用下面这个命令showslavestatus\G;显示结果如下:查看上面的Slave_IO_Running:Yes和Slave_SQL_Running:Yes2个都为yes则证明主从同步正常,如果有任一个显示NO,则证明同步有问题。可以查看数据库日志文件,里面基本上会显示出错误之处,根据错误一步一步排查,基本上都可以解决的。在从数据库中创建一个与要备份的主数据库相同的数据库名,则配置完成。从数据库会随着主数据库的改变动态的同步数据库。如下,在主数据库的user表中创建一个user表此时查看从数据库,可以发现:则说明主从数据库搭建成功。五、常见问题与解答1、现象:修改完配置后,重启MySQL,提示MySQLmanagerorserverPIDfilecouldnotbefound解决:查找进程中的MySQL,kill掉>serviceMySQLrestart>ps-aux|grepmyslq>kill进程号#serviceMySQLstart注:MySQL.sock文件在MySQL启动后才会生成,位置为/tmp下或/var/lib/MySQL/下2、现象:从数据库无法同步,showslavestatus显示Slave_SQL_Running为No,Seconds_Behind_Master为null原因:a.程序可能在slave上进行了写操作b.也可能是slave机器重起后,事务回滚造成的.解决:方法一:MySQL>slavestop;MySQL>setGLOBALSQL_SLAVE_SKIP_COUNTER=1;MySQL>slavestart;解决:方法二:Slave库,MySQL>slavestop;--停掉slave服务Master库,MySQL>showmasterstatus;+----------------------+----------+--------------+------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+----------------------+----------+--------------+------------------+|MySQL-bin.000040|324|||+----------------------+----------+--------------+------------------+然后到slave服务器上执行手动同步MySQL>changemasterto>master_host='',>master_user='repuser',>master_password='123456',>master_port=3306,>master_log_file='MySQL-bin.000040',>master_log_pos=324;启动slave服务,MySQL>slavestart;通过showslavestatus查看Slave_SQL_Running为Yes,Seconds_Behind_Master为0,即为正常。注:手动同步需要停止master的写操作!3、现象:从数据库无法同步,showslavestatus显示Slave_IO_Running为No,Seconds_Behind_Master为null解决:重启主数据库serviceMySQLrestartMySQL>showmasterstatus;+------------------+----------+--------------+------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+------------------+----------+------

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论