阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL主从复制实战

217次阅读
没有评论

共计 1958 个字符,预计需要花费 5 分钟才能阅读完成。

    随着访问量的不断增加,单台 MySQL 数据库服务器压力不断增加,需要对 MYSQL 进行优化和架构改造,MYQSL 优化如果不能明显改善压力情况,可以使用高可用、主从复制、读写分离来、拆分库、拆分表来进行优化。

      MySQL 主从复制集群在中小企业、大型企业中被广泛使用,MySQL 主从复制的目的是实现数据库冗余备份,将 Master 数据库数据定时同步至 Slave 库中,一旦 Master 数据库宕机,可以将 WEB 应用数据库配置快速切换至 Slave 数据库,确保 WEB 应用较高的可用率,如图 11-12 所示,为 MySQL 主从复制结构图:

MySQL 主从复制实战

    Mysql 主从复制集群至少需要 2 台数据库服务器,其中一台为 Master 库,另外一台为 Slave 库,MYSQL 主从数据同步是一个异步复制的过程,要实现复制首先需要在 master 上开启 bin-log 日志功能,bin-log 日志用于记录在 Master 库中执行的增、删、修改、更新操作的 sql 语句,整个过程需要开启 3 个线程,分别是 Master 开启 IO 线程,Slave 开启 IO 线程和 SQL 线程,具体主从同步原理详解如下:

1)Slave 上执行 slave start,Slave IO 线程会通过在 Master 创建的授权用户连接上至 Master,并请求 master 从指定的文件和位置之后发送 bin-log 日志内容;

2)Master 接收到来自 slave IO 线程的请求后,master IO 线程根据 slave 发送的指定 bin-log 日志 position 点之后的内容,然后返回给 slave 的 IO 线程。

3)返回的信息中除了 bin-log 日志内容外,还有 master 最新的 binlog 文件名以及在 binlog 中的下一个指定更新 position 点;

4)Slave IO 线程接收到信息后,将接收到的日志内容依次添加到 Slave 端的 relay-log 文件的最末端,并将读取到的 Master 端的 bin-log 的文件名和 position 点记录到 master.info 文件中,以便在下一次读取的时候能告知 master 从响应的 bin-log 文件名及最后一个 position 点开始发起请求;

5)Slave Sql 线程检测到 relay-log 中内容有更新,会立刻解析 relay-log 的内容成在 Master 真实执行时候的那些可执行的 SQL 语句,将解析的 SQL 语句并在 Slave 里执行,执行成功后,Master 库与 Slave 库保持数据一致。

1、系统环境准备

    Master:10.6.97.133

    Slave:10.6.97.134

2、Master 安装及配置

      Master 端使用源码安装 MySQL-5- 5 版本软件后,在 /etc/my.cnf 配置文件 [mysqld] 段中加入如下代码,然后重启 MYSQL 服务即可。如果在安装时 cp my-large.cnf  /etc/my.cnf,则无需添加如下代码:

server-id = 1
log-bin = mysql-bin

Master 数据库服务器命令行中 创建 tongbu 用户及密码并设置权限,执行如下命令,查看 bin-log 文件及 position 点:

grant  replication  slave  on *.* to  ‘tongbu’@’%’  identified by  ‘123456’;
show  master  status;

MySQL 主从复制实战

3、Slave 安装及配置

Slave 端使用源码安装 MySQL-5- 5 版本软件后,在 /etc/my.cnf 配置文件 [mysqld] 段中加入如下代码,然后重启 MYSQL 服务即可。如果在安装时 cp my-large.cnf  /etc/my.cnf,则需修改 server-id,MASTER 与 Slave 端 server-id 不能一样,Slave 端也无需开启 bin-log 功能:

server-id = 2

Slave 指定 Master IP、用户名、密码、bin-log 文件名(mysql-bin.000028)及 position(257):

change master to master_host=’10.6.191.183′,master_user=’tongbu’,master_password=’123456′,master_log_file=’mysql-bin.000003′,master_log_pos=326;

在 slave 启动 slave start,并执行 show slave status\G 查看 Mysql 主从状态:

slave  start;
mysql5.7 版本为 start slave
show  slave  status\G;

查看 Slave 端 IO 线程、SQL 线程状态均为 YES,代表 Slave 已正常连接 Master 实现同步:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1958字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中