• mysql之主从复制


    原理-->


    在数据库层面,复制语句或者行,因为在数据库层面,故只有主服务器生成,并放到二进制日志里面,才能复制给从服务器.
    原理-->
    mysql的主从复制基于异步,主要有三个进程执行,分别是主mysql上mysqldump进程,从mysqli/o进程和sql进程。
    执行过程:主mysql上mysqldump进程接收到从mysql的I/O进程发出的请求后,读取本地binlog,并将数据通过3006端口发送给从mysql,从mysql的I/O进程将数据存放到中继日志中,同时在master-info存入所获取的binlog日志的文件名和位置,便于下次告知主mysql我上次从哪个地方复制的,之后从mysql的sql进程检测到中继日志有内容加入后,在从mysql本地执行新加的语句,并将执行的语句的结果,存入数据库。
    目的-->

    数据分布,进行读写分离,通过一主多从,实现主负责写,从负责读.

    基 本步骤(主从)-->(若主节点已经运行一段时间,则首先要保证从节点内容和主节点一致,参考mysql之备份恢复)


    主服务器:
    创建具有复制权限的用户帐号-->
    mysql>grant replication slave,replication client on *.* to repluser@'172.16.%.%' identified by '123456';
    mysql>flush privileges;
    设置server-id-->防止循环复制
    #vim /etc/my.cnf
    server-id=100
    启用二进制日志-->修改日志为绝对路径,以及日志格式
    vim /etc/my.cnf     
    log-bin=/mydata/data/mysql-bin
    binlog_format=mixed
    全局锁表,防止数据库发生改变
    mysql>FLUSH TABLES WITH READ LOCK;
    查看主服务器锁表后此时的二进制名和日志位置,假设获取的内容是
    mysql>show master status;
    MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;
    复制所有的数据库数据到从服务器上(保留权限),二进制日志文件可不复制.
    解锁
    mysql>unlock tables;


    从服务器:
    启用中继日志-->(可选:关闭二进制日志)
    vim /etc/my.cnf
    #relay log
    relay-log=/mydata/data/relay-bin
    #Read only
    read-only=1
    #禁止从服务器自动启动
    skip-slave-start=1
    设置server-id-->
    #vim /etc/my.cnf
    server-id=200
    修改数据库权限为mysql.mysql
    #chown -R mysql.mysql data_dir
    启动复制线程-->设置连接属性,并启动(show slave statusG   查看从节点状态)
    mysql>change master to MASTER_HOST='192.168.1.1',MASTER_USER='repluser',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=107;
    mysql>start slave;
    主数据库如果重启,则从数据库需要重新定义新的链接属性.
    从服务器I/O线程始终是链接状态,而不是YES,最后超时
    连接属性设置错误.
    半同步模式(降低同步延迟问题)-->半同步模式需要插件支持,默认插件位置在/usr/local/mysql/lib/plugin
     
    主服务器 
    mysql -uroot
    #安装模块
    mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
    mysql>set global rpl_semi_sync_master_enabled=1;
    #等待从节点响应,若在timeout期间没有响应,则主节点降级为异步
    mysql>set global rpl_semi_sync_master_timeout=1000;
    同时也可以在配置文件中永久启用:
    #vim /etc/my.cnf
    rpl_semi_sync_master_enabled=1
    rpl_semi_sync_master_timeout=1000
    从服务器
    mysql>install plugin rpl_semi_sync_slave soname 'semisync_slave.so'
    mysql>set global rpl_semi_sync_slave_enabled=1;
    mysql>stop slave;
    mysql>start slave;
    从服务器半同步模式始终是off
    从服务器的半同步模式,只有在salve start状态下,才会启用.
    同时也可以在配置文件中永久启用:
    #vim /etc/my.cnf
    rpl_semi_sync_slave_enabled=1
    查看模块:mysql>show global status like '%semi%';




    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    开发工程师的职场人生路
    10 ASP.NET Performance and Scalability Secrets(转载推荐)
    手机号码归属地查询接口大全
    参数的秘密“纠结”的压缩比
    爱情本来并不复杂,来来去去不过三个字
    假如苹果、微软、谷歌造汽车 他们的区别是什么
    tomcat修改jsessionid在cookie中的名称
    virtualBox 中 linux 系统 相关配置
    htpasswd用法
    linux 防火墙
  • 原文地址:https://www.cnblogs.com/aaa103439/p/db0f9fd7-ec9f-4945-a35e-2437c2d90e88.html
Copyright © 2020-2023  润新知