mysql基于日志点的主从复制

                            **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 语句的使用。

  1. 对主,从库必须进行的配置
    主:
    # 该命令启动二进制日志,并且指定二进制日志位置与名称
    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服务,再启动主从复制链路,这次正常了。总共用时三天。
  2. 在主从上查看进程
    mysql>show processlist \G;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kavaj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值