ubuntu16内网下mysql主从

MySQL主从原理:

主从(Replication)可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave)
默认情况下属于异步复制,无需维持长连接。通过配置,可以复制所有的库或者几个库,甚至库中的一些表。是MySQL内建的,本身自带的。
简单的说就是master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制日志进行数据操作。
在这里插入图片描述

REPLICATION的作用

1、Fail Over 故障切换
2、Backup Server 备份服务,无法对SQL语句执行产生的故障恢复,有限的备份
3、High Performance高性能,可以多台slave,实现读写分离

步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);(从服务器主动抓取的
(3) slave重做中继日志中的事件,修改salve上的数据。
在这里插入图片描述
mysql主从复制中:
第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

REPLICATION常见方案

1、ONE MASTER AND MUTI SALVE 一主多备
在这里插入图片描述
一般用来做读写分离的,master写,其他slave读,这种架构最大问题I/O压力集中

2、M-S-S
使用一台slave作为中继,分担Master的压力,slave中继需要开启bin-log,并配置log-slave-updates
在这里插入图片描述
3、M-M 双主互备 (互为主从)
很多人误以为这样可以做到MySQL负载均衡,实际没什么好处,每个服务器需要做同样的同步更新,破坏了事物的隔离性和数据的一致性
在这里插入图片描述

此处:实战最基础的一主一从

首先保证两台机器都有相同数据库以及数据表:
两台机器分别为:
192.168.11.151 数据库密码xidian320 主机密码:123456 作为:master
192.168.12.17 作为:slave

登录master节点导出数据库:

mysqldump  -uroot -pxidian320 newcloud >newcloud.sql  #可以导出数据库

slave节点导入数据库:
登录数据库:mysql -uroot -p

create database newcloud default character set utf8;

导入数据库内表:

mysql -uroot -pxidian320 newcloud < newcloud.sql

登录主服务器master进行编辑:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

打开配置文件,在[mysqld]模块里注释掉bind-address,用来允许远程访问数据库。
并在主服务器的[mysqld]模块里添加以下代码.

server-id = 1 #server-id 服务器唯一标识
log_bin = master-bin   #log_bin 启动MySQL二进制日志
log_bin_index = master-bin.index
binlog_do_db = newcloud #binlog_do_db    #指定记录二进制日志的数据库
binlog_ignore_db = mysql #binlog_ignore_db   #指定不记录二进制日志的数据库

登录从服务器slave进行编辑:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在从服务器的[mysqld]模块里添加以下代码.

server-id = 2
replicate-do-db = newcloud
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index

下一步登录主服务器MySQL在MySQL命令行里创建从服务器用到的账户和权限

grant replication slave,reload,super on *.* to slave @192.168.12.17 identified by 'xidian320'

分别重启主从MySQL服务

service mysql restart

登录主服务器的MySQL数据库,查看主数据库状态
在这里插入图片描述
记住查询出来的file_set和Position字段的值.

在从服务器尝试连接主服务器的mysql
mysql -uslave -pxidian320 -h 192.168.11.151
如果连接失败:先尝试ssh免密登陆到master。

在从服务器的数据库命令行里输入下列代码,用来登录Slave从服务器,连接Master主服务器

change master to master_host='192.168.11.151',master_user='slave',master_password='xidian320',master_log_file='master-bin.000005',master_log_pos=465;

master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_log_file对应show master status显示的File列:master-bin.000005,master_log_pos对应Position列:465,否则有可能出现同步失败。
在登录slave服务器MySQL的状态下启动数据同步

start slave;

登录slave服务器MySQL的状态下查看同步状态

show slave status\G;

在这里插入图片描述
上面两个都为Yes的时候为同步成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值