MySQL 主从复制 详细讲解(一)

<span style="font-size:18px;">mysql复制的优点主要包括以下3个方面:(一般把"增删改"交给主数据库,"查询"交给从数据库 看需要而言)
	1:如果主服务器出现问题,可以快速切换到从服务器提供的服务
	2:可以在从服务器上执行查询操作,降低主服务器的访问压力
	3:可以在从服务器上执行备份,以避免备份期间影响主服务器的服务
	--注意:
		一般只有更新不频繁的数据或者对实时性要求高的数据可以通过从服务器查询,实时性高得数据仍能需要从主数据库获得

	一:主服务器的配置步骤:
		1:登入mysql数据库  mysql -uroot -p123456
		2:给从服务器设置授权用户
			grant all on *.* to [email protected] identified by "pass123";   (all表示所有权限的意思,授权所有的用户,关于数据库所有的表(只能是这台服务器192.168.10.2,如果主机是字符串单引号扩着'leyangjunpc'):账号是user1  密码是pass123)
			</span><span style="font-size:18px;">*  GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO [email protected]'192.168.0.%' IDENTIFIED BY 'p4ssword';</span><span style="font-size:18px;">(replication主从服务器复制代码的时候用的一个权限)

		3:修改主数据库服务器的配置文件my.cnf/ini,开启bin-log日志,并设置server-id的值
			log-bin=mysql-bin
			server-id=1     (主从server-id一定要保证唯一,不能相同) --一主多从也一样

		4:在主服务器上设置读读锁定有效,确保没有数据库操作,以便获得一个一致的快照(选做,建议这么做,这样好就行备份)
			flush tables with read lock;

		5:查看主服务器上当前的二进制日志名和偏移量值
			show master status;

		6:目前主数据库服务器已经停止更新操作,生成主数据库的备份,备份的方式两种:
			一:cp全部的数据
			二:mysqldump备份数据方法(建议使用)
			如果主数据库的服务可以停止,那么直接cp数据文件应该是最快的生成快照方法(就是cp数据文件去从数据库执行 tar -cvf data.tar data(整个拷贝))

		7:主数据库备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器上去执行:
			unlock tables;
		8: 把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压后放到对应的目录即可

	二:从服务器的配置步骤:

		->场景	(先把数据库复制过来,能后玩同步--主数据改动立马同步过来)
		主:mysql/bin/mysqldump -uroot -p test -l -F > "/tmp/test.sql";  主-备份文件
		主:能后将本分文件复制到从数据库:
			linux命令:scp /tmp/test.sql 192.168.10.2:/tmp/   将主/tmp/test.sql  复制到从数据库上去--隧道传输
		从:Reset master;  清下日志
		从:将刚才复制过来的数据恢复数据test.sql
			mysql/bin/mysql -uroot -p123 test </tmp/test.sql

		检查看是否联通主服务器:mysql/bin/mysql -uuser1 -p123455 test -h192.168.10.1
		1:配置文件中:修改数据库的server-id,注意server-id的值必须是唯一的,不能和主数据的配置相同,如果有多个
		   从服务器,每个从服务器必须有自己唯一的server-id值
		   开启bin-log
		2:配置文件中->开启和配置:(报错的话用下面的)
			master-host = 192.168.10.1    (主数据库IP)
			master-user = user1           (授权配置的用户名)
			master-password = 123456      (授权配置的密码)
			master-port = 3306            (链接主服务器用的端口)
			--重启MySQL服务器

			*重启报错处理方式*:
			错误如下:
			120401 15:45:44 [ERROR] C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld: unknown variable 'master-host=192.168.8.111'
			120401 15:45:44 [ERROR] Aborting

		  *千万注意------解决方案--------------------
			Mysql版本从5.1.7以后开始就不支持“master-host”类似的参数
			在从库上执行如下命令;
			change master to master_host='masterIP', master_user='slave', master_password='slvaePASS';

			slave start;重启

		3:配置完后->检测是否和主服务器同步方法(数据同步成功不成功就看*):
			show slave status\G
			看到:* Salve_IO_Running :Yes   (表示成功的把主服务器的bin-log日志拿回来了且同步,写一行我就同步一行)
				  * Salve_SQL_Running :Yes  (拿过来的bin-log日志并成功的执行了sql语句,一主数据一致)
				  --看到为yes的说明已经和主服务器取得同步
				  master_Log_File:mysql-bin.00002    (同步过来的bin-log日志)
				  Read_Master_Log_Pos:106             (位置,show master status主看下就知道)
				  Connect_Retry:60                    (每隔60秒回去主服务器同步bin-log日志)
				  踪迹日志:
				  Relay-Log_File:localhost-relay-bin.00004   (从服务器生成的日志文件,不叫mysql-bin.xxx)

			数据同步过来后,我们查询数据就可以去从服务器上查询不用去主服务器,减轻负载

                 4:从数据库常用命令
			(1)start slave       启动复制线程(去主服务器拿数据)
			(2)stop  salve       停止复制线程
			(3)show slave status 查看数据库状态-与主服务器一些链接状态信息
			(4)show master logs   查看主数据库bin-log日志
			(5)change master to   动态改变主服务器的配置
			(6)show processlist   查看数据库运行进程

		5:mysql常见错误
			********从数据库无法同步********
			show slave status 显示slave_sql_runing为NO,seconds_behind_master 为null
			原因:A:程序可能在slave上进行了写操作
				  B:也可能是slave机器重启后,事物回滚造成的
			解决一:slave stop;
				    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  设置一个全局的参数
				    slave start;

			解决二:(1):salve(从)库, slave stop;   --停掉slave服务
					    master(主)库,show master status; 得到&A日志文名 &B 位置--得到主服务器上当前的二进制日志和偏移量 

					(2)salve库:查看状态,能后到salve服务器上执行手动同步--人为操作
						change master to
						master_host="192.168.101.1",
						master_uset="user1",
						master_password="pass123456",
						master_port=3306,
						master_log_file="mysql-bin.00003",     步骤(1)查出来的&A 日志文件名
						master_log_pos=98;					   步骤(1)查出来的&B 位置 --能后手动同步

					(3)启动salve服务
						salve start;

					(4)通过show salve status 查看
						Salve_SQL_Runing 为yes,
						Seconds_Behind_Master为0即为正常</span>
