MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维 护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那 时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。
为什么使用主从复制?
1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。
2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。但是不要同时在主从服务器上进行更新,这样可能引起冲突。
3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。
MySQL 使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让主服务器发送二进制日志。主服务器创建一个线程将二进制日志中的内容发送到从服务器。从服 务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志。第3个线程是SQL线程,从服务器使用此线程读取中继日志并执行日志中包含的更新。SHOW PROCESSLIST语句可以查询在主服务器上和从服务器上发生的关于复制的信息。
默认中继日志使用 host_name-relay-bin.nnnnnn形式的文件名,其中host_name是从服务器主机名,nnnnnn是序 列号。用连续序列号来创建连续中继日志文件,从000001开始。从服务器跟踪中继日志索引文件来识别目前正使用的中继日志。默认中继日志索引文件名为 host_name-relay-bin.index。在默认情况,这些文件在从服务器的数据目录中被创建。中继日志与二进制日志的格式相同,并且可以用 mysqlbinlog读取。当SQL线程执行完中继日志中的所有事件后,中继日志将会被自动删除。
从服务器在数据目录中另外创建两个状态文件--master.info和relay-log.info。状态文件保存在硬盘上,从服务器关闭时不会丢失。下次从服务器启动时,读取这些文件以确定它已经从主服务器读取了多少二进制日志,以及处理自己的中继日志的程度。
1.配置主服务器
打开mysql的配置
vim/usr/local/webserver/mysql/my.cnf
开启server_id和bin-log日志
server_id = '唯一值'(开启server_id)
log-bin = /data/mysql/3306/binlog/binlog
2. 配置从服务器
打开mysql的配置
vim /usr/local/webserver/mysql/my.cnf
开启server_id和bin-log日志
server_id = '唯一值'(开启server_id)
log-bin = /data/mysql/3306/binlog/binlog
修改完配置后记得重启数据库 service mysqld restart
关键点:从数据库中必须有一个用户可以在从数据库的机器上去连接主服务器
3.在主数据库中给从数据库一个用户
进入mysql /usr/local/webserver/mysql/bin/mysql -p 密码
mysql> grant all on *.* to 用户@从数据库的ip identified by '密码';
flush privileges;刷新权限
在主数据库中查看 show master status;主数据库的最新的bin-log日志文件名
4.进入从数据库,执行下边的sql语句
检查从数据库是否可以进入
mysql /usr/local/webserver/mysql/bin/mysql -u
主数据库给的用户 -p 密码 -h主数据库的ip ,如果可以进入,则退出
mysql /usr/local/webserver/mysql/bin/mysql -u
密码
特别,在执行change之前必须关闭从库 stop slave;
mysql> change master to master_host='主数据库ip',master_user='主数据库授权的用户名',master_password='主数据库授权的密码',master_log_file='主数据库的bin-log日志的文件名',master_log_pos='主数据库的bin-log日志的position值'
5.开启从库 start slave;
6.查看从库状态 show slave status\G;
change master to master_host='101.200.136.226',master_user='zt',master_password='zt',master_log_file=' binlog.000001 ',master_log_pos=4826;
如果
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK没问题
主从配置完毕
binlog命令
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001
查看binlog日志文件
reset master 初始化binlog日志
show master status; 查看最新的日志文件和position值
flush logs 刷新log日志文件
start slave 开启从库
stop slave 停止从库
show slave status;查看从库状态
通过binlog日志恢复数据
进入binlog目录
cd /data/mysql/3306/binlog/
查看binlog列表 ls
查看binlog日志文件
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001
恢复数据
/usr/local/webserver/mysql/bin/mysqlbinlog binlog.000001 | /usr/local/webserver/mysql/bin/mysql -p(在没有清空binlog日志之前可以恢复)
如果执行了 reset master 就无法恢复
以上就是对 mysql 数据库 主从复制的配置资料整理,开发数据库需要的朋友可以看下。
本文向大家介绍Linux下MySQL数据库的主从同步复制配置,包括了Linux下MySQL数据库的主从同步复制配置的使用技巧和注意事项,需要的朋友参考一下 Linux下MySQL数据库的主从同步配置的好处是可以把这个方式当做是一个备份的方法,用来实现读写分离,缓解一个数据库的压力。让运行海量数据的时候无论是从速度还是效率上都大大提高,Mysql的主从复制至少是需要两个Mysql的服务,当然Mysq
本文向大家介绍Ubuntu配置Mysql主从数据库,包括了Ubuntu配置Mysql主从数据库的使用技巧和注意事项,需要的朋友参考一下 本次环境:虚拟机下 服务器:Ubuntu 14.04 LTS 数据库: 5.5.37 端口:3306 主IP:192.168.63.133 从IP:192.168.63.134 授权账号: user:suxh password:111111 好了交代完环境:我们直
本文向大家介绍MySQL数据库主从复制延时超长的解决方法,包括了MySQL数据库主从复制延时超长的解决方法的使用技巧和注意事项,需要的朋友参考一下 前言 MySQL主从复制的延时一直是业界困扰已久的问题。延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL。 UDB是UCloud推出的云数据库服务,上线已达六年,运营了数以万计的UDB MySQL实例。除了提供高可用、高性能
多数据库、主从库配置 本章会讲解一下关于sp框架的主从库链接配置和多数据库链接的方法。 一、主从库配置 新版sp框架,默认支持主从库配置,直接在protected/config.php文件内进行配置即可读写分离。 配置方法: 'mysql' => array( 'MYSQL_HOST' => 'localhost', 'MYSQL_PORT' => '3306', 'MYS
本文向大家介绍Mysql 5.7从节点配置多线程主从复制的方法详解,包括了Mysql 5.7从节点配置多线程主从复制的方法详解的使用技巧和注意事项,需要的朋友参考一下 前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有一个线程在工作。相当于还是以前的
主要内容:1 主从复制的原理,2 主从切换,3 双主互备,4 主备延迟,4.1 什么是主备延迟,4.3 主备切换策略,1.4. 并行复制详细介绍了MySQL主从复制的原理和基本流程,以及一些问题的处理方式。 1 主从复制的原理 主从复制可以很好的解决的单点故障,并且可以进行读写分离来减轻数据库的压力。很多情况下主服务器仅作为写入数据服务器,而构建多个从节点来进行数据读取。但主库也可以进行读操作。因此建议:关键业务读写都由主库承担,非关键业务读写分离。 下图就是MySQL主从同步的基本原理,节点A