您的位置:首页 > 数据库 > MySQL

mysql基于日志点的主从复制

2018-02-05 14:32 369 查看
**mysql 基于日志点的复制**


优点:是MySQl最早支持的复制技术,bug相对较少,对SQL查询没有任何限制,故障处理比较容易(比如可以很容易的使从库忽略主库的一些事件,是复制链路继续)

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

原理步骤:

1、主库将数据的更新事件记录到二进制日志。

2、从库将主库上的日志复制到自己的中继日志中。

3、从库读取中继日志中的事件,将其重放到从库中。

配置步骤:

1. 创建复制账号(用户repl 权限 replication):建立一个只有使用使用内网 IP 才能登陆的账号 - 主从都要配置

create user ‘reple’@’172.20.249.%’ identified by ‘123456’;

grant replication slave, replication client on . to ‘reple’@’172.20.249.%’; ##实现只用了 repalication slave 就可以进行操作了,show status 也可以用。

该命令创建 repl账号,同时为授予 REPLICATION SLAVE 与 REPLICATION CLIENT 权限。注意,实际上只需要 REPLICATION SLAVE 权限就可以进行复制了。 而 REPLICATION CLIENT 权限主要是允许该账号对复制进行监控和管理,比如 SHOW MASTER STATUS、SHOW SLAVE STATUS、SHOW BINARY LOGS 语句的使用。

对主,从库必须进行的配置

主:

# 该命令启动二进制日志,并且指定二进制日志位置与名称

log_bin = mysql-bin

# 这里必须为主库设置一个唯一的 ID

server_id = 1

备:

log_bin = mysql-bin

# 确保唯一性

server_id = 2

# 指定中继日志的位置与名称

relay_log = /var/lib/mysql/mysql-relay-bin

# 命令从库将其重放的事件记录到自己的二进制日志中

log_slave_updates = 1

# 阻止没有特权权限的线程修改数据

read_only = 1

3、初始化数据(先备份再在从库上恢复)

mysqldump –master-data = 2 -single-transaction –triggers –routines – all-databases >> all.sql ###只能冷备,如果使用了非innodb还用使用 local-tables参数对表加锁 maste-data:记录二进制日志偏移量等信息

xtrabackup –slave-info ##可在线热备,同样对非innodb要加锁。

4、开始复制

mysql>CHANGE MASTER TO MASTER_HOST =’172.20.249.66’,

master_user=’repl’,

master_password=’123456’,

master_log_file=’xxx’,master_log_pos=xxx; ###这两个参数值可以从备份文件 all.sal中查看找到

5. 启动链路

mysql> start slave;

6. 查看从库状态

mysql> show slave status;

实际这里发现Slave_IO_Running 为NO也就是说IO进程没有起来,报:ERROR] Slave I/O for channel ”: The slave I/O thread stops because a fatal。。。。

,查了两天没有解决此问题,

后来看了主库上的error.log文件获得信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘SET NAMES utf8mb4‘’ at line 1说是编码有问题,然后查看my.cnf配置发现 init_connect=‘SET NAMES utf8mb4‘ 参数,这里的分号写成了中文格式的分号,这个是从网上拷的,。。。。所以网上的东西很不靠谱。修改下,重启mysql服务,再启动主从复制链路,这次正常了。总共用时三天。

在主从上查看进程

mysql>show processlist \G;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql mysql主从复制