视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql数据库主从复制的配置方法
2020-11-09 20:46:19 责编:小采
文档

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 就无法恢复

下载本文
显示全文
专题