重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
几种常见的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个事务后,二进制日志文件的数据刷新到磁盘上; 另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:MySQL5.6主从复制(简单版)-创新互联
新闻来源:http://cqcxhl.com/article/dddcpg.html