时间: 2024-07-30 17:31:40

MySQL 主从复制 详细讲解(一)的相关文章

MySQL 主从复制 详细讲解(二)快速实现

<span style="font-size:18px;">简单步骤总结--快速实现: 一:主服务器的配置步骤: 2:给从服务器设置授权用户 grant all on *.* to [email protected] identified by "pass123"; (all表示所有权限的意思,授权所有的用户,关于数据库所有的表(只能是这台服务器192.168.10.2,如果主机是字符串单引号扩着'leyangjunpc'):账号是user1 密码是pa

MySQL 主从复制 详细实例讲解 与 常见错误解决方法

一.主机ip 192.168.0.128 ,从机ip:192.168.0.130 分别测试是否能ping通对方,如果不能,请关闭防火墙或开放对应端口 二.主服务器配置 1.备份主服务器的数据 mysqldump -uroot --all-databases --lock-all-tables > ~/master_db.sql -p 将来会在家目录下生产一个master_db.sql的数据库文件,即备份文件 2.修改主服务器的配置文件 vim /etc/my.cnf 添加 [mysqld] lo

mysql存储过程详细讲解及完整实例下载

一.存储过程概念 1.存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集.经编译后存储在数据库 中. 2.存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过 程带有参数)来执行它. 3.存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中. 4.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量. 5.同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用.二.存储过程优

MySQL MEM_ROOT详细讲解

这篇文章会详细解说MySQL中使用非常广泛的MEM_ROOT的结构体,同时省去debug部分的信息,仅分析正常情况下,mysql中使用MEM_ROOT来做内存分配的部分. 在具体分析之前我们先例举在该结构体使用过程中用到的一些宏: #define MALLOC_OVERHEAD 8 //分配过程中,需要保留一部分额外的空间 #define ALLOC_MAX_BLOCK_TO_DROP 4096 //后续会继续分析该宏的用途 #define ALLOC_MAX_BLOCK_USAGE_BEFOR

MySQL 主从复制与读写分离

Mysql主从复制作用原理 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作.2.做数据的热备3.架构的扩展.业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能.mysql主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记

MySQL主从复制实现数据库服务器双机热备详细讲解

1.mysq主从复制简介 1.1.复制介绍 MySQL支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新.如果你想要设置链式复制服务器,从服务器本身也可以充当主服务器.请注意当你进行复制时,所

MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

Technorati 标签: 那你魔鬼 一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读

MySQL:迄今为止讲解的最详细的一篇,掌握数据库其实很容易

关于程序员,除了做项目.看视频来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书!MySQL俨然已经成为了IT技术人员必须掌握的核心技能之一! <MySQL从入门到精通> 本书详细介绍了如何安装.管理.备份.维护和优化一个 MySQL 系统.对于每一件服务器操作都提出了多种的解决方案.对于每一种的方法,虽然不一定都是非常实用的方法,读者能通过这些方法,熟悉 MySQL 的特点和强大的功能. 第一章简单介绍了 MySQL 的历史.特点,同时对 SQL 的语法进行了简单的介绍.如果读

mysql主从复制以及读写分离

mysql的主从复制以及读写分离 前言:我们前面搭建过LAMP和LNMP,做过了web服务器群集和热备,web服务器坏了我们是不怕了,但是我们要知道,网站的数据有很多是存储在数据库里面的,例如注册的会员,发的文章,购物的订单等信息.当然我们可以给数据库做备份,但是如果每天00:00做一次备份,那么如果在23:59数据丢失了,那么就会丢失一天的数据,有没有一种方法能实现实时备份,就是说有数据产生就立即备份,答案当然是有,也就是今天我们要学习的mysql主从复制.有点类似于前面我们学习过的rsync