你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL基于日志点的复制

[日期:2016-09-28] 来源:Linux社区  作者:yg_zhang [字体: ]

日志复制分为基于日志点的复制和基于GTID的复制。本文就讲一下基于日志点的复制过程。

MySQL 基于GTID的复制  见 http://www.linuxidc.com/Linux/2016-09/135577.htm

1.在主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-bin

server_id=101

# 中继日志

relay_log=mysql-relay-bin

# 可选参数,是否把中继日志记录到当前的二进制日志中,

#如果需要把当前从服务器,作为其他从服务器的复制源,则需要配置。

log_slave_update=on

# 安全配置参数,防止从写入

read_only=on

4.初始化从服务器的数据

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.sql

5.启动复制链路

需要在从服务器上操作。

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.故障处理比较容易。

缺点:

故障转移时重新获取新主的日志点信息比较困难。

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-09/135576.htm

linux
相关资讯       MySQL日志复制 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款