MySQL5.6 主从复制(简单版)
admin
2023-06-08 11:01:23
0

几种常见的Replication拓扑结构:

1.单master----多slave

slave之间互不通信,只和master通信

适用于读压力比较大的应用场景,将读操作分布到不同的slave中,减小master压力


2.多master----单slave 

    mysql貌似暂不支持,个人认为通过slave多实例实现


3.主动模式的Master----Master

当前master是另一master的slave

问题:同时更新一个操作产生冲突


4.主动-被动模式的Master----Master

只能有一个可读


5.级联复制的Master----Slaves----Slaves

结构1中的replication导致slave连上master的线程过多,replication的压力过大

级联可以一定程度上缓解master的压力,但是需要设置log_slave_updates=1。

每级slave是下级slave的master,所有重做中继日志同样需要写入binlog中


下面安装的是最基本的单slave单master

第一步:准备工作

        操作系统:Centos7.1

        数据库:mysql-5.6.30

        主host:172.17.220.145

        从host:172.17.220.220


第二步:设置防火墙

        Centos7.1默认防火墙为firewalld,需要通过yum安装iptables-service

        分别在主从服务器中:

                vi /etc/sysconfig/iptables

                在“-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT”后增加

                -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

                systemctl start iptables.service 


第三步:修改主数据库的配置文件my.cnf 

        server-id=145(主服务器的ID值,建议为ip最后一段)

        log_bin = /opt/mysql/data1/mysql-bin.log(二进制日志)

        log_slave_updates = 0 (0表示slave将复制事件写进自己的二进制日志)

        binlog_format=MIXED  (二进制日志类型)


第四步:修改从数据库的配置文件my.cnf 

        server-id=224

        log_bin = /opt/mysql/data1/mysql-bin.log(如果该slave为其他slave的master,必须开启二进制)

        #relay_log=

        read_only=1 (防止从库修改数据,从库只读)

        log_slave_updates = 1


第五步:创建master用户

        登录主数据库

        mysql> GRANT REPLICATION SLAVE ON *.* TO 'mypri'@'172.17.220.145' IDENTIFIED BY ‘123456’;


第六步:重启主从数据库

        service mysql restart


第七步:假如主库存在数据

        5.1 先对主库锁表,不让数据再进行写入

               mysql> flush tables with read lock;

        5.2 主库 mysqldump -uroot -p --all-databases >all.sql(导出所有数据库)

        5.3 若从库不存在数据,则导入all.sql到从库

             mysql -uroot -p

            从库本身存在数据,先备份从库,再删除从库中的数据,仅保留mysql、information_schema、performance_schema

        5.4 主数据库 unlock table

        5.5 主数据库 show master status; 获取master_log_file与master_log_pos


第八步: 从服务器slave启动

        change master to master_host='172.17.220.145',

                master_user='mypri',

                master_password='123456',

                master_log_file='mysql-bin.000021',(show master status获取)

                master_log_pos=1212, (show master status获取)

                master_connect_retry=60;(超时重连)


        启动slave:start slave;

        show slave status\G  验证是否成功

        成功与否主要看:

                   Slave_IO_Running=Yes

                   Slave_SQL_Running=Yes

错误信息:

        1. slave have equal MySQL Server UUIDs

            这个问题的主要原因是本人进行了虚拟机复制,导致主从数据库的server_id或server_uuid一致

            查看server_id:show variables like 'server_id';

            查看server_uuid:show variables like 'server_uuid';

            server_id一致,修改my.cnf文件

            server_uuid一致

                    删除从库中的$data_path/data/auto.cnf

            然后重启从库

查看主库上的几个重要参数:

            show variables like '%autocommit%';  自动提交是否开启

            show variables like '%innodb_flush_method%'; innodb引擎的表刷新方式 O_DIRECT

            show variables like '%sync_binlog%'; 

                    sync_binlog=0:不主动刷新二进制日志文件的数据到磁盘上,由操作系统决定

                    sync_binlog=N:向二进制日志文件写入N条SQL或N个事务后,二进制日志文件的数据刷新到磁盘上;


相关内容

热门资讯

神二十三发射任务将创下多个“首... 神舟二十三号即将发射,现场各项准备工作如何?凤凰卫视特派记者孙伟健从酒泉卫星发射中心发回现场报道。
山西留神峪煤矿事故调查:写满安... 5月22日19时29分,山西沁源的暮色尚未完全降临,有着45年开矿历史的通洲集团留神峪煤矿,骤然迎来...
从狮子山下,奔赴星辰,东方之珠... 原标题:从狮子山下,奔赴星辰——香港热议载荷专家黎家盈逐梦太空 23日上午,神舟二十三号载人飞行任务...
选购激光熔覆设备:五个关键要点... 在工程建设、大型装备维护等领域,激光熔覆修复技术以其高精度、低热影响的特点,正成为关键零部件延寿再制...
NASA卫星发布其迄今最完整系... IT之家 5 月 24 日消息,美国国家航空航天局的系外行星探测卫星凌日系外行星巡天卫星(TESS)...
机器人成文博会顶流:AI+文化... 5月21日至25日,第二十二届中国(深圳)国际文化产业博览交易会(文博会)在深圳国际会展中心举行,这...
神舟二十三号瞄准北京时间今日2... 5月23日,神舟二十三号航天员朱杨柱(中)、张志远(右)、黎家盈在酒泉卫星发射中心问天阁与媒体记者集...
一文读懂:美伊协议谈得怎么样? 新华社北京5月24日电 美国总统特朗普23日称与伊朗已“基本谈成”一份包括开放霍尔木兹海峡在内的协议...
取用地下水的河南尉氏县,为何因... 极目新闻记者 詹钘连续呕吐腹痛两天后,河南尉氏县居民段梅(化名)终于缓了过来。5月22日早晨,她尝试...
一次补税超5亿,知名医院怎么了... 5月20日,爱尔眼科医院集团股份有限公司发布公告称,经自查,公司需补缴税款3.48亿元、滞纳金1.7...