热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Mysql主从安装配置_MySQL

Mysql主从安装配置
bitsCN.com Mysql主从安装配置 环境:主从服务器上的MySQL数据库版本同为5.1.34主机IP:192.168.0.1从机IP:192.168.0.2
一. MySQL主服务器配置1.编辑配置文件/etc/my.cnf# 确保有如下行 server-id = 1log-bin=mysql-binbinlog-do-db=mysql #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可binlog-ignore-db=mysql #不需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里slave-skip-errors #是跳过错误,继续执行复制操作
2.建立用户mysql> grant replication slave on *.* to slave@192.168.0.2 identified by ‘111111′;# grant replication slave on *.* to ‘用户名’@'主机’ identified by ‘密码’;# 可在Slave上做连接测试: mysql -h 192.168.0.1 -u test -p
3.锁主库表mysql> FLUSH TABLES WITH READ LOCK;
4.显示主库信息记录File和Position,从库设置将会用到=====================mysql> SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File | Position | Binlog_do_db | Binlog_ignore_db |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 106 | | |+------------------+----------+--------------+------------------+
5.另开一个终端,打包主库cd /usr/local/mysql #mysql库目录tar zcvf var.tar.gz var ============================
二.MySQL从服务器配置1、传输拿到主库数据包、解包# cd /usr/local/mysql# scp 192.168.0.1:/usr/local/mysql/var.tar.gz .# tar zxvf var.tar.gz
2、查看修改var文件夹权限# chown -R mysql:mysql var3.编辑 /etc/my.cnfserver-id=2log-bin=mysql-binmaster-host=192.168.0.1master-user=slavemaster-password=111111master-port=3306replicate-do-db=test #需要备份的数据库名replicate-ignore-db=mysql #忽略的数据库master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)log-slave-updates #这个参数一定要加上,否则不会给更新的记录些到二进制文件里slave-skip-errors #是跳过错误,继续执行复制操作
4、验证连接MASTER# mysql -h192.168.0.1 -uslave -ppasswordmysql> show grants for slave@192.168.0.2;5、在SLAVE上设置同步设置连接MASTER MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position============================mysql> slave stop;mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='slave',MASTER_PASSWORD='111111',MASTER_LOG_FILE='
mysql-bin.000001',MASTER_LOG_POS=106; 6、启动SLAVE服务mysql> slave start;
7、查看SLAVE状态mysql> SHOW SLAVE STATUS/G;其中 Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",表明 Slave 的 I/O 和 SQL 线程
都在正常运行。8、解锁主库表mysql> UNLOCK TABLES;到此主从库搭建成功。可以在主库上插入数据测试同步是否正常。
常见错误及解决方法:常见问题的处理: 1:在从库上面show slave status/G;出现下列情况, Slave_IO_Running: Yes Slave_SQL_Running: No Seconds_Behind_Master: NULL 原因:a.程序可能在slave上进行了写操作b.也可能是slave机器重起后,事务回滚造成的. 解决方法: 进入master mysql> show master status;+----------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+----------------------+----------+--------------+------------------+| mysql-bin.000040 | 324 | | |+----------------------+----------+--------------+------------------+然后到slave服务器上执行手动同步 slave stop;change master to master_host='10.14.0.140',master_user='repl',master_password='111111',master_port=3306,master_log_file='mysql-bin.000040',master_log_pos=324;slave start;show slave status/G; 2、现象:从数据库无法同步,show slave status显示Slave_IO_Running为No,Seconds_Behind_Master
为null 解决:重启主数据库 service mysql restart mysql> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 98 | | |+------------------+----------+--------------+------------------+slave stop;change master to Master_Log_File='mysql-bin.000001',Master_Log_Pos=98slave start;或是这样:stop slave;set global sql_slave_skip_counter =1;start slave; 这个现象主要是master数据库存在问题,我在实际的操作中先重启master后重启slave即可解决这问题,
出现此问题,必须要要重启master数据库。
1.主辅库同步主要是通过二进制日志来实现同步的。2.在启动辅库的时候必须先把数据同步,并删除日志目录下的:master.info文件。因为master.info记录
了上次要连接主库的信息,如果不删除,即使my.cnf里进行了修改,也不起作用。因为读取的还是
master.info文件里的信息。 在mysql复制环境中,有8个参数可以让我们控制,需要复制或需要忽略不进行复制的DB或table分别为: 下面二项需要在Master上设置: Binlog_Do_DB:设定哪些数据库需要记录Binlog Binlog_Ignore_DB:设定哪里数据库不需要记录Binlog 优点是Master端的Binlog记录所带来的Io量减少,网络IO减少,还会让slave端的IO线程,SQL线程减少,
从而大幅提高复制性能, 缺点是mysql判断是否需要复制某个事件不是根据产生该事件的查询所在的DB,而是根据执行查询时刻所在
的默认数据库(也就是登录时指定的库名或运行"use database"中指定的DB),只有当前默认DB和配置中
所设定的DB完全吻合时IO线程才会将该事件读取给slave的IO线程.所以,如果在默认 DB和设定须要复制的
DB不一样的情况下改变了须要复制的DB中某个Table中的数据,该事件是不会被复制到Slave中去的,这样就
会造成Slave端的数据和Master的数据不一致.同样,在默认的数据库下更改了不须要复制的数据库中的数据,
则会被复制到slave端,当slave端并没有该数据库时,则会造成复制出错而停止. 下面六项需要在slave上设置: Replicate_Do_DB:设定需要复制的数据库,多个DB用逗号分隔 Replicate_Ignore_DB:设定可以忽略的数据库. Replicate_Do_Table:设定需要复制的Table Replicate_Ignore_Table:设定可以忽略的Table Replicate_Wild_Do_Table:功能同Replicate_Do_Table,但可以带通配符来进行设置。 Replicate_Wild_Ignore_Table:功能同Replicate_Do_Table,功能同Replicate_Ignore_Table,可以带通配符。 优点是在slave端设置复制过滤机制,可以保证不会出现因为默认的数据库问题而造成Slave和Master数据
不一致或复制出错的问题. 缺点是性能方面比在Master端差一些.原因在于:不管是否须要复制,事件都会被IO线程读取到Slave端,
这样不仅增加了网络IO量,也给Slave端的IO线程增加了Relay Log的写入量. 同步原理说明 MySQL的Replication基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等)。MySQL使用3个线程来完成Replication工作,具体分布是主上1个相关线程、从上2个相关线程;主的相关线程可以理解为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程、从服务器分别为IO和
SQL线程;主服务器创建将binlog中的内容发送到从服务器。从服务器I/O线程读取主服务器Binlog Dump线程发送的
内容并将该数据拷贝到从服务器数据目录中的中继日志文件(relay-log)里,SQL线程用于读取中继日志
并执行日志中包含的更新。 MySQL的Replication是单向,异步同步 MySQL同步机制基于master把所有对数据库的更新、删除等)都记录在二进制日志里。因此,想要启用同步
机制,在master就必须启用二进制日志。每个slave接受来自master上在二进制日志中记录的更新操作,
因此在slave上执行了这个操作的一个拷贝。应该非常重要地意识到,二进制日志只是从启用二进制日志开
始的时刻才记录更新操作的。所有的 slave必须在启用二进制日志时把master上已经存在的数据拷贝过来。
如果运行同步时slave上的数据和master上启用二进制日志时的数据不一致的话,那么slave同步就会失败。
把master上的数据拷贝过来的方法之一实在slave上执行 LOAD DATA FROM MASTER 语句。不过要注意,LOAD DATA FROM MASTER是从MySQL 4.0.0之后才开始可以用的,而且只支持master上的 MyISAM 类型表。同样地,
这个操作需要一个全局的读锁,这样的话传送日志到slave的时候在master上就不会有更新操作了。当实现了
自由锁表热备份时(在 MySQL 5.0中),全局读锁就没必要了。由于有这些限制,因此我们建议只在master上
相关数据比较小的时候才执行 LOAD DATA FROM MASTER 语句,或者在master上允许一个长时间的读锁。
由于每个系统之间 LOAD DATA FROM MASTER 的速度各不一样,一个比较好的衡量规则是每秒能拷贝1MB数据。
这只是的粗略的估计,不过master和slave都是奔腾700MHz的机器且用 100MBit/s网络连接时就能达到这个
速度了。slave上已经完整拷贝master数据后,就可以连接到master上然后等待处理更新了。如果 master
当机或者slave连接断开,slave会定期尝试连接到master上直到能重连并且等待更新。重试的时间间隔由 –master-connect-retry 选项来控制,它的默认值是60秒。每个slave都记录了它关闭时的日志位置。
master是不知道有多少个slave连接上来或者哪个slave从什么时候开始更新。
MySQL同步功能由3个线程(master上1个,slave上2个)来实现。执行 START SLAVE 语句后,slave就创建
一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志中的语句。master创建一个线程来把
日志的内容发送到slave上。这个线程在master上执行 SHOW PROCESSLIST 语句后的结果中的 Binlog Dump
线程便是。slave上的I/O线程读取master的 Binlog Dump 线程发送的语句,并且把它们拷贝到其数据目录
下的中继日志(relay logs)中。第三个是SQL线程,salve用它来读取中继日志,然后执行它们来更新数据。
如上所述,每个mster/slave上都有3个线程。每个 master上有多个线程,它为每个slave连接都创建一个线程,每个slave只有I/O和SQL线程。在MySQL 4.0.2以前,同步只需2个线程(master和slave各一个)。slave上的I/O
和SQL线程合并成一个了,它不使用中继日志。slave上使用2个线程的优点是,把读日志和执行分开成2个
独立的任务。执行任务如果慢的话,读日志任务不会跟着慢下来。例如,如果slave停止了一段时间,那么
I/O线程可以在slave启动后很快地从master上读取全部日志,尽管SQL线程可能落后I/O线程好几的小时。
如果slave在SQL线程没全部执行完就停止了,但I/O线程却已经把所有的更新日志都读取并且保存在本地的中
继日志(relay-log)中了,因此在slave再次启动后就会继续执行它们了。这就允许在 master上清除二进制
日志,因为slave已经无需去master读取更新日志了。执行 SHOW PROCESSLIST 语句就会告诉我们所关心的master和slave上发生的情况。
作者 zixinli bitsCN.com
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
author-avatar
SuperBaby蜜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有