首页 / 数据库 / MySQL / MySQL基于日志点的复制
日志复制分为基于日志点的复制和基于GTID的复制。本文就讲一下基于日志点的复制过程。MySQL 基于GTID的复制 见 http://www.linuxidc.com/Linux/2016-09/135577.htm1.在主DB服务器上建立复制帐号。create user ‘repl’@ip 段 identified by ‘pwd’;create user repl@"192.168.1.%" identified by "repl";授权grant replication slave on *.* to ‘repl’@ip 段;grant replication slave on *.* to repl@"192.168.1.%";2.配置主数据库服务器。bin_log=mysql-bin启用二进制日志,并指定日志名字。server_id =100需要指定serverid,在复制集群中必须唯一。3.从服务器配置。bin_log=mysql-binserver_id=101# 中继日志relay_log=mysql-relay-bin# 可选参数,是否把中继日志记录到当前的二进制日志中,#如果需要把当前从服务器,作为其他从服务器的复制源,则需要配置。log_slave_update=on# 安全配置参数,防止从写入read_only=on4.初始化从服务器的数据mysqldump ,此方法需要加锁。参数:–single-transaction :保证数据事务一致性,需要对数据库加锁,会造成阻塞。-master-data=2 : 记录主库二进制文件的偏移量信息。xtrabackup –slave-info 热备工具。使用innodb存储引擎是不会阻塞。mysqldump -uroot -p -P3308 --single-transaction --master-data --triggers --routines --all-databases >> all.sql从服务器导入数据mysql -uroot -p -P3309 <all.sql5.启动复制链路需要在从服务器上操作。change master to MASTER_HOST=’master_host_ip’,MASTER_USER=’repl’,MASTER_PASSWORD=’PWD’,MASTER_LOG_FILE=’MYSQL_LOG_FILE_NAME’,MASTER_LOG_POS=4;change master to master_host="localhost",
-> master_user="repl",
-> master_password="repl",
-> MASTER_LOG_FILE="mysql-bin.000005", MASTER_LOG_POS=2162;这段可以在导出的文件中查找。show slave status G查看复制链路状态。启动复制链路start slave;使用show processlist 查看服务线程。一个IO线程,一个SQL线程。主服务器查看启动了一个dump线程。6.验证复制效果:在节点A执行。1.创建一个表。2.插入两条记录。在从服务器上查询。发现数据同步了。优点:1.是mysql最早支持的复制技术,BUG相对较少。2.对SQL查询没有任何限制。3.故障处理比较容易。缺点:故障转移时重新获取新主的日志点信息比较困难。本文永久更新链接地